甲机按键控制乙机数码管,乙机按键控制甲机LED灯
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- ORG 00H
- SJMP INIT
- ORG 0023H
- LJMP LOOP
- ORG 0030H
- INIT: MOV SP,#5FH
- MOV SCON,#50H ;串行口工作方式1,允许接收
- MOV TMOD,#20H ;定时器1工作方式2
- MOV PCON,#0H ;波特率不加倍
- MOV TH1,#0FDH ;波特率9.6kbit/s
- MOV TL1,#0FDH
- SETB TR1 ;启动定时器1
- SETB EA
- SETB ES
- CLR TI
- CLR RI
- KEYS: MOV P0,#0FFH
- MOV R1,#0EFH ;初始化各寄存器
- MOV R2,#4
- MOV R3,#0FFH
- MOV 20H,#11101111B
- MOV 21H,#11111110B
- KEYREAD: MOV A,R1
- MOV P0,A ;送扫描码至P0口
- MOV A,P0 ;读P0口按键状态
- MOV R3,A ;将此状态保存在寄存器R3中
- ORL A,#0F0H ;屏蔽P0口高四位
- CJNE A,#0FFH,KEYDOWN ;若P0口低四位不全为1,有按键落下
- MOV A,R1
- RL A ;若低四位全为1,扫描下一行
- MOV R1,A
- DJNZ R2,KEYREAD
- LJMP KEYS
- KEYDOWN: MOV A,P0
- ORL A,#0F0H
- CJNE A,#0FFH,KEYTURN1 ;若按键确实落下,将按键转换为按键码
- LJMP KEYS
- KEYTURN1: MOV R2,#4 ;设循环次数
- MOV B,#0 ;按键码初始值设为0
- LOOP1: MOV A,P0
- ORL A,#0F0H
- CJNE A,21H,S1 ;判断落下按键是否位于该列
- SJMP KEYTURN2 ;是,跳转判断行
- S1: INC B ;否,按键码加1,(21H)左移,判断是否位于下一列
- MOV A,21H
- RL A
- MOV 21H,A
- DJNZ R2,LOOP1
- SJMP KEYREAD
- KEYTURN2: MOV R2,#4
- LOOP2: MOV A,P0
- ORL A,#0FH
- CJNE A,20H,S2 ;判断落下按键是否位于该行
- SJMP S3
- S2: INC B ;否,按键码加4,(20H)左移,判断是否位于下一行
- INC B
- INC B
- INC B
- MOV A,20H
- RL A
- MOV 20H,A
- DJNZ R2,LOOP2
- SJMP KEYREAD
- S3: MOV A,B ;将按键码送给A
- SEND: MOV SBUF,A ;发送数据
- JNB TI,$
- CLR TI
- LJMP INIT
- LOOP: MOV A,SBUF ;接收乙机数据
- JNB RI,$
- CLR RI ;清接收中断标志
- MOV P1,#0FFH
- LCALL LED8 ;将乙机按键数据送P1口,点亮LED灯
- RETI
- LED8: JNB ACC.0,LIGHT1
- JNB ACC.1,LIGHT2
- JNB ACC.2,LIGHT3
- RETURN: RET
- LIGHT1: MOV A,#0FEH
- MOV R2,#8
- L1: MOV P1,A
- RL A
- ACALL DELAY
- DJNZ R2,L1
- SJMP RETURN
- LIGHT2: MOV A,#07FH
- MOV R2,#8
- L2: MOV P1,A
- RR A
- ACALL DELAY
- DJNZ R2,L2
- SJMP RETURN
- LIGHT3: MOV A,#0E7H
- MOV P1,A
- ACALL DELAY
- SETB C
- L31: MOV R0,A
- ORL A,#0FH
- RLC A
- MOV R1,A
- MOV A,R0
- ORL A,#0F0H
- RRC A
- MOV R2,A
- ANL A,#0FH
- MOV R0,A
- MOV A,R1
- ANL A,#0F0H
- ADD A,R0
- MOV P1,A
- ACALL DELAY
- JB P1.7,L31
- L32: SETB C
- MOV R0,A
- ORL A,#0FH
- RRC A
- MOV R1,A
- MOV A,R0
- ORL A,#0F0H
- RLC A
- MOV R2,A
- ANL A,#0FH
- MOV R0,A
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
程序代码.rar
(2.64 KB, 下载次数: 156)
|