⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0-9999记时+4x4键盘.txt

📁 0-9999记时+4X4键盘
💻 TXT
字号:
0-9999记时+4X4键盘
@@@@@
程序由于是第一次写,有点长....
MAIN:
MOV TMOD,#01H   ;以定时数器方式,开启T0,记数500采用16位计数器
MOV TL0,#0CH
MOV TH0,#FEH
SETB TR0
MOV R1,#002H
MOV 56H,#000H
MOV 55H,#000H
MOV 47H,#001H
MOV 46H,#001H
MOV 45H,#001H
MOV 44H,#002H
MOV 43H,#00BH
MOV 42H,#00BH
MOV 41H,#00BH
MOV 40H,#009H
DJNZ 44H,LOOP
XZ1: LCALL XFH1
INC 45H
LJMP LOOP
XZ2: LCALL XFH2
INC 46H
LJMP WZ1
XZ3: LCALL XFH3
INC 47H
LJMP WZ2
WZ3:
MOV 42H,#00AH
MOV A,47H
SUBB A,#001H
JZ XZ3 
WZ2:
MOV 41H,#00AH
MOV A,46H
SUBB A,#001H
JZ XZ2
WZ1:
MOV 40H,#00AH
MOV A,45H
SUBB A,#001H
JZ XZ1
LOOP:
MOV R2,#200
D3:
LCALL KEY
CJNE A,#00H,T1
DISFH:
JBC TF0,LP1
SJMP DISFH
LP1:
LCALL LP2
LCALL DIS1
LCALL DIS2
LCALL DIS3
LCALL DIS4
DJNZ R2,D3
DJNZ 40H,LOOP
DJNZ 41H,WZ1
DJNZ 42H,WZ2
DJNZ 43H,WZ3
LJMP MAIN
T1:
LCALL DIS
MOV 55H,#00H
AJMP DISFH
LJMP MAIN
XFH1:
MOV 41H,#009H
RET
XFH2:
MOV 42H,#009H
RET
XFH3:
MOV 43H,#009H
RET
DIS1:
MOV DPTR,#TAB
MOV A,#00BH
SUBB A,40H
MOVC A,@A+DPTR
MOV P2,#11110111B
MOV P0,A
MOV P0,#0FFH
MOV P2,#0FFH
RET
DIS2:
MOV DPTR,#TAB
MOV A,#00BH
SUBB A,41H
MOVC A,@A+DPTR
MOV P2,#11111011B
MOV P0,A
MOV P0,#0FFH
MOV P2,#0FFH
RET
DIS3:
MOV DPTR,#TAB
MOV A,#00BH
SUBB A,42H
MOVC A,@A+DPTR
MOV P2,#11111101B
MOV P0,A
MOV P0,#0FFH
MOV P2,#0FFH
RET
DIS4:
MOV DPTR,#TAB
MOV A,#00BH
SUBB A,43H
MOVC A,@A+DPTR
MOV P2,#11111110B
MOV P0,A
MOV P0,#0FFH
MOV P2,#0FFH
RET
KEY:
MOV P1,#00FH
MOV A,P1
CJNE A,#00FH,YJAX
MOV A,#000H
RET
YJAX:
QDH:
ORL A,#0F0H
H1: CJNE A,#11111110B,H2
MOV R0,#000H
AJMP QDL
H2: CJNE A,#11111101B,H3
MOV R0,#004H
AJMP QDL
H3: CJNE A,#11111011B,H4
MOV R0,#008H
AJMP QDL
H4: CJNE A,#11110111B,JS2
MOV R0,#00CH
LJMP QDL
QDL:
MOV P1,A
MOV A,P1
ANL A,#0F0H
L1: CJNE A,#11100000B,L2
MOV A,#000H
ADD A,R0
AJMP JG
L2: CJNE A,#11010000B,L3
MOV A,#001H
ADD A,R0
AJMP JG
L3: CJNE A,#10110000B,L4
MOV A,#002H
ADD A,R0
AJMP JG
L4: CJNE A,#01110000B,JS2
MOV A,#003H
ADD A,R0
AJMP JG
JS2: MOV A,#000H     ;当不只一个键扫下的时候,将A清0结束
RET
JG:
INC A
MOV R0,A
MOV A,#00BH
SUBB A,R0
MOV 56H,A
MOV A,R0
XD:
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 52H,A
MOV A,R1
CJNE A,#002H,PD     ;R2值是否为2,为2则保值改0
MOV 57H,52H     ;按键按下,保留键值,将R1赋予0
MOV R1,#00H
SJMP JS1
PD: MOV A,57H     ;若有不同键按下时,将R1赋予2
CJNE A,52H,PD2
MOV A,#000H     ;若为相同值则返回,且不输出信号
SJMP JS1
PD2: MOV R1,#002H     ;若R1被赋予2,则下次输出信号
JS1:
RET      ;这样的设计目的为,一次按键只有一个信号输出
DIS:
MOV A,52H
CJNE A,#C6H,XD1
MOV 49H,#04H    ;功能键1
MOV 55H,A
AJMP SS
XD1:
CJNE A,#A1H,XD2
MOV 49H,#03H    ;功能键2
MOV 55H,A
AJMP SS
XD2:
CJNE A,#86H,XD4
MOV 49H,#02H    ;功能键3
MOV 55H,A
AJMP SS
XD4:
CJNE A,#8EH,XD5
MOV 49H,#01H    ;功能键4
MOV 55H,A
AJMP SS
XD5:
CJNE A,#88H,XD6
MOV 49H,#00H    ;功能键5
MOV 55H,A
AJMP SS
XD6:
CJNE A,#83H,TX1
MOV 49H,#FFH    ;功能键6
MOV 55H,A
AJMP SS
TX1:
MOV A,55H
CJNE A,#00H,GS
RET
GS:      ;修改数字
MOV A,49H
GS1:
CJNE A,#001H,GS2
MOV 40H,56H    ;第一位
AJMP SS
GS2:
CJNE A,#002H,GS3
MOV 41H,56H    ;第二位
AJMP SS
GS3:
CJNE A,#003H,GS4
MOV 42H,56H    ;第三位
AJMP SS
GS4:
CJNE A,#004H,GS5
MOV 43H,56H    ;第四位
AJMP SS
GS5:
AJMP SS
SS:      ;选中位闪烁
MOV 51H,#0AH
MOV 48H,#0AH
XDJG:
MOV R3,#FFH
X1:
LCALL KEY    ;键盘扫描
CJNE A,#00H,T2
X2: JBC TF0,JP3
SJMP X2
JP3:
MOV TL0,#0CH
MOV TH0,#FEH
MOV A,48H
MOV B,#02H
DIV AB
MOV 50H,B
MOV A,50H
CJNE A,#00H,TX
S0:
LCALL DIS1
LCALL DIS2
LCALL DIS3
LCALL DIS4
AJMP S5
TX:      ;判断选择的是哪位
MOV A,49H
S11:
CJNE A,#001H,S12
AJMP S1
S12:
CJNE A,#002H,S13
AJMP S2
S13:
CJNE A,#003H,S14
AJMP S3
S14:
CJNE A,#004H,S15
AJMP S4
S15:
CJNE A,#000H,S16
AJMP S0
S16:
AJMP JS
S1: 
LCALL DIS2
LCALL DIS3
LCALL DIS4
AJMP S5
S2:
LCALL DIS1
LCALL DIS3
LCALL DIS4
AJMP S5
S3:
LCALL DIS1
LCALL DIS2
LCALL DIS4
AJMP S5
S4:
LCALL DIS1
LCALL DIS2
LCALL DIS3
S5:
DJNZ R3,X1
DEC 48H
DJNZ 51H,XDJG
LJMP SS
T2:
LCALL DIS     ;调用DIS
JS:
RETLP2: MOV TL0,#0CH
MOV TH0,#FEH
RET
TAB DB FFH,C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H,C6H,A1H,86H,8EH 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -