GUAN4 EQU 33H
GUAN5 EQU 34H
GUAN6 EQU 35H
GUAN7 EQU 36H
GUAN8 EQU 37H
ORG 00H
LJMP star
ORG 23H
LJMP CKT
;-----------------------初始设定
STAR:
MOV SP,#60H
MOV IE,#10010000B
MOV SCON,#10010000B
ANL PCON,#0111111B
MOV TMOD, #20H
MOV TH1, #0F2H
MOV TL1, #0F2H
SETB TR1
MOV GUAN2,#00H
MOV GUAN3,#00H
MOV GUAN6,#00H
MOV GUAN7,#00H
CLR FLAGB
CLR FLAGA
MOV DPTR,#TABLE
;-----------------主要执行总程序
ZONGSAO:
LCALL SHOW
ACALL AA
SJMP ZONGSAO
;--- ----扫描按键是否按下子程序
AA:
S1:;------------ ------0,5键
JNB FLAGB ,S2
CLR FLAG2
CLR FLAG1
CLR FLAG0
JB P3.2 ,NEXT1
ACALL DELAY
JB P3.2 ,NEXT1
JNB P3.2 ,$
JB FLAGA ,WW1
MOV GUAN7,#00H
SETB FLAGA
LJMP NEXT1
WW1:
MOV GUAN6 ,#00H
CLR FLAGB
NEXT1:
JB P3.7 ,ONE1
ACALL DELAY
JB P3.7 ,ONE1
JNB P3.7 ,$
JB FLAGA, MM1
MOV GUAN7,#05H
SETB FLAGA
LJMP ONE1
MM1:
MOV GUAN6, #05H
CLR FLAGB
ONE1: LJMP S2
S2:;---------------- ------1,6键
JNB FLAGB, S3
CLR FLAG2
CLR FLAG1
SETB FLAG0
JB P3.2 ,NEXT2
LCALL DELAY
JB P3.2 ,NEXT2
JNB P3.2 ,$
JB FLAGA ,WW2
SETB FLAGA
LJMP NEXT2
WW2:
MOV GUAN6 ,#01H
CLR FLAGB
NEXT2:
LCALL DELAY
JB P3.7 ,ONE2
JNB P3.7 ,$
JB FLAGA ,MM2
MOV GUAN7,#06H
SETB FLAGA
LJMP ONE2
MM2:
MOV GUAN6 ,#06H
CLR FLAGB
ONE2: LJMP S3
S3:;------------------- ---2,7键
JNB FLAGB ,S4
CLR FLAG2
SETB FLAG1
CLR FLAG0
JB P3.2 ,NEXT3
LCALL DELAY
JB P3.2 ,NEXT3
JNB P3.2 ,$
JB FLAGA ,WW3
MOV GUAN7 ,#02H
SETB FLAGA
LJMP NEXT3
WW3:
MOV GUAN6 ,#02H
CLR FLAGB
NEXT3:
JB P3.7 ,ONE3
LCALL DELAY
JB P3.7 ,ONE3
JNB P3.7 ,$
JB FLAGA ,MM3
MOV GUAN7,#07H
SETB FLAGB
LJMP ONE3
MM3:
MOV GUAN6 ,#07H
CLR FLAGB
ONE3: LJMP S4
S4: ;----------------- 3,8键
JNB FLAGB ,S5
CLR FLAG2
SETB FLAG1
SETB FLAG0
JB P3.2 ,NEXT4
LCALL DELAY
JNB P3.2 ,$
JB FLAGA, WW4
MOV GUAN7 ,#03H
SETB FLAGA
LJMP NEXT4
WW4:
MOV GUAN6,#03H
CLR FLAGB
NEXT4:
JB P3.7 ,ONE4
LCALL DELAY
JB P3.7 ,ONE4
JNB P3.7 ,$
JB FLAGA ,MM4
MOV GUAN7,#08H
SETB FLAGA
LJMP ONE4
MM4:
LR FLAGB
ONE4: LJMP S5
S5:;----------- -----4,9键
JNB FLAGB ,S6
SETB FLAG2
CLR FLAG1
CLR FLAG0
LCALL DELAY
JB P3.2, NEXT5
JNB P3.2 ,$
JB FLAGA ,WW5
SETB FLAGA
LJMP NEXT5
WW5:
MOV GUAN6 ,#04H
CLR FLAGB
NEXT5:
JB P3.7, ONE5
LCALL DELAY
JB P3.7 ,ONE5
JNB P3.7 ,$
JB FLAGA ,MM5
SETB FLAGA
SETB FLAGB
LJMP ONE5
MM5:
MOV GUAN6 ,#09H
ONE5: LJMP S6
S6:;----------- ---设定键,清除(零)键
SETB FLAG2
CLR FLAG1
SETB FLAG0
JB P3.2 ,NEXT6
LCALL DELAY
JB P3.2,NEXT6
JNB P3.2 ,$
NEXT6:
JB P3.7 ,ONE6
LCALL DELAY
JB P3.7 ,ONE6
JNB P3.7 ,$
MOV GUAN6,#00H
CLR FLAGA
SETB FLAGB
ONE6: LJMP S7
SETB FLAG2
SETB FLAG1
CLR FLAG0
JB P3.2 ,NEXT7
LCALL DELAY
JB P3.2,NEXT7
JNB P3.2 ,$
CLR FLAGB
MOV B,#0AH
MOV A,GUAN6
MUL AB
ADD A,GUAN7
MOV SBUF,A
JNB TI,$
CLR TI
SETB ES
RET
;-------------- ------显示扫描子程序
SHOW:
;-----------guan8
SETB FLAG0
SETB FLAG1
SETB FLAG2
MOV P1,#0CEH
ACALL DELAY2
;---------guan7
SETB FLAG1
SETB FLAG2
MOV A ,GUAN7
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY2
;---------guan6
CLR FLAG1
SETB FLAG2
MOV A ,GUAN6
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY2
;----------------guan5
CLR FLAG0
CLR FLAG1
SETB FLAG2
MOV P1,#0C6H
ACALL DELAY2
;---------------guan4
SETB FLAG0
SETB FLAG1
CLR FLAG2
MOV P1,#0CEH
ACALL DELAY2
;--------guan3
CLR FLAG0
SETB FLAG1
CLR FLAG2
MOV A ,GUAN3
MOV P1,A
ACALL DELAY2
;---------guan2
SETB FLAG0
CLR FLAG1
CLR FLAG2
MOV A ,GUAN2
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY2
CLR FLAG1
CLR FLAG2
MOV P1,#0C6H
ACALL DELAY2
RET
;------------ ------------中断子程序
CKT:
PUSH ACC
PUSH PSW
CLR RI
MOV A,SBUF
; JNB RI,$
MOV B,#10
DIV AB
MOV GUAN3,B
POP PSW
POP ACC
RETI
DELAY: ;---- -------消抖延时程序6MS
DL2:MOV R1,#7DH
DL1:NOP
NOP
DJNZ R1,DL1
DJNZ R0,DL2
RET
delay2:;--- -------------扫描延时程序
MOV r0,#01h
dl4:MOV r1,#0a0h
dl3:NOP
NOP
DJNZ r1,dl3
DJNZ r0,dl4
RET
;-------------- ----------数码管显示表
TABLE:
DB 92H,82H,0F8H,80H,90
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页