发布网友 发布时间:2024-09-28 08:23
共1个回答
热心网友 时间:2024-10-04 04:30
没有用外部中断,我嫌麻烦,图上得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