📄 ck.asm
字号:
LED4 BIT P1.7
LED3 BIT P1.6
EXTRA BIT P1.5
LED2 BIT P1.4
LED1 BIT P1.3
CLOCK BIT P3.1
SIAB BIT P3.0
KEYD BIT p3.5
KEYC BIT p3.7
BUFFER EQU 30H; 30--LED4 31--LED3 32 LED2 33---LED1
SCOUNT EQU 40H
COUNT EQU 41H
MCOUNT EQU 42H
HCOUNT EQU 43H
FLAGD EQU 45H
FLAGC EQU 46H
ORG 0
AJMP START
ORG 03H
RETI
ORG 0BH
AJMP SETTIME
ORG 013H
RETI
ORG 01BH
RETI
ORG 023H
RETI
ORG 030H
START:
MOV R0, #70H
MOV A, #0
ClearRAM: MOV @R0, A
DJNZ R0, ClearRAM
MOV SP, #6FH
MOV P1, #0FFH
MOV SCOUNT, #16
MOV COUNT, #59
MOV MCOUNT, #0
MOV HCOUNT, #0
MOV FLAGC, #-1
MOV FLAGD, #0
MOV TMOD, #01H
MOV TH0, #0
MOV TL0, #0
SETB EA
SETB ET0
SETB TR0
SHOWLED:
;LCALL Display
MOV A, BUFFER
CLR LED4
LCALL SETLED234
LCALL Delay
SETB LED4
MOV A, BUFFER+1
CLR LED3
LCALL SETLED234
LCALL Delay
SETB LED3
AJMP SHOWLED
;------------------------------------------------------------------
SETTIME:
PUSH PSW
PUSH ACC
SETB RS1
MOV TH0, #0
MOV TL0, #0
DJNZ SCOUNT, EXIT
MOV SCOUNT, #14
DJNZ COUNT, EXIT
MOV COUNT, #60
MOV A, MCOUNT
CJNE A, #59, Mgo
MOV MCOUNT, #0
MOV A, HCOUNT
CJNE A, #23, Hgo
MOV HCOUNT, #0
AJMP EXIT
Hgo:
INC HCOUNT
AJMP EXIT
Mgo: INC MCOUNT
EXIT: LCALL DELAY
LCALL CHOICE
LCALL DECIDE
LCALL DOKEY
POP ACC
POP PSW
NOP
NOP
RETI
;----------------------------------------------------------------------------
SETLED:
MOV R0, #08H
Again: RLC A
MOV SIAB, C
SETB CLOCK
CLR CLOCK
DJNZ R0, Again
NOP
NOP
RET
;------------------------------------------------------------------------------
Display:
MOV A, MCOUNT
MOV B, #10
DIV AB
MOV BUFFER, B
MOV BUFFER+1, A
MOV A, HCOUNT
MOV B, #10
DIV AB
MOV BUFFER+2, B
MOV BUFFER+3, A
NOP
NOP
RET
;----------------------------------------------------------------------------------
SETLED234:
MOV DPTR, #TABLE_LED234
MOVC A, @A+DPTR
LCALL SETLED
NOP
NOP
RET
SETLED1:
MOV DPTR, #TABLE_LED1
MOVC A, @A+DPTR
LCALL SETLED
NOP
NOP
RET
;-------------------------------------------------------------------------------------
CHOICE:
SETB C
ANL C, KEYC
JNC Doup
JMP Next
Doup: LCALL DELY10US
SETB C
ANL C, KEYC
JNC DO_CHOICE
JMP Next
DO_CHOICE:
INC FLAGC
MOV A, FLAGC
MOV B, #2
DIV AB
MOV FLAGC, B
Next:
NOP
NOP
RET
;-----------------------------------------------------------------------------------
DECIDE:
SETB C
ANL C, KEYD
JNC Doudong
JMP Return
Doudong:
LCALL DELY10US
SETB C
ANL C, KEYD
JNC DO_WHAT
JMP Return
DO_WHAT: MOV FLAGD, #1
Return:
NOP
NOP
RET
;-----------------------------------------------------------------------------------
DOKEY:
MOV A, FLAGC
CJNE A, #0, XIA
MOV A, FLAGD
CJNE A, #1, WAIT
MOV A, MCOUNT
CJNE A, #59, MCHU
MOV MCOUNT, #0
JMP WAIT
MCHU: INC MCOUNT
JMP WAIT
XIA: MOV A, FLAGC
CJNE A, #1, WAIT
MOV A, FLAGD
CJNE A, #1, WAIT
MOV A, HCOUNT
CJNE A, #23, HCHU
MOV HCOUNT, #0
JMP WAIT
HCHU: INC HCOUNT
WAIT:
MOV FLAGD, #0
NOP
NOP
RET
;-------------------------------------------------------------------------------------
DELAY:
MOV R0, #0DFH
D1: MOV R1, #2
D2: DJNZ R1, D2
DJNZ R0, D1
RET
;------------------------------------------------------------------------------------
DELY10US:
MOV R6,#0FFH
Huan: MOV R5,#4
XUN: DJNZ R5,XUN
DJNZ R6, Huan
RET
;------------------------------------------------------------------------------------
TABLE_LED1:
;LED1段码 0 1 2 3 4 5 6 7 8 9
DB 01010000b,11111001b,00110100b,10110000b,10011001b,10010010b,00010010b,11111000b,00010000b,10010000b,0ffh
TABLE_LED234:
;LED234段码
DB 11000000b,11111001b,10100100b,10110000b,10011001b,10010010b,10000010b,11111000b,10000000b,10010000b,0ffh
TABLE_extra:
DB 11111110B,11111101B,11111011B, 11110111B,11101111B,11011111B,10111111B,0h,0ffh,0ffh,0ffh
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -