标题: 51单片机简单双机通讯 [打印本页]

作者: 零度zzz    时间: 2017-12-5 12:50
标题: 51单片机简单双机通讯
很基础的两个单片机通信,p0口控制键盘,p2位选p1字选,注意两个单片机要用同样的晶振,并且用相同的电源供电
程序如下
    ORG 00H
         LJMP MAIN
         ORG 0023H
         LJMP SBR
MAIN:MOV SP,#60H
MOV R7,#08H
     MOV TMOD,#20H//定时器1设为模式2
         MOV TH1,#0F3H//设初值
         MOV TL1,#0F3H
         CLR ET1          //禁止定时器1中断
         SETB TR1
         MOV SCON,#50H//串行口设置为方式1,REN=1
         SETB ES          //允许串口中断
         SETB EA          //开放总中断
     MOV DPTR,#LED
LOOP:CALL Key
MOV A,R7
LCALL OLED
MOV A,R7
MOV SBUF,A
JB TI,$
         AJMP LOOP

SBR:PUSH ACC
    JB TI,SEND        //TI=1,为发送中断
    ACALL SIN        //RI=1,为接受中断
        SJMP BACK_1
SEND:ACALL SOUT           //调用发送子程序
BACK_1:POP ACC
     RETI     

SOUT:CLR TI
         RET

SIN:CLR RI                          //接收子程序
    MOV A,SBUF
        MOV R7,A                  //读出接收缓冲区的内容
        LCALL OLED
    RET

Key:MOV A,P0       
   K1:CJNE A,#07FH,K2       
          MOV R7,#00H       
   K2:CJNE A,#0BFH,K3
          MOV R7,#01H
   K3:CJNE A,#0DFH,K4
          MOV R7,#02H
   K4:CJNE A,#0EFH,K5
          MOV R7,#03H
   K5:CJNE A,#0F7H,K6
          MOV R7,#04H
   K6:CJNE A,#0FBH,K7
          MOV R7,#05H
   K7:CJNE A,#0FDH,K8
          MOV R7,#06H
   K8:CJNE A,#0FEH,BACK
      MOV R7,#07H
BACK:RET

OLED:MOV P2,#0FEH
     MOVC A,@A+DPTR        //显示
     MOV P1,A
         RET
LED:DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;
END


作者: nj136    时间: 2017-12-6 15:45
谢谢,很给力!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1