单片机按钮开关控制 用汇编语言编程和Proteus画图用AT89C51不加7447
有8个发光二极管,要求按下按钮一次亮两个发光二极管。主要是要用汇编语言ORG开头编写的程序,最好再给个用Proteus画的电路图!!!!!
十分感谢!!!!!! 展开
没有用外部中断,我嫌麻烦,图上得LED我也只画了2个,麻烦,也不太理解你的意思,将就下,下面是程序:
LED EQU P0
SMG EQU P2
KEY0 EQU 0X20
ORG 0
MAIN:
MOV KEY0 ,#0
MOV LED ,#0X03
KEYSCAN:
MOV A ,P3
CJNE A ,#0XFF ,KEY_1
AJMP KEYSCAN
RET
KEY_1:
CJNE A ,#0XFE ,KEY_2
MOV KEY0 ,#0X01
ACALL DISPLAY
AJMP KEY_RES
KEY_2:
CJNE A ,#0XFD ,KEY_3
MOV KEY0 ,#0X02
ACALL DISPLAY
AJMP KEY_RES
KEY_3:
CJNE A ,#0XFB ,KEY_4
MOV KEY0 ,#0X03
ACALL DISPLAY
AJMP KEY_RES
KEY_4:
CJNE A ,#0XF7 ,KEY_RES
MOV KEY0 ,#0X04
ACALL DISPLAY
AJMP KEY_RES
KEY_RES:
MOV A ,P3
CJNE A ,#0X7F ,KEY_RES
MOV KEY0 ,#0
AJMP KEYSCAN
DISPLAY:
MOV A ,KEY0
MOV DPTR ,#SEGTAB
MOVC A ,@A+DPTR
MOV SMG ,A
MOV A ,LED
RL A
RL A
MOV LED ,A
CJNE A ,#0XFF ,DISPLAY_LOOP
MOV LED ,#0
DISPLAY_LOOP:
RET
SEGTAB:
DB 0X3F ,0X06 ,0X5B ,0X4F ,0X66
END