找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3687|回復: 1
收起左側(cè)

單片機雙機通訊 仿真+匯編源程序

[復制鏈接]
ID:137190 發(fā)表于 2016-9-26 12:47 | 顯示全部樓層 |閱讀模式
一個51單片機做的雙擊通訊匯編程序  調(diào)試通過  proteus仿真+源代碼   給51黑電子論壇的朋友們分享下.
0.png

0.png

所有資料下載:
單片機與單片機之間的串口通信.zip (39.38 KB, 下載次數(shù): 30)


發(fā)送程序:
  1. ;本程序收發(fā)數(shù)據(jù)采用查詢方式
  2. ORG 0000H
  3. AJMP START
  4. ORG 0030H
  5. START:MOV 30H,#0C0H   ;傳送的16個數(shù)據(jù)(0~F)
  6.       MOV 31H,#0F9H
  7.       MOV 32H,#0A4H
  8.       MOV 33H,#0B0H
  9.       MOV 34H,#99H
  10.       MOV 35H,#92H
  11.       MOV 36H,#82H
  12.       MOV 37H,#0F8H
  13.       MOV 38H,#80H
  14.       MOV 39H,#90H
  15.       MOV 3AH,#88H
  16.       MOV 3BH,#83H
  17.       MOV 3CH,#0C6H
  18.       MOV 3DH,#0A1H
  19.       MOV 3EH,#086H
  20.       MOV 3FH,#08EH
  21.       MOV TMOD,#20H  ;定時器1置為方式2
  22.       MOV TH1,#0F4H  ;裝載定時器初值,波特率2400
  23.       MOV TL1,#0F4H  
  24.       CLR EA         
  25.       SETB TR1       ;啟動定時器
  26.       MOV PCON,#00H  
  27.       MOV SCON,#50H  ;設定串口方式1,且準備接收應答信號
  28. LOOP1:MOV SBUF,#0E1H ;發(fā)聯(lián)絡信號
  29.       JNB TI,[        DISCUZ_CODE_4        ]nbsp;      ;等待一幀發(fā)送完畢
  30.       CLR TI         ;允許再發(fā)送
  31.       JNB RI,[        DISCUZ_CODE_4        ]nbsp;      ;等待2號機的應答信號
  32.       CLR RI         ;允許再接收
  33.       MOV A,SBUF     ;2號機應答后,瀆至A
  34.       XRL A,#0E2H    ;判斷2號機是否準備完畢
  35.       JNZ LOOP1      ;2號機未準備好,繼續(xù)聯(lián)絡
  36. LOOP2:MOV R0,#30H    ;2號機準備好,設數(shù)據(jù)塊指針初值
  37.       MOV R7,#10H    ;設定數(shù)據(jù)塊長度初值
  38.       MOV R6,#00H    ;清校驗和單元
  39. LOOP3:MOV SBUF,@R0   ;發(fā)送一個數(shù)據(jù)字節(jié)
  40.       MOV A,R6      
  41.       ADD A,@R0      ;求校驗和
  42.       MOV R6,A       ;保存校驗和
  43.       INC R0
  44.       JNB TI,$
  45.       CLR TI
  46.       DJNZ R7,LOOP3  ;整個數(shù)據(jù)塊是否發(fā)送完畢
  47.       MOV SBUF,R6    ;發(fā)送校驗和
  48.       JNB TI,$
  49.       CLR TI
  50.       JNB RI,[        DISCUZ_CODE_4        ]nbsp;      ;等待2號機的應答信號
  51.       CLR RI
  52.       MOV A,SBUF     ;2號機應答,讀至A
  53.       JNZ LOOP2      ;2號機應答”錯誤“,轉(zhuǎn)重新發(fā)送
  54.       RET            ;2號機應答”正確“,返回                 
復制代碼

接受程序:
  1. ;本程序收發(fā)數(shù)據(jù)采用查詢方式
  2. ORG 0000H
  3. AJMP START
  4. ORG 0030H
  5. START:MOV TMOD,#20H  ;定時器1置為方式2
  6.       MOV TH1,#0F4H  ;裝載定時器初值,波特率2400
  7.       MOV TL1,#0F4H  
  8.       CLR EA         
  9.       SETB TR1       ;啟動定時器
  10.       MOV PCON,#00H  
  11.       MOV SCON,#50H  ;設定串口方式1,且準備接收
  12. LOOP1:JNB RI,[        DISCUZ_CODE_5        ]nbsp;      ;等待1號機的聯(lián)絡信號
  13.       CLR RI
  14.       MOV A,SBUF     ;收到1號機信號
  15.       XRL A,#0E1H    ;判是否為1號機聯(lián)絡信號
  16.       JNZ LOOP1      ;不是一號機聯(lián)絡信號,再等待
  17.       MOV SBUF,#0E2H ;是1號機聯(lián)絡信號,發(fā)應答信號
  18.       JNB TI,$
  19.       CLR TI
  20.       MOV R0,#30H    ;設定數(shù)據(jù)快地址指針初值
  21.       MOV R7,#10H    ;設定數(shù)據(jù)塊長度初值
  22.       MOV R6,#00H    ;清校驗和單元
  23. LOOP2:JNB RI,$
  24.       CLR RI
  25.       MOV A,SBUF
  26.       MOV @R0,A      ;接收數(shù)據(jù)轉(zhuǎn)儲
  27.       INC R0
  28.       ADD A,R6       ;求校驗和
  29.       MOV R6,A
  30.       DJNZ R7,LOOP2  ;判斷數(shù)據(jù)塊是否接收完畢

  31.       JNB RI,[        DISCUZ_CODE_5        ]nbsp;      ;完畢,接收1號機發(fā)來的校驗和
  32.       CLR RI
  33.       MOV A,SBUF
  34.       XRL A,R6       ;比較校驗和
  35.       JZ END1        ;校驗和相等,跳至發(fā)正確標志
  36.       MOV SBUF,#0FFH ;校驗和不相等,發(fā)錯誤標志
  37.       JNB TI,[        DISCUZ_CODE_5        ]nbsp;      ;轉(zhuǎn)重新接收
  38.       CLR TI
  39.       SJMP LOOP2
  40. END1: MOV SBUF,#00H
  41. JS1:  MOV R0,#30H     ;顯示接到的數(shù)據(jù)
  42. JS3:  MOV A,@R0
  43.       MOV P0,A
  44.       ACALL DELAY
  45.       INC R0
  46.       MOV A,R0
  47.       CJNE A,#40H,JS2
  48.       AJMP JS1
  49. JS2:  AJMP JS3

  50. DELAY: MOV  R4,#04H
  51.    D1: MOV  R7,#0FFH
  52.    D2: MOV  R6,#0FFH
  53.        DJNZ R6,$
  54.        DJNZ R7,D2
  55.        DJNZ R4,D1
  56.        RET
  57.        END            
復制代碼



回復

使用道具 舉報

ID:140275 發(fā)表于 2016-9-26 21:07 | 顯示全部樓層
謝謝樓主!下載學習
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表