??
字號:
;兩位數碼管,按鍵加一減一數顯程序(P3.2為加一鍵,P3.3為減一鍵)
TEMP EQU 22H ;計數器寄存器
;******;
;主程序;
;******;
MOV TEMP,#100 ;初始化計數器
GO: SETB P3.2 ;置P3.2為加1鍵
SETB P3.3 ;置P3.3為減1鍵
JNB P3.2,K1 ;P3.2=0表明按鍵s1按下(加1鍵)
JNB P3.3,K2 ;P3.3=0表明按鍵s2按下(減1鍵)
ACALL TV ;顯示
LJMP GO ;返回
K1: JNB P3.2,X1 ;等待P3.2釋放
ACALL TV ;顯示延時
INC TEMP ;加1
MOV A,TEMP
CJNE A,#200,N1 ;未到200中跳回
MOV TEMP,#100 ;加到200復位100;
N1: LJMP GO ;返回
X1: ACALL TV ;等待P33釋放延時
LJMP K1
K2: JNB P3.3,X2 ;等待P3.3釋放
ACALL TV ;顯示延時
DEC TEMP ;減1
MOV A,TEMP
CJNE A,#0,N2 ;未到0中跳回
MOV TEMP,#100 ;減到0復位100
N2: LJMP GO ;返回
X2: ACALL TV ;等待P34釋放延時
LJMP K2
;**********;
;顯示子程序;
;**********;
TV: MOV A,TEMP
MOV B,#100 ;100進制
DIV AB
MOV 19H,A ;百位放在19H
MOV A,B
MOV B,#10 ;10進制
DIV AB
MOV 20H,A ;十位放在20H
MOV 21H,B ;個位放在21H
MOV DPTR,#W8 ;指定查表啟始地址
MOV R0,#4 ;顯示4個50次
W9: MOV R1,#50 ;50次
W10: MOV A,21H ;取個位數
MOVC A,@A+DPTR ;查個位數的7段代碼
MOV P0,A ;送出個位的7段代碼
CLR P2.7 ;打開個位顯示
ACALL W13 ;顯示延時
SETB P2.7 ;關閉個位顯示
MOV A,20H ;取十位數
MOVC A,@A+DPTR ;查十位數的7段代碼
MOV P0,A ;送出十位的7段代碼
CLR P2.6 ;打開十位顯示
ACALL W13 ;顯示延時
SETB P2.6 ;關閉十位顯示
DJNZ R1,W10 ;50次沒完循環
DJNZ R0,W9 ;4個50次沒完循環
RET
;********;
;顯示延時;
;********;
W13: MOV R7,#70
DJNZ R7,$
NOP
RET
;7段數碼管各劃的數字排列表
W8: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;0 1 2 3 4 5 6 7 8 9
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -