文档详情

3个51单片机通信汇编程序.doc

发布:2017-05-02约6.36千字共7页下载文档
文本预览下载声明
(1)主机程序 AT89C51-A ORG 00H JMP START START: MOV SP,#60H ;设置堆栈 MOV TMOD, ;TIMER1工作在MODE2 ANL PCON, ;SMOD=0 MOV TH1,#0F3H ;波特率为2400 MOV TL1,#0F3H SETB TR1 ;启动TIMER1 MOV SCON, ;UART工作在MODE3 MOV IE, ;UART中断使能 SETB SM2 ;设SM2=1 MOV P2,#0FFH ;给P2口赋初值 MOV 32H,0FFH ;两个副CPU地址暂存器 SCAN0: MOV R3,#F7H ;键盘扫描初始值 SCAN: JB RI,UARTI ;是否有接收中断 MOV R1,#00H ;TABLE取码指针 SCAN1: MOV A,R3 ;输出行扫描 MOV P1,A MOV A,P1 MOV R4,A SETB C MOV R5,#03H ;扫描4列 L1: RLC A JNC KEYIN ;C=0表示有键按下 INC R1 ;C不等于0,未按则取码指针加1 DJNZ R5,L1 ;扫描下一列 MOV A,R3 ;扫描下一行 SETB C RRC A MOV R3,A JC SCAN1 ;4行扫描完 JMP SCAN0 KEYIN: MOV R7,#0D0H ;消除抖动 D2: MOV R6,#19H DJNZ R6,$ DJNZ R7,D2 D3: MOV A,P1 ;按键放开否? XRL A,R4 JZ D3 MOV A,R1 ;至TABLE取键盘码 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV 30H,A XRL A,#83H ;“#1”是否按下? JZ UART1 MOV A,30H XRL A,#C6H ;“#2”是否按下? JZ UART2 MOV A,30H MOV SBUF,A ;载入SBUF发送出去 WAIT: JBC TI,SCAN ;发送完毕否? JMP WAIT UART1: SETB TB8 ;设TB8=1 MOV SBUF,#01H ;发送AT89C51-B的地址01H WAIT1: JBC TI,L2 ;发送完毕否? JMP WAIT1 L2: CLR TB8 ;清
显示全部
相似文档