電氣火災(zāi)監(jiān)控系統(tǒng)接收程序設(shè)計(jì)
電氣火災(zāi)監(jiān)控系統(tǒng)接收程序設(shè)計(jì)
圖為電氣火災(zāi)監(jiān)控系統(tǒng)監(jiān)控主機(jī)的接收監(jiān)控探測器報(bào)文的程序框圖,為了能夠及時(shí)響應(yīng)總線上的數(shù)據(jù),采用中斷的方式接收。當(dāng)響應(yīng)接收中斷時(shí),首先將字節(jié)存入RCREG寄存器內(nèi),然后根據(jù)緩存數(shù)組的指針判斷當(dāng)前存儲(chǔ)的字節(jié)足否為第0個(gè)字節(jié),即地址字節(jié),如果是地址字節(jié)與主機(jī)地址匹配,則將數(shù)據(jù)保存至緩存數(shù)組,并設(shè)置TIMER丨定時(shí)器的初始化數(shù)據(jù)為檢驗(yàn)字符間隔的時(shí)間;如果此時(shí)地址與主機(jī)地址不匹配,則設(shè)置TIMERI定時(shí)器的初始化數(shù)據(jù)為檢驗(yàn)報(bào)文間隔的時(shí)間。如果當(dāng)前接收的字節(jié)+是地址字節(jié),則首先判斷字符間隔足否超時(shí),如果超時(shí),則重設(shè)定時(shí)器時(shí)間,退出中斷;如果未超時(shí),
則保存該字節(jié)至緩存數(shù)組,當(dāng)所有的數(shù)據(jù)接收完畢時(shí),將接收標(biāo)志位RCOK置1,通知主程序所有數(shù)據(jù)接收完畢,進(jìn)行數(shù)據(jù)處理。并重新設(shè)置TIMER丨定時(shí)器的初始化數(shù)據(jù)為檢驗(yàn)報(bào)文間隔的時(shí)間。因?yàn)樵贛odbus協(xié)議的RTU模式中,時(shí)間間隔至關(guān)重要,為了及時(shí)地反映計(jì)時(shí)情況,采用中斷的方式計(jì)時(shí),與串U接收中斷具有相同的優(yōu)先級(jí)別,具有TIMR1超時(shí)溢出中斷后,對(duì)報(bào)文間隔計(jì)時(shí)或者對(duì)字符間隔計(jì)時(shí)的自動(dòng)轉(zhuǎn)換作用。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文如需轉(zhuǎn)載請(qǐng)注明出處。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 xp@gdliontech.cn舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。