📄 rs485.c
字号:
void sendwframe(void)
{
unsigned char data i;
b-rightMeterFame=0;
RDCTP-command-table[13]=0x43;// 更新命令缓冲区
RDCTP-command-table[14]=0xc3;
RDCTP-command-table[15]=0x44; //更新命令缓冲区累加和校验字节
RE-DE=1; //设置MAX485进入发送状态
for(i=0;i<17;i++)
{
SBUF=RDCTP-command-table[i]; //发送缓冲区内的数据
delay(); //延时,以防止智能仪表端接收数据丢失
}
RE-DE=0; //设置MAX485进入接收状态
b-timerOver=0; //复位接收超时标志
counter-10ms=0x00; // 复位10MS计数器
ET0=1; //开定时器T0中断
RT0=1; //y启动定时器T0
Do
{
if(b-timerOver) //判断是否产生了接收超时
{
TR0=0; //停止定时器T0
ET0=0; //关闭定时器T0的中断
b-timerOver=0; //复位接收超时标志
counter-10ms=0x00; //复位10MS计数器
RE-DE=1; //设置MAX485进入发送状态
m-meterAddrC=0X00;智能//智能仪表数据帧地址段计数器清零
RS485-status=0x00; //复位RS485中断接收程序状态标志
b-rightMeterFrame=0;//清除正确接收数据帧标志
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -