电气火灾监控系统接收程序设计
图为电气火灾监控系统监控主机的接收监控探测器报文的程序框图,为了能够及时响应总线上的数据,采用中断的方式接收。当响应接收中断时,首先将字节存入RCREG寄存器内,然后根据缓存数组的指针判断当前存储的字节足否为第0个字节,即地址字节,如果是地址字节与主机地址匹配,则将数据保存至缓存数组,并设置TIMER丨定时器的初始化数据为检验字符间隔的时间;如果此时地址与主机地址不匹配,则设置TIMERI定时器的初始化数据为检验报文间隔的时间。如果当前接收的字节+是地址字节,则首先判断字符间隔足否超时,如果超时,则重设定时器时间,退出中断;如果未超时,
则保存该字节至缓存数组,当所有的数据接收完毕时,将接收标志位RCOK置1,通知主程序所有数据接收完毕,进行数据处理。并重新设置TIMER丨定时器的初始化数据为检验报文间隔的时间。因为在Modbus协议的RTU模式中,时间间隔至关重要,为了及时地反映计时情况,采用中断的方式计时,与串U接收中断具有相同的优先级别,具有TIMR1超时溢出中断后,对报文间隔计时或者对字符间隔计时的自动转换作用。