六月中旬是什么时候| 大姨妈是什么| 减肥期间吃什么| 光谱是什么| 2050年是什么年| 葬花是什么意思| 蔓越莓有什么功效和作用| 三羊念什么字| 为什么说金克木生财| 发烧后头疼是什么原因| 我想长胖点有什么办法| 查胆囊挂什么科| 什么血型的人最聪明| 生不逢时什么意思| 铁蛋白偏高是什么意思| 胃胀不舒服吃什么药| 男孩子送什么礼物| 日照是什么海| 乳腺癌多发于什么年龄| u盘什么牌子好| 情债是什么意思| 狼图腾是什么意思| 灵魂伴侣是什么意思| 口臭去医院挂什么科室看病| 明年属相是什么生肖| 见多识广是什么生肖| 秦始皇的母亲叫什么名字| 一什么田野| 八七年属兔的是什么命| 梦到自己拉大便是什么预兆| 长春有什么特产| 子宫内膜脱落是什么原因| 1938年中国发生了什么| 铭五行属什么| 警察是什么生肖| 包茎是什么| 川字加一横是什么字| 火气太旺是什么原因| 左耳疼痛什么原因引起| 黑乌龙茶属于什么茶| 没有痔疮大便出血是什么原因| 中暑喝什么水| 什么食物补锌效果最好| 女生胸部长什么样| 小郡肝是什么部位| 吃什么可以瘦肚子| 脚气什么样| 雌性激素是什么| 心律不齐房颤吃什么药| 传教士是什么| 吃完避孕药不能吃什么东西| 吊瓜是什么瓜| 食伤泄秀是什么意思| 央行放水是什么意思| 谷草转氨酶偏低是什么意思| 甲亢适合吃什么食物| 为什么要努力读书| 鳞状上皮细胞高是什么原因| 梦见炒菜是什么意思| 为什么会得偏头痛| mpa是什么意思呀| 左眼跳是什么意思| 正常大便是什么颜色| 半夜胎动频繁是什么原因| 荆芥的别名叫什么| 新生儿便秘怎么办什么方法最有效| 蓝色小药丸是什么| 子宫内膜厚什么原因引起的| 明朝前面是什么朝代| 夜尿次数多是什么原因| 背信弃义是什么意思| 阴虱长什么样子图片| 夜间胃痛是什么原因| 血清载脂蛋白b偏高是什么意思| 梦见和死去的亲人说话是什么意思| 六味地黄丸什么功效| 明心见性什么意思| 胸推是什么| 割包皮有什么好处| 宫颈短是什么意思| 丁什么丁什么成语| 垂爱是什么意思| 月经稀发是什么意思| 白羊跟什么星座最配| 爆菊什么意思| 为什么减肥不建议喝粥| 狗狗的鼻子为什么是湿的| 慢性胃炎吃什么药| 为什么做完爱下面会疼| 梦见白萝卜是什么意思| 三月20号是什么星座| 刘备代表什么生肖| 绮罗是什么意思| 13楼五行属什么| 莫代尔是什么面料| 2月29号是什么星座| 苹果对身体有什么好处| 鼻子冒热气是什么原因| 12月6日什么星座| 开心果树长什么样| 为什么睡觉出虚汗| 内分泌失调是什么症状| 天津五行属什么| 胳膊疼是什么原因| 富豪是什么意思| kpl是什么意思| 画蛇添足的故事告诉我们什么道理| 蜂蜜什么时候喝比较好| 肾结石吃什么食物好| 胃疼可以吃什么水果| 壁细胞主要分泌什么| 仓鼠用什么洗澡| 胎监是检查什么的| 17592a是什么尺码男装| 镜检白细胞是什么意思| 颈管细胞有是什么意思| k9什么意思| 舒张压是什么| 眼睛散光和近视有什么区别| 胃病挂什么科| 宫后积液是什么意思| 泡芙是什么| sle是什么病的缩写| 白眼球发黄是什么原因| 属猪五行属什么| 植树节是什么季节| 什么是喜欢什么是爱| 寒湿重吃什么中成药| 女同是什么| 胃胀吃点什么药| 心绞痛吃什么药最好| aldo是什么牌子| 查脂肪肝挂什么科室| 胸闷气短吃什么药| 为什么可乐能溶解鱼刺| 什么叫胆汁反流性胃炎| 梦到鹦鹉预示着什么| 瘊子是什么| 2月7号什么星座| 什么叫扁平疣长什么样| 农历9月17日是什么星座| 无的放矢是什么意思| 什么猫| 桦树茸的功效主治什么病| bbc是什么意思| 囟门什么时候闭合| 冰丝皱是什么面料| 三文鱼长什么样| 竹叶青是什么茶| c1能开什么车| 继发性是什么意思| 年柱将星是什么意思| 玉兰油适合什么年龄| 减脂吃什么| 小孩晚上睡觉发梦癫什么原因| aupres是什么牌子化妆品| 烧心吃什么马上能缓解| eb病毒阳性是什么意思| 中国第一个不平等条约是什么| 隐血是什么意思| 果糖胺是什么意思| 孕妇多吃什么食物好| 1956年是什么年| 外阴痒是什么原因| 梦见照相是什么意思| 贝贝什么意思| 电子邮件地址是什么意思| 我一言难尽忍不住伤心是什么歌| 脑部ct挂什么科| 女大十八变是什么意思| 什么时候初伏第一天| 痤疮用什么药膏最好| 忍冬是什么意思| gr什么意思| 市政协秘书长是什么级别| 无痛人流后需要注意什么| 离子检测是检查什么| 肾阴虚吃什么药最好| 开水烫伤用什么药膏好得快| 心率低是什么原因| 三宫六院是什么意思| 水潴留是什么意思| 黄色裤子配什么上衣| 糟卤可以做什么菜| 牙齿出血是什么病征兆| 农字五行属什么| 血管瘤是什么东西| OK镜适合什么年龄| 美国人的祖先是什么人| 胰腺在人体起什么作用| 什么是红外线| 肺结节钙化是什么意思| 8月26号是什么星座| 烂嘴是什么原因| 蹒跚什么意思| 表象是什么意思| 感冒了吃什么饭菜合适| 皮肤偏黄适合穿什么颜色的衣服| 什么样的夕阳| 中暑了吃什么药| 鹭鸶是什么动物| 什么东西去火| 青睐是什么意思| 便秘吃什么药效果最好| 丙肝是什么病| 乙肝e抗体高是什么意思| 老被蚊子咬是什么原因| 膝盖骨质增生用什么药效果好| 刮痧有什么作用| mario是什么意思| 早教是做什么的| 乙丑是什么生肖| 女人更年期吃什么药调理最好| 小孩流鼻血吃什么好| 什么的妈妈| 什么是oa| 1970属什么| 一什么火焰| 角质是什么| 甲状腺结节是什么意思| 极光是什么| 打耳洞医院挂什么科| 中秋节吃什么| 胃功能四项检查是什么| 海带炖什么好吃| 什么样的人能镇住凶宅| 送对象什么礼物好| 逍遥丸主治什么病| 什么人不能喝大麦茶| 早泄吃什么补| 喝什么牌子的水最健康| 女性肝囊肿要注意什么| 鸡男配什么属相最好| 附件炎吃什么药效果好| 梦见洗车是什么意思| 尿酸高吃什么药降尿酸效果好| 压床娃娃有什么讲究吗| 龟代表什么生肖| 是什么为什么怎么办| 天地不仁以万物为刍狗是什么意思| 夏至吃什么食物| 鼻孔流血是什么原因| 属鸡什么命| 相中是什么意思| 庚日是什么意思| 1980年五行属什么| 头皮屑挂什么科| 肛裂挂号挂什么科| 金牛座和什么座最配| 早上喝一杯温开水有什么好处| 半夜醒是什么原因| nac是什么意思| 鱼胶是什么东西| 羟基丁酸在淘宝叫什么| 龋齿和蛀牙有什么区别| 吃什么药能快速降血压| 路征和景甜什么关系| 麦克白夫人什么意思| 月经量突然减少是什么原因| 80是什么意思| 阴道炎应该吃什么药| 夹腿综合症是什么| epc什么意思| 耳石症看什么科| 百度
[PIC?/AVR?/dsPIC?产品]

大师用车|融入安卓 未来GPS导航仪会是这个样

[复制链接]
17295|4
手机看帖
扫描二维码
随时随地手机跟帖
Puchou|  楼主 | 2025-6-24 12:01 | 显示全部楼层 |阅读模式

PIC单片机485通信发送
#include <pic.h>

#define uchar unsigned char
#define uint unsigned int
__CONFIG(WDTDIS & LVPDIS & HS & PWRTDIS & BORDIS);//设置配置位
// WDTDIS : disable watchdog timer
// LVPDIS : low voltage programming disabled
// HS : high speed crystal/resonator
// PWRTDIS : disable power up timer
// BORDIS : disable brown out reset
#define RE RC3   //接收允许控制位
#define DE RC2   //发送允许控制位
//----------------定义全局变量
const uchar disp[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳数码管段码表
uchar rece_data;
uint counter ;
uchar sec;
/**************************函数声明******************************************/
void USART_Init(void);
void DelayUS(uchar delay);
void DelayMS(uint delay);
void Display(uchar chosebit,uchar data);
void init();
//-----------------------------------------------------------------
void DelayUS(uchar delay)
{
while(--delay);
}
//-------------------------
void DelayMS(uint delay)
{
uint i;
for(;delay>0;delay--)
   for(i=0;i<453;i++)
     ;
}
//--------------------------------
void USART_Init(void)
{
    SPBRG = 77;    //高速 波特率9600 12MHz SPBRG = 0x4D
// SPBRG = 129; //高速 波特率9600 20MHz
    TXSTA = 0x04;
// TXSTA : CSRC TX9 TXEN SYNC -- BRGH TRMT TX9D
//          0    0   0     0       1    0    0
RCSTA = 0x80;
// RCSTA: SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
//           1   0    0    0    0     0    0    0
    RCIE = 1;   //开接收中断
    TXEN = 1;
    CREN = 1;   //接收使能
    TRISC6 = 1; //设置为输入状态
    TRISC7 = 1;
//   TXIE = 1;   //开发送中断
    TRISC3 = 0; //设置为输出状态
    TRISC2 = 0;
    RE = 0;   
    DE = 0;  
// PEIE = 1;   //开外设中断
// GIE = 1;   //开总中断
}
//-------------------------------------------
void init()
{

TRISD = 0x00; //RD口为输出模式;
PORTD = 0xFF;   //灯全灭

//OPTION寄存器 : RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
// 前两位定时器0未用,T0CS 为定时器工作方式选择位,1为计数方式从T0CK1取脉冲,
// 0 为定时方式,选择内部时钟; T0SE 为计数方式时边沿触发方式选择位;PSA为分频器
//分频选择位;0:分频器分配给T0 ,1:分配给看门狗WDT;PS2 PS1 PS0 为分频比选择位;
// OPTION = 0x08; //定时器0 为定时方式,分频器分频给看门狗,而不分配给定时器0,
OPTION = 0x01;//定时器0为定时方式,公频器分频给定时器0;分频为1:4
TMR0 = 106; //定时器赋初值,定时200us   12M且分频比为1:4
INTCON = 0xE0; //采用中断方式;开总中断及定时器0的中断,同时清T0IF;
//INTCON寄存器: GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
// GIE 总中断 ;1 开全局总中断,0 为关闭; PEIE 外围中断位; 1 为允许; T0IE: T0溢出中断
//允许位;1为允许溢出中断。0 为禁止;INTE : 外部中断允许位; 1 为上升沿触发中断,0为下降沿触发中断;
// RBIE :RB7 --RB4 电平变化中断允许位;1 为允许PORTB电平变化中断;0为禁止;
// T0IF :T0溢出中断标志位; INTF :外部中断标志位;RBIF: RB7--RB4 电平发生变化标志位;
}  
//------------------------------------------
void interrupt Ser(void)
{
if(T0IF)
   {
     T0IF = 0;
     TMR0 = 106;
     counter ++;
     if(counter ==5000 )
      {
       counter = 0;
       sec ++;
       if(sec>99)
          sec = 0;
       RE = 1;    //SN75176关闭接收
       DE = 1;    //SN75176 开启发送
       TXREG = sec;
       while(!TRMT);
       RE = 0;    //SN75176开启接收
       DE = 0;    // SN75176关闭发送
      }
    }
   if(RCIF == 1)      //有数据接收
rece_data = RCREG;     //读取数据

}
//---------------------------------------
//-------------------------------------
void Display(uchar chosebit,uchar data)
{
    ADCON1 = 0x8E; //设置PORTA0为模拟输入,其他为IO口
    TRISA &= 0xE1; //设置PORTA1~PORTA4为输出模式
    TRISD = 0x00; //数据线配置为输出
    PORTA = 0xFF;
PORTA &= ~(0x02 << chosebit);
PORTD = data;   //送字型
DelayUS(50);   //延时
PORTD = 0xFF;   //关显示
}
//==============================================================
void main(void)
{

USART_Init();
init();
while(1)
{
        Display(0,disp[rece_data/10]);
   Display(1,disp[rece_data%10]);
   Display(2,disp[sec/10]);
   Display(3,disp[sec%10]);
}
}


PIC单片机485通信接收

#include <pic.h>
#include <math.h>
#include "stdio.h"
#define uchar unsigned char
#define uint unsigned int
__CONFIG(WDTDIS & HS & PWRTDIS & BORDIS);//设置配置位
// WDTDIS : disable watchdog timer
// LVPDIS : low voltage programming disabled
// HS : high speed crystal/resonator
// PWRTDIS : disable power up timer
// BORDIS : disable brown out reset
#define PORTAIT(adr,bit) ((unsigned)(&adr)*8+(bit)) //绝对位操作指令;
static bit DI @(PORTAIT(PORTB,0);
static bit CK @(PORTAIT(PORTB,1);
static bit LA @(PORTAIT(PORTB,2);
static bit OE @(PORTAIT(PORTB,3);
#define RE RC2   //接收允许控制位
#define DE RC3   //发送允许控制位
uchar redata;
//---------------------------------------------------
void USART_Init(void);
void SEND_Byte(uchar dat);
void SEND_DM114_DA(uchar DAT);
void delay50us(uchar z);
//-------------------------------------------------
void delay50us(uchar z)
{
   uchar i,j;
   for(j=0;j<z;j++)
    for(i=0;i<6;i++)
      ;
}
//--------------------------------
void SEND_Byte(uchar dat)
{
if(dat ==0)
//    DI = 0;
   RB0 = 0;
else
   DI = 1;
// RB0 = 1;
}
void SEND_DM114_DA(uchar DAT)
{
uchar i;
OE = 1;
// RB3 = 1;
LA = 0;
// RB2 = 0;
for(i=0;i<8;i++)
   {
    SEND_Byte(DAT&0x80);
    DAT << = 1;
    CK = 0;
    CK = 1;
// RB1 = 0;
// RB1 = 1;
   }
   LA = 1;
   OE = 0;
// RB2 = 1;
//   RB3 = 0;
}
//---------------------------------------------------------
//----------------------------------------------------------
void USART_Init(void)
{
    SPBRG = 77;    //高速 波特率9600 12MHz SPBRG = 0x4D
// SPBRG = 129; //高速 波特率9600 20MHz
    TXSTA = 0x04;
// TXSTA : CSRC TX9 TXEN SYNC -- BRGH TRMT TX9D
//          0    0   0     0       1    0    0
    RCSTA = 0x80;
// RCSTA: SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
//           1   0    0    0    0     0    0    0
    RCIE = 1;   //开接收中断
    TXEN = 1;
    CREN = 1;   //接收使能
    TRISC6 = 1; //设置为输入状态
    TRISC7 = 1;
//   TXIE = 1;   //开发送中断
    TRISC3 = 0; //设置为输出状态
    TRISC2 = 0;
    RE = 0;    //SN75176开启接收
    DE = 0;    // SN75176关闭发送
PEIE = 1;   //开外设中断
GIE = 1;   //开总中断
    TRISB = 0x00;   //B口为输出
}
//-----------------------------------------------
void interrupt com(void)
{
if(RCIE&&RCIF)
    {
redata=RCREG;
    RE = 1;    //SN75176关闭接收
    DE = 1;    // SN75176开启发送
    TXREG=redata;
    while(!TRMT);
    RE = 0;    //SN75176开启接收
    DE = 0;    //SN75176关闭发送
    SEND_DM114_DA(redata);  
    }
}
//------------------------------------------------
void main(void)
{
uchar i,j;
USART_Init();
while(1)
   {
//    for(i=0;i<100;i++)
//     delay50us(60);
//     j++;
//     if(j>250)
//        j=0;
//    SEND_DM114_DA(j);        
    }
}


串行口RS4485通讯协议概述百度   

本系列变频器向用户提供工业控制中通用的RS485通讯接口。通讯协议采用MODBUS标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采用相同通讯协议的上位机(如PLC控制器、PC机)通讯,实现对变频器的集中监控,另外用户也可以使用一台变频器作为主机,通过RS485接口连接数台本公司的变频器作为从机。以实现变频器的多机联动。通过该通讯口也可以接远控键盘。实现用户对变频器的远程操作。

本变频器的MODBUS通讯协议支持两种传送方式:RTU方式和ASCII方式,用户可以根据情况选择其中的一种方式通讯。下文是该变频器通讯协议的详细说明。

通讯协议说明通讯网组方式

(1)变频器作为从机组网方式

406016859f61f959bb.png

(2)多机联动组网方式


通讯协议方式

该变频器在RS485网络中既可以作为主机使用,也可以作为从机使用,作为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC机或PLC可以作为主机控制变频器工作。具体通讯方式如下:

  • 变频器为从机,主从式点对点通信。主机使用广播地址发送命令时,      从机不应答。
    • 变频器作为主机,使用广播地址发送命令到从机,从机不应答。
    • 用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。

(4) 从机在最近一次对主机轮询的应答帧中上报当前故障信息。

通讯接口方式

通讯为RS485接口,异步串行,半双工传输。默认通讯协议方式采用ASCII方式。

默认数据格式为:1位起始位,7位数据位,2位停止位。

默认速率为9600bps,通讯参数设置参见P3.09~P3.12功能码


ASCII通讯方式字符结构

10位字符框

101636859f615dcb14.png

11位字符框

267836859f60f484f5.png

通讯资料结构

579246859f60a2267f.png

26416859f6040d07c.png


通讯地址:

00H:所有变频器广播(broadcast)

01H:对01地址变频器通讯。

0FH:对15地址变频器通讯。

10H:对16地址变频器通讯。以此类推……….,最大可到254(FEH)。

功能码(Function)与资料内容(DATA):

03H:读出寄存器内容。

06H:写入一笔资料到寄存器。

08H:回路侦测。

功能码03H:读出一个寄存器内容:

例如:读出寄存器地址2104H内容(输出电流):

456646859f5fcc22db.png

473826859f5f7a8f00.png

功能码06H:写入一笔资料到寄存器。

例如:对变频器地址01H,写P0.02=50.00HZ功能码。

校验码

ASCII模式:双字节ASCII码。

计算方法:对于消息发送端,LRC的计算方法是将要发送消息中“从机地址”到“运行数据”没有转换成ASCII码的全部字节连续累加,结果丢弃进位,得到的8位字节按位取反,后再加1(转换为补码),最后转换成ASCII码,放入校验区,高字节在前,低字节在后。对于消息接收端,采取同样的LRC方法计算接收到消息的校验和,与实际接收到的校验和进行比较,如果相等,则接收消息正确。如果不相等,则接收消息错误。如果校验错误,则丢弃该消息帧,并不作任何回应,继续接收下一帧数据。

RTU模式:双字节16进制数。

CRC 域是两个字节,包含一16 位的二进制值。它由发送端计算后加入到消息中;添加时先是低字节,然后是高字节,故CRC 的高位字节是发送消息的最后一个字节。接收设备重新计算收到消息的CRC, 并与接收到的CRC 域中的值比较,如果两值不同则接收消息有错误,丢弃该消息帧,并不作任何回应,继续接收下一帧数据。CRC校验计算方法具体参考MODBUS协议说明。

通讯协议参数定义

744106859f5efa57ea.png

797536859f5e9f2bfd.png

138126859f5e33248c.png

RS485协议简介

由于RS-232的种种缺点,新的串行通讯接口标准RS-449被制定出来,与之相对应的是RS-485的电气标准。RS-485是美国电气工业联合会(EIA)制定的利用平衡双绞线作传输线的多点通讯标准。它采用差分信号进行传输;最大传输距离可以达到1.2 km;最大可连接32个驱动器和收发器;接收器最小灵敏度可达±200 mV;最大传输速率可达2.5 Mb/s。由此可见,RS-485协议正是针对远距离、高灵敏度、多点通讯制定的标准。

用PC机实现与8031单片机的多点通讯

用8031单片机实现与PC机之间的通讯时,必须使用电平转换接口芯片,因为单片机输出的是TTL电平,必须经过电平转换才能和PC机的一致。本文中采用的是RS-485协议,所以单片机需要采用RS-485接口;而在PC机侧使用的是RS-232与RS-485的电平转换接口。在本文中采用的是武汉新特电子公司的电平转换接口,该接口使用简便、无需外加电源、数据传输速率最高可达10 Mb/s,而且不用任何软件初始化和修改。另外实现多点通讯还需要了解器件的驱动能力,当器件的驱动能力足够大时,我们就可以根据需要加入所需要的节点。

      本文中所举的例子就是利用一台PC控制64块单片机的工作,采用多点通讯形式。通过发送控制字和工作方式字给相应的单片机,使其进行相应的操作。单片机在接收到数据后,进行数据的采集工作,等到PC机再发指令,将采集到的数据反馈给PC机,PC机对数据进行分析和计算。

PC机的程序可以采用Windows下任何一种面向对象的高级语言来编写,它比在DOS下的利用串口中断的方式进行更加简便,应用程序将控制权交向串口的驱动程序,接收和发送的中断完全由串口驱动程序来控制,减轻了编写过程中的很多麻烦。本程序中选用的是Delphi的串口通讯控件Spcomm来实现。参数的设置可以自动完成。单片机采用中断工作方式,用汇编语言编写,通讯波特率为1 2 kb/s,由于要和PC机进行通讯,选用11 0592 MHz的晶振,保证和PC机的波特率完全一致,避免由于波特率不同引起的收发错误。为了配合多机工作方式,选用工作方式3。单片机的通讯流程图如图3所示。

下面给出用Delphi编制的通讯程序和单片机的接收和发送程序。

356526859f5d917674.png

378126859f5d328db0.png

串行通讯可以分成两种类型:同步通讯、异步通讯

异步通讯的特点以及信息帧格式:

以起止式异步协议为例子,下面显示的是起止式一帧数据的格式:

起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值),字符本身由5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。
  从图中可看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
  异步通信可以采用正逻辑或负逻辑,正负逻辑的表示如下表所示:

252296859f5c985d9f.png

异步通信的信息格式如下的表所示

899216859f5c19dc6c.png

同步通信方式的特点:

采用同步通信,将许多字符组成一个信息组,这样,字符可以一个接一个的传输 ,

但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符。
同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码。在整个系统中,由一个统一的时钟控制发送端的发送和空字符用同一个代码。接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。


zjsx8192| | 2025-7-9 09:10 | 显示全部楼层
厉害,这么多门道
cooldog123pp| | 2025-7-24 17:16 | 显示全部楼层
感觉是不是老古董了啊,PIC单片机现在用的真的很好了吧,历史遗留项目吧
xixi2017| | 2025-7-26 11:53 | 显示全部楼层
一直没搞懂485通信是咋回事,还需要外部的专用芯片吗
GlenX| | 2025-7-29 17:06 | 显示全部楼层
楼上提到485芯片,确实485一般需要硬件的芯片提供物理层的支持,
但也有一些CPU可以直接仿真485的硬件做通讯,就是对信号要求较高,不适合工业或有距离的传输。
20年前用过两个项目PIC,感觉抗干扰问题比较多,所以再没用过。
现在一直在用M3系列的,感觉稳定性好些。
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

205

帖子

0

粉丝
百度