由串行口接收帶偶校驗位的ASCII碼數據塊MCS51匯編程序 作者: 時間:2016-11-29 來源:網絡 加入技術交流群 掃碼加入和技術大咖面對面交流海量資料庫查詢 收藏 由串行口接收帶偶校驗位的ASCII碼數據塊。 設待接收數據塊共10H個字節,接收后擬存于片內RAM的40H~4FH單元;單片機采用的晶振頻率、波特率、SMOD位的值等均同上題。則相應的接收程序如下:RSTART:MOV TMOD,#20H ;置定時器/計數器T1工作于方式2定時 MOV TL1,#0E6H ;定時器/計數器T1置初值 MOV TH1,#E6H ;定時器/計數器T1置重裝數 MOV R0,#40H ;R0作地址指針,指向擬存放數據塊首址 MOV R7,#10H ;R7作循環計數器,置以接收數據字節數 SETB TR1 ;啟動定時器/計數器T1 RSTART:MOV TMOD,#20H ;置定時器/計數器T1工作于方式2定時 MOV TL1,#0E6H ;定時器/計數器T1置初值 MOV TH1,#E6H ;定時器/計數器T1置重裝數 MOV R0,#40H ;R0作地址指針,指向擬存放數據塊首址 MOV R7,#10H ;R7作循環計數器,置以接收數據字節數 SETB TR1 ;啟動定時器/計數器T1 LOOP:MOV SCON,#50H ;置串行口工作于方式1并啟動串行口接收WAIT:JNB RI,WAIT ;等待接收完畢 MOV A,SBUF ;取已接收字節數據到A MOV C,P ;取奇偶標志,奇為1,偶為0 JC ERROR ;發現有錯,轉出錯處理程序 ANL A,#7FH ;未出錯,去掉偶校驗位 MOV @R0,A ;存已接收的一個字節 INC R0 ;指向下一存放已接收字節的地址 DJINZ R7,LOOP ;循環接收,直到數據塊接收完畢 RET
評論