1 标签: modbus 8051 源程序 modbu s 协议--51 端程序的实现 RTU 需要一个定时器来判断3
5 个流逝时间
#define ENABLE 1 #define DISABLE 0 #define TRUE 1 #define FAULT 0 #define RECEIVE_EN 0 #define TRANSFER_EN 1 #define MAX_RXBUF 0x20 extern unsigned char emissivity; extern unsigned char tx_count,txbuf[15]; extern unsigned char rx_count,rxbuf[15]; extern unsigned char tx_number,rx_number; extern bit rx_ok; unsigned char rx_temp; void InitTimer1() //针对标准 8051 { TMOD=(TMOD|0xf0)&0x1f; //将 T1 设为 16 位定时器 TF1=0; TH1=0x62; //设 T1 位 3
5 位的接收时间35bit/9600bit/s=3
646ms TL1=0x80;//晶振为 11
0592MHz,T=65535-3
646ms*11
0592MHz/12=0xf2df //0x6280 是 22
1184M 下 LPC9XX 下的值
ET1=1; //允许 T1 中断 TR1=1; //T1 开始计数 } void timer1() interrupt 3 using 2 //定时器中断 { TH1=0x62; //3
646ms interrupt TL1=0x80; if(rx_count>=5) //超时后,若接收缓冲区有数则判断为收到一帧 { rx_ok=TRU