Created
November 30, 2016 08:39
-
-
Save clive819/7994f5292ba6a7d4fe2ce65938eecede to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
port4 EQU 0E8h | |
shift7LED EQU 0FEh | |
dispBuf EQU 40h | |
keyBuf1 EQU 44h | |
keyBuf2 EQU 45h | |
keyCode EQU 46h | |
decBuf0 EQU 50h | |
t0Buf EQU 49h | |
t0Count EQU 10 | |
decBuf1 EQU 4Ch | |
t1Buf EQU 4Bh | |
t1Count EQU 20 | |
bitflag0 BIT 00h | |
bitflag1 BIT 01h | |
keyCheck EQU 47h | |
debCounter EQU 48h | |
debTimes EQU 60 | |
org 0000h | |
LJMP main | |
org 000bh | |
LJMP T0_ISR | |
org 001bh | |
LJMP T1_ISR | |
main: | |
MOV IE, #10001010b | |
MOV TMOD, #00010001b | |
SETB TR0 | |
SETB TR1 | |
MOV t0Buf, #t0Count | |
MOV decBuf0, #0 | |
MOV t1Buf, #t1Count | |
MOV decBuf1, #0 | |
CLR bitflag0 | |
CLR bitflag1 | |
MOV a, #0 | |
ACALL setdigits | |
MOV A, #0ffh | |
MOV P2, a | |
MOV P3, a | |
MOV keyBuf1, #0ffh | |
MOV keyBuf2, #0ffh | |
MOV keyCode, #0 | |
MOV dptr, #led_table | |
reset: | |
MOV r0, #dispBuf | |
MOV a, #shift7LED | |
loop: | |
MOV port4, A | |
ACALL covled | |
ACALL getkeycode | |
ACALL DELAYKEYDEBOUNCE | |
inc r0 | |
RL A | |
jb ACC.4, loop | |
Sjmp reset | |
Getkeycode: | |
PUSH 0E0h | |
MOV a, p2 | |
MOV keyBuf1, a | |
MOV a, p3 | |
MOV keyBuf2, a | |
MOV a, keyBuf2 | |
cjne a, #0ffh, nextcode0 | |
MOV a, keyBuf1 | |
MOV r2, #0 | |
nextcode1: | |
jnb 0e0h, gotkeycode | |
inc r2 | |
rr a | |
cjne r2, #8, nextcode1 | |
sjmp exitgetkeycode | |
nextcode0: | |
MOV a, keyBuf2 | |
MOV r2, #8 | |
nextcode2: | |
jnb 0e0h, gotkeycode | |
inc r2 | |
rr a | |
cjne r2, #16, nextcode2 | |
sjmp exitgetkeycode | |
gotkeycode: | |
MOV keyCode, r2 | |
exitgetkeycode: | |
POP 0E0h | |
ret | |
Displaykeycode: | |
PUSH 0E0h | |
MOV a, keyCode | |
MOV dispBuf, a | |
MOV dispBuf+1, a | |
MOV dispBuf+2, a | |
MOV dispBuf+3, a | |
POP 0E0h | |
ret | |
Delay: | |
MOV r4, #1 | |
delay0: MOV r5, #2 | |
delay1: MOV r6, #100 | |
delay2: MOV r7, #100 | |
delay3: djnz r7, delay3 | |
djnz r6, delay2 | |
djnz r5, delay1 | |
djnz r4, delay0 | |
ret | |
Covled: | |
PUSH 0E0h | |
MOV a, @R0 | |
ANL a, #0fh | |
MOVC a, @a+dptr | |
MOV p0, a | |
POP 0E0h | |
ret | |
setdigits: | |
PUSH 0E0h | |
MOV 40h,0e0h | |
MOV 41h,0e0h | |
MOV 42h,0e0h | |
MOV 43h,0e0h | |
POP 0e0h | |
RET | |
DELAYKEYDEBOUNCE: | |
PUSH 0E0h | |
ACALL DELAY | |
INC debCounter | |
MOV R5,debCounter | |
CJNE R5,#debTimes,DELAYEXIT | |
MOV debCounter,#0 | |
MOV A,keyCode | |
CJNE A,#0FFh,HASINPUT | |
SJMP DELAYEXIT | |
EXIT4: | |
MOV keyCheck,keyCode | |
DELAYEXIT: | |
POP 0E0h | |
RET | |
RESET2: | |
MOV keyCode,#0FFh | |
MOV keyCheck,#0FFh | |
SJMP DELAYEXIT | |
HASINPUT: | |
MOV A,keyCheck | |
CJNE A,keyCode,EXIT4 | |
CJNE A,#0Ch,ISD | |
SETB bitflag1 | |
SJMP RESET2 | |
ISD: | |
CJNE A,#0Dh,ISE | |
CLR bitflag1 | |
SJMP RESET2 | |
ISE: | |
CJNE A,#0Eh,ISF | |
SETB bitflag0 | |
SJMP RESET2 | |
ISF: | |
CJNE A,#0Fh,RESET2 | |
CLR bitflag0 | |
SJMP RESET2 | |
display2decimal0: | |
PUSH 0E0h | |
MOV A, decBuf0 | |
MOV B, #10 | |
DIV AB | |
MOV dispBuf+2, A | |
MOV dispBuf+3, B | |
JB bitflag0, decrease | |
INC decBuf0 | |
MOV A, decBuf0 | |
CJNE A, #100, exit | |
MOV decBuf0, #0 | |
exit: | |
POP 0E0h | |
RET | |
decrease: | |
DEC decBuf0 | |
MOV A, decBuf0 | |
CJNE A, #255, exit | |
MOV decBuf0, #99 | |
SJMP exit | |
T0_ISR: | |
PUSH 0E0h | |
CLR TR0 | |
MOV TH0, #60 | |
MOV TL0, #176 | |
SETB TR0 | |
DEC t0Buf | |
MOV A, t0Buf | |
JNZ exit1 | |
MOV t0Buf, #t0Count | |
ACALL display2decimal0 | |
exit1: | |
POP 0E0h | |
RETI | |
display2decimal1: | |
PUSH 0E0h | |
MOV A, decBuf1 | |
MOV B, #10 | |
DIV AB | |
MOV dispBuf, A | |
MOV dispBuf+1, B | |
JB bitflag1, decrease1 | |
INC decBuf1 | |
MOV A, decBuf1 | |
CJNE A, #100, exit2 | |
MOV decBuf1, #0 | |
exit2: | |
POP 0E0h | |
RET | |
decrease1: | |
DEC decBuf1 | |
MOV A, decBuf1 | |
CJNE A, #255, exit2 | |
MOV decBuf1, #99 | |
SJMP exit2 | |
T1_ISR: | |
PUSH 0E0h | |
CLR TR1 | |
MOV TH1, #60 | |
MOV TL1, #176 | |
SETB TR1 | |
DEC t1Buf | |
MOV A, t1Buf | |
JNZ exit3 | |
MOV t1Buf, #t1Count | |
ACALL display2decimal1 | |
exit3: | |
POP 0E0h | |
RETI | |
Led_table: | |
DB 0c0h | |
DB 0F9h | |
DB 0A4h | |
DB 0B0h | |
DB 99h | |
DB 92h | |
DB 82h | |
DB 0D8h | |
DB 80h | |
DB 90h | |
DB 88h | |
DB 83h | |
DB 0C6h | |
DB 0A1h | |
DB 86h | |
DB 8Eh | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment