汇编语言51单片机怎么实现用KEY 1控制数码管上显示的数字加1 KEY2控制数码管上显示数字减1?
原有key1为P3.4,添加个key2键为P3.5;
1、按你显示程序的逻辑,对TAB修改如下:
TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H
即数据的首尾为0(这是个标记而已),中间才是七段码 0--F 的显示数据;
2、对CK1、CK2键盘按下及松开程序做了修改;
3、显示程序也进行了修改,唯独延时程序不用修改;
代码如下:
MAIN:
MOV DPTR,#TAB
MOV R4,#00H
MOV R5,#01H
CLR A
LCALL DISPLAY
LOOP:
LCALL KEYDOWN
LCALL DISPLAY
SJMP LOOP
KEYDOWN:
JB P3.4,CK11 ;key1没有按下则转到key2
LCALL DS1MS ;P3.4=0表示Key1按下
JB P3.4,CK11 ;key1还不能松开
MOV R5,#01H
INC R4 ;key1按下为加
RET
CK11:
JB P3.5,KEYDOWN ;key2没有按下则转到key1
LCALL DS1MS ;P3.5=0表示Key2按下
JB P3.4,KEYDOWN ;key2还不能松开
MOV R5,#10H
DEC R4 ;key2按下为减
RET
D1::
MOV R4,R5
DISPLAY:
MOV A,R4
MOVC A,@A+DPTR
JZ D1 //累加器(A)=0转
MOV P0,A
SETB P2.6
CLR P2.6
MOV P0,#0FEH
SETB P2.7
CLR P2.7
LCALL DS1MS ;延时
LCALL KEYUP
RET
KEYUP:
JNB P3.4,KEYUP ;P3.4=0转
JNB P3.5,KEYUP ;等待松开按键
LCALL DS1MS
JNB P3.4,KEYUP
JNB P3.5,KEYUP
RET
TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H
END