主機通信子程序如下

主機通信子程序如下

ID:21653864

大?。?6.00 KB

頁數(shù):8頁

時間:2018-10-23

主機通信子程序如下_第1頁
主機通信子程序如下_第2頁
主機通信子程序如下_第3頁
主機通信子程序如下_第4頁
主機通信子程序如下_第5頁
資源描述:

《主機通信子程序如下》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

1、主機通信子程序如下:MOVTMOD,#20HMOVTL1,#0F3HMOVTH1,#0F3HSETBTR1MOVPCON,#80HSTAT:MOVSCON,#0D8H;串口方式3,允許接收,TB8=1CLRES;禁止串行中斷CLP1:MOVSBUF,#0FFH;發(fā)送命令,所有從機SM2=1JNBTI,$;等待發(fā)送完畢CLRTI;清發(fā)送中斷標志MOVA,R2;取尋址的從機地址MOVSBUF,A;發(fā)送尋址的從機地址JNBTI,$;等待發(fā)送完畢CLRTIJNBRI,$;等待尋址的從機應(yīng)答(返回地址)CLRRIMOVA,SBUF;讀從機應(yīng)答信號

2、XRLA,R2;核對地址(異或,相同為0)JNZCLP1;若地址不符合,則重發(fā)CLP2:CLRTB8;準備發(fā)送數(shù)據(jù)幀(只有尋址的從機才能接收)MOVSBUF,R3;發(fā)送命令幀JNBTI,$;等待發(fā)送完畢CLRTIJNBRI,$;等待從機應(yīng)答CLRRIMOVA,SBUF;讀應(yīng)答信息JBAcc.7,CLP2;若是非法命令則重發(fā)(ERR=1)CJNER3,#01H,SRX0;若原命令不要求從機發(fā)送,則轉(zhuǎn)STX:JNBAcc.1,CLP2;R3=01H要求從機發(fā)送,發(fā)送未準備好,則重新聯(lián)絡(luò)STX1:JNBRI,$;從機發(fā)送數(shù)據(jù)塊長度,主機等待接

3、收完畢CLRRIMOVA,SBUF;主機接收數(shù)據(jù)塊長度MOVR5,A;保存數(shù)據(jù)塊長度MOVR7,A;暫存數(shù)據(jù)塊長度RX_DATA:JNBRI,$;接收從機發(fā)來的數(shù)據(jù)CLRRIMOVA,SBUFMOV@R1,A;存放數(shù)據(jù)并計算校驗和ADDA,R6MOVR6,A;存放校驗和INCR1;指向下一數(shù)據(jù)存儲單元DJNZR5,STX1;判全部數(shù)據(jù)接收完畢否?未完繼續(xù)JNBRI,$;接收主機發(fā)來的數(shù)據(jù)校驗和CLRRIMOVA,SBUFCJNEA,R6,ERROR;校驗和不正確,則發(fā)81H表明數(shù)據(jù)出錯RET;正確接收完畢,返回ERROR:MOVSBUF

4、,#81HJNBTI,$CLRTIMOVA,R7;恢復R5(收到該數(shù)據(jù)塊的長度)以便恢復R1值MOVR5,ALOOP:DECR1;恢復R1首地址DJNZR5,LOOPMOVR6,00H;恢復累加和AJMPSTX1;重新等待接收SRX0:JCSRX;若原命令要求從機接收,轉(zhuǎn)從機接收RET;否則返回SRX:JNBAcc.0,CLP2;從機接收未準備好,重新聯(lián)絡(luò)SRX1:MOVA,R4;從機接收已準備好則主機發(fā)送數(shù)據(jù)塊長度MOVSBUF,AWAIT1:JBCTI,SRX1;等待主機發(fā)送完畢SJMPWAIT1TX_DATA:MOVA,@R0;主

5、機發(fā)送數(shù)據(jù),并計算校驗和MOVSBUF,AJNBTI,$CLRTIADDA,R6MOVR6,AINCR0;指向下一發(fā)送數(shù)據(jù)DJNZR4,TX_DATA;判全部數(shù)據(jù)發(fā)送完畢否?未完繼續(xù)MOVA,R6;主機發(fā)送校驗和MOVSBUF,AJNBTI,$CLRTIJNBRI,$;等待從機應(yīng)答CLRRIMOVA,SBUF;接受應(yīng)答信CLRCySUBBA,#81HJZRE_SEND;收到應(yīng)答是81H則重新發(fā)送數(shù)據(jù)RET;全部數(shù)據(jù)發(fā)送成功,則返回RE_SEND:MOVA,R7;恢復該數(shù)據(jù)塊長度MOVR4,ALOOP:DECR0;回到該數(shù)據(jù)塊首地址DJN

6、ZR4,LOOPMOVR6,#00H;清校驗和有關(guān)從機中斷、T1、波特率和串行口的初始化,可按如下預(yù)先完成:ORG0023HLJMPSERVEORG0050H;串行中斷服務(wù)程序入口MOVTMOD,#20H;定時器T1初始化工作于方式2MOVTL1,0F3HMOVTH1,0F3HSETBTR1MOVPCON,#80H;SMOD=1波特率倍增MOVSCON,#0F0H;串行方式3,允許接收,SM2=1同時,可用偽指令定義本從機地址:SLAVEQUR2,PSW.5為從機發(fā)送準備就緒狀態(tài)標志(PSW.5=1,發(fā)送準備就緒),PSW.1為從機接收

7、準備就緒狀態(tài)標志(PSW.1=1接收準備就緒)??梢栽谥鞒绦蛑袑SW.1和PSW.5置位。通信中斷服務(wù)子程序如下:SERVE:CLRRI;清接收標志位PUSHAcc;保護現(xiàn)場PUSHPSWSETBRS0;選擇寄存器工作區(qū)CLRRS1MOVA,SBUF;接收主機發(fā)送來的地址XRLA,#SLAV;比較與本從機地址相符否JZSS1;相同,則轉(zhuǎn)接收以下的數(shù)據(jù)SRET:POPPSW;不相符,則恢復現(xiàn)場,中斷返回POPAccRETISS1:CLRSM2;準備接收數(shù)據(jù)MOVSBUF,#SLAV;發(fā)回本機地址回復主機JNBTI,$;等待發(fā)送完畢CLR

8、TIJNBRI,$;等待主機應(yīng)答CLRRIJNBRB8,SS2;若受到RB8=0則從機轉(zhuǎn)接收命令幀SETBSM2;否則置位SM2并返回等待主機重新聯(lián)絡(luò)SJMPSRETSS2:MOVA,SBUFCJNEA,#

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。