LEDDATAPORT EQU P0
LEDCHOICEPORT EQU P2
KEYMODE EQU 10010001B;
KEYFUNCTION EQU 10010010B;
KEYUP EQU 10010011B;
KEYDOWN EQU 10010100B;
KEYPORT EQU P1
CHECKNUM EQU 17H
CANCEL EQU 00H;
HALFSPEED EQU 170;
WAVEPORT EQU P1.0
DELAYMIN EQU 00H
DELAYMAX EQU 01H
ORG 0000H
RESET: AJMP MAIN
ORG 000BH
JMP IT0P
ORG 0013H
JMP IT1P
ORG 001BH
JMP IT1P
ORG 0030H
MAIN:
MOV SP,#50H
CALL RESETMEMORY
CLR CANCEL
MOV 4EH,#00H
MOV A,#00H
MAINLOOP:
CALL SHOWLED
MOV KEYPORT,#0FFH
MOV A,KEYPORT
MOV R0,A
ANL A,#KEYMODE
CJNE A,#00H,NEXT1
MOV CHECKNUM,#00H
MOV A,4EH
INC A
CJME A,#01H,MODESPEED
CALL SHOWLEN
MOV 4EH,A
AJMP OK
MODESPEED:
CJNE A,#02H,MODESECOND
CALL SHOWSPEED
MOV 4EH,A
AJMP OK
MODESECOND:
CJNE A,#03H,RESETMODE
CALL SHOWSECOND
MOV 4EH,A
AJMP OK
RESETMODE:
MOV 4EH,#01H
CALL SHOWLEN
AJMP OK
OK:
MOV R7,#01H
CALL WAITKEYRELEASE
SJMP MAINLOOP
NEXT1:
MOV A,R0
ANL A,#KEYFUNCTION
CJNE A,#00H,NEXT2
MOV CHECKNUM,#00H
MOV R7,#02H
CALL WAITKEYRELEASE
CJNE R3,#00H,NOTRESTORMEM
CALL RESEETMEMORY
CLEAR MEMOEY
SETB CANCEL
SJMP MAINLOOP
NOTRESTORMEM:
MOV A,4EH
CJNE A,#01H,SPEED
CALL MEASURELEN
SJMP MAINLOOP
SPEED:
CJNE A,#02H,SECOND
CALL MEASSURESPEED
SJMP MAINLOOP
SPCOND:
CJNE A,#03H,MAINLOOP
CALL MEASEURSECOND
SJMP MAINLOOP
DEFAULT:
SJMP MAINLOOP
NEXT2:
MOV A,R0
ANL A,#KEYUP
CJNE A,#00H,NEXT3
MOV R6,#01H
CALL CHECK
MOV R7,#03H
CALL WAITKEYRELEASE
JMP MAINLOOP
NEXT3:
MOV A,R0
ANL A,#KEYDOWN
CJNE A,#00H,AIDJMPTOMAINLOOP
AJM AIDNEXT
AIDJMPTOMAINLOOP:
JMP MAINLOOP
AIDNEXT:
MOV R6,#02H
CALL CHECK
MOV R7,#04H
CALL WAITKEYRELEASE
JMP MAINLOOP
RET
END MAIN
WAITKEYRELEASE:
MOV R3,#0A0H
WAIT:
MOV R1 ,#00H
WAIT1:
CALL SHOWLED
MOV KEYPORT,#0FFH
MOV A,KEYPORT
MOV R2,A
CJNE R7,#01H,FROMFUNCTION
ANL A,#KEYMODE
JZ WAIT
RET
FROMFUNCTION:
CJNE R7,#02H,FROMELSE
MOV A,R2
ANL A,#KEYFUNCTION
JZ NOTRELEASE
RET
FROMELSE:
MOV A,R2
CJNE A,#0FFH,WAIT
RET
NOTRELEASE:
DJNZ R1,WAIT1
DJNZ R3,WAIT
RET
END WAITKEYRELEASE
RESETMEMORY:
MOV R0,#47H
CLR A
CLRMEM:
MOV @R0,A
DJNZ R0,CLRMEM
MOV 4CH,#2CH
MOV 4DH,#00H
CALL SHOWREADY
RET
END RESETMEMORY
CHECK:
MOV A,4DH
CJNE A,#00H,HAVE
CALL SHOWNONE
RET
HAVE:
MOV A,R6
CJNE A,#01H,PAGEDOWN
;PAGEUP
MOV A,4FH
CJNE A,4CH,GOAHEAD
MOV 4FH,#30H
MOV CHECKNUM,#01H
AJMP CANSHOW
GOAHEAD:
ADD A,#04H
MOV 4FH,A
INC CHECKNUM
AJMP CANSHOW
PAGEDOWN:
MOV A,4FH
CJNE A,#30H,GOBACK
MOV 4FH,4CH
MOV CHECKNUM,4DH
AJMP CANSHOW
GOBACK:
CLR C
SUBB A,#04H
MOV 4FH,A
DEC CHECKNUM
CANSHOW:
MOV R3,4FH
MOV 4FH,#48H
MOV 48H,#0DH
MOV 49H,#0DH
MOV 4AH,#0DH
MOV 4BH,CHECKNUM
MOV 08H,#08H
MOV R5,#02H
CHECKDELAY:
MOV R7,#00H
CHECKDELAY1:
CALL SHOWLED
MOVKEYPORT,#0FFH
MOV A,KEYPORT
MOV R0,A
ANL A,#KEYUP
JZ CHECKDELAY1
MOV A,R0
ANL A,#KEYDOWN
JZ CHECKDELAY1
DJNZ R7,CHECKDELAY1
DJNZ R5,CHECKDELAY
MOV 4FH,R3
RET
;END CHECK
MEASURELEN:
JNB CANCEL,CANMEASURELEN
CLR CANCEL
RET
CANMEASURELEN:
MOV 1EH,#00H
CALL SHOWERRO
RET
NOTELOW:
CJNE RO,#0FH,LOOP1
; SJMP L
; 反饋信號正常
MOV A,ITL1
MOV B,#HALFSPEED
MUL AB
MOV R7,A
MOV R6,B
MOV A,TH1
MOV B,#HALFSPEED
MUL AB
ADD A,R6
MOV R6,A
MOV A,B
ADDC A,#00H
MOV R5,A
MOV R4,#00H
MOV 1EH,#02H
CALL CUTFIGURE
MOV P3,#0FFH
RET
; END MEASURELEN
MEASSURESPEED:
JNB CANCEL,CANMEASSURESPEED
CLR CANCEL
RET
CANMEASSURESPEED
MOV 1EH,#00H
CALL SETTIME
SPEEDLOOP:
CJNE R0,#0FFH,SPEEDNOTFLOW1
ALL SHOWERRO
RET
SPEEDNOTFLOW1:
CJNE R0,#0FFH,SPEEDLOOP1
MOV 19H,TH1
MOV 18H,TL1
MOV R5,#08H
DELAYT :
MOV R7,#0011
DELAYT1:
MOV R6,#00H
DJNZ R6,$
DJNZ R7,DELAYT 1
DJNZ R5,DELAYT
CALL SETTIME
SPEEDLOOP2:
CJNE R0,#0FFH,SPEEDNOTFLOW2
CALL SHOWERRO
SPEEDNOTFLOW2 :
CJNE R0,#0FFH,SPEEDLOOP2
MOV 1AH,TL 1
MOV 1BH,TH I
CLRC
MOV A,1BH
SUBB A,19H
JC T2LESSTI
MOV A,1BH
CINE A,19H,T2MORET1
CLR C
MOV A,1AH
SUBB A,18H
JC T2LESST1
T2MORE T1:
CLR C
MOV A,1AH
SUBB A,18H
MOV R3,A
MOV A 1BH
SUBB A,19H
MOV R2,A
MOV R1,#00H
MOV R0,#00H
SJMP CULT
T2LESSTI1:
CLR C
MOV A,18H
SUBB A,1AH
MOV R3, A
MOV A, 19H
SUBB A,1BH
MOV R2,A
MOV R1,#00H
MOV R0,#00H
CULT:
MOV A,18H
ADD A,1AH
MOV R7,A
MOV A,19H
ADDC A,1BH
MOV R6,A
MOV A,#00H
ADDC A,#00H
MOV R5,A
MOV R4,#00H
MOV A,R7
ADD A,#58H
MOV R7,A
MOV A,R6
ADDC A,#30H
MOV R6,A
MOV A,R5
ADDC A,#20H
MOV R5,A
MOV A,#00H
ADDC A,#00H
MOV R4,A
CALL MYDIV
MOV R3,07H
MOV R2,06H
MOV R1,05H
MOV R0,04H
MOV R7,#40H
MOV R6,#0E1H
MOV R5,#33H
MOV R4,#00H
CALL MYDIV
MOV IEH,#01H
CALL CUTFIGURE
RET
;END MEASSURESPEED
MEASEURSECOND
JNB CANCEL,CANMEASEURSECOND
CLR CANCEL
RET
CANMEASEURSECOND:
MOV R7,#01H
CALL WAITKEYRELEASE
;CJNE R3,#00H,STARTTIMER
;CALL RESETMEMORY ;PRESS FUNCION KEY FOR A LONG TIME TO CLEAR MEMORYTIMERNORESET
;RET
;STARTTIMER:
;SET SHOWTIME
CLR A
MOV 48H,A
MOV 49H,A
MOV 4AH,A
MOV 4BH,A
MOV 4FH,#48H
MOV 1FH,#00H
MOV 1EH,#03H
MOV 1DH,00H
MOV TMOD,#10H
MOV TH 1,#0D8H
MOV TL1,#0F0H
MOV IE,#88H
MOV TCON,#01000000B;
SECWAIT :
;CALL SHOWLED
MOV A,1FH
CJNE A,1DH,AIDGOTO
AJMP SECHERE
AIDGOTO:
INC 1DH
INC 4BH
MOV A,4BH
CJNE A,#OAH,SECHERE
MOV 4BH,#00H
INC 4AH
MOV A,4AH
CJNE A,#0A H,SECHERE
MOV 4AH,#00H
INC 49H
MOV A,49H
CINE A,#OAH,SECHERE
MOV 49H,#00H
INC 48H
MOV A,48H
CJNE A,#0AH,SECHERE
CALL SHOWERRO
CLR EA
RET
SECHERE:
MOV A,48H
CALL CHANGE
MOV LEDDATAPORT,A
SETB LEDCHOICEPORT.4
MOV A,49H
CALL CHANGE
ANL A,#07FH
MOV LEDDATAPORT,A
CLR LEDCHOICEPORT.4
SE TB LEDCHOICEPORT.5
MOV A.,4AH
CALL CHANGE
MOV LEDDATAPORT,A
CLR LEDCI IOICEPORT.5
SETB LEDCI IOICE PORT.6
MOV A,4BH
CALL CHANGE
MOV LEDDATAPORT,A
CLR LEDCHOICEPORT.6
SETB LEDCHOICEPORT.7
MOV P3,#0FFH
MOV A,P3
ANL A,#KEYFUNCTION
CJNE A,#00H,SECWAIT
CLR EA
MOV TCON,#00H
MOV 1EH,#03H
CALL CUTFIGURE
;WATTING FOR RELEASE KEY
SECWATTING:
CALL SHOWLED
MOV P3,#OFFH
MOV A,P3
CJNE A,#0FFH,SECWATTING
RET
;END MEASEURSECOND
CUTFIGURE:
MOV 10H,#0FH ;POINT TO MEMORY TO CUT FIGURE
CUTNUM: ;START TO CUT NUMBER
CLR A
M0 V R3,#0AH
MOV R2,A
MOV R1,A
MOV R0,A
CALL MYDIV
MOV RO,10H
MOV @R0,03 H
DEC 10H
MOV A.,10H
CINE A,#07H,CUTNUM
MOV A,IEH
CJNE A,#01H,FROMLEN
MOV A,08H
CJNE A,#001H,ERRORSPEED
MOV A,09H
CJNE A,#00H,ERRORSPEED
AJMP FROMLEN
ERRORSPEED:
CALL SHOWERRO
MOV A.,#8FH
DELAYSHOWERRO:
ACALL SHOWLED
DEC A
JNZ DELAYSHOWERRO
RET
FROMLEN:
MOV A,4D1H
CJNE A,#06H,CUTNOTFLOW
;DATA OVERFLOW,NEED TO MOVE DATA
MOV R2,#14H
MoV R1,30H
MOV R0,#34H
MOVEDATA:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,MOVEDATA
AJMP CUTFLOW
CUTNOTFLOW:
INC 4DH
MOV A,4CH
ADD A,#04H
MOV 4CH,A
CUTFLOW:
MOV R2,#04H
MOV R1,4CH
MOV A,1EH
CINE A,#03H,NOTFROMSEC
MOV R0,#48H
AJMP NOTADJUST
NOTFROMSEC:
MOV R0,#08H
MOV A,1EH
CJNE A,#01H,NOTADJUST
INC R0
INC R0
NOTADJUST:
MOV A,@ R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,NOT ADJUST
MOV A,4CH
MOV 4FH,A
RET
:END CUTFIGURE
MOV TMOD,# 12H
MOV TH0,#0F4H
MOV TL0,#0FFH
MOV TH 1,#00H
MOV TL1,#00H
MOV R0,#00H
MOV R1,#01FH
MOV 1E,10001110B
MOV TCON,#01010100B
RET
;END SETTIME
IT0P:
CJNE R1,#00H,TWAVE
RETI
TWAVE:
DEC R1
CPL WAVEPORT
RET1
;END ITOP
IT1P:
MOV A,1EH
CJNE A,#03H,NOTFORMSECOND
; MOV 1EH,#03H
INC 1FH
MOV TH1,#0D8H
MOV TLI ,#0F8H
RETI
NOTFORMSECOND:
CLR EA
MOV TCON,#00H
MOV RO,#0FFH
RETI
;END IT1P
INT 1P:
CLREA
MOV A,TH1
CLR C
SUBB A,#DELAYMIN
JC INTOK
MOV A,TH1
CLR C
SUBB A,#DELAYMAX
JNC INTOK
MOV P3,#0FFH
SETBEA
AJMP ERROR
INTOK:
MOV P3,#0FFH
MOV R0,#0FH
CLR EA
MOV TCON,#00H
ERROR:
RET1
;END INT1
SHOWLED:
MOV R0,4FH
MOV R2,#10H
LEDCHOICEPORT.0
LEDLOOP:
MOV A,@R0
ACALL CHANGE
MOV R4,A
MOV A,4FH
CJNE A,#48H,SHOWNUM
;SHOW INFORMATION
AJMP NOTDOP
SHOWNUM:
CJNE R2,#00100000B,NOTDOP
MOV A,R4
ANL A,#07FH
MOV R4,A
NOTDOP:
MOV A,R4
MOV LEDCHOICEPORT,R2
MOV LEDDATAPORT,A
MOV A,R2
RL A
MOV R2,A
INC R0
ACALL DELAY
CJNE R2,#01H,LEDLOOP
MOV LEDCHOICEPORT,#00H
RET
;END SHOWLED
DELAY:
MOV R6,#38
DELAYLOOP:
MOV P3,#0FFH
MOV A,P3
CJNE A,#0FFH,DELAYRET
DJNZ R6,DELAYLOOP
DELAYRET:
RET
;END DELAY
CHANGE:
INC A
MOVC A,@A+PC
DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,
0F8H,080H,090H ;0~9
DB 086H,088H,0C8H,0FFH,0C7H,0C8H,08CH,0C6H,091H,0AIH
; E(A) R(B) N(C) NOSHOW
(ODH) L(OEH) N(OFH) P(10H) C(11H) Y(12H) d(13H)
;END CHANGE
SHOWERRO:
MOV 4FH,#48H
MOV 48H,#0AH
MOV 49H,#0BH
MOV 4AH,#0BH
MOV 4BH,#00H
RET
;END SHOWERRO
SHOWNONE:
;NO NUMBER,TO MAKE LED SHOW NONE
MOV 4FH,#48H
MOV 48H,#0CH
MOV 49H,#00H
MOV 4AH,#0CH
MOV 4BH,#0AH
RET
;END SHOWNONE
SHOWREADY:
;TO MAKE LED SHOW:RDY
MOV 4FH,#48H
MOV 48H,#0BH
MOV 49H,#13H
MOV4AH,# 12H
MOV 4BH,#0DH
RET
;END SHOWREADY
SHOWLEN:
;TO MAKE LED SHOW :LEN
MOV 4FH,#48H
MOV 48H,#0EH
MOV 49H,#0AH
MOV 4AH,#0FH
MOV 4BH,#0DH
RET
;END SHOWLEN
SHOWSPEED:
;TO MAKE LED SHOW:SPD
MOV 4FH,48H
MOV 48H,#05H
MOV 49H,#10H
MOV 4AH,# 13H
MOV 4BH,#0DH
RET
;END SHOWSPEED
SHOWSE:COND:
;TO MAKE LED SHOW:SEC
MOV4FH,#48H
MOV48H,#05H
MOV 49H,#0AH
MOV4AH,#11H
MOV 4BH,#0DH
RET
;END SHOWSECOND
DIVSUB1:
MOV B,#08H
MOV DPL,#00H
DIVSUBLOOP1:
MOV A,R7
ADD A,R7
MOV R7,OK
MOV A,R6
RLC A
MOV R6,A
XCH A,R5
RLC A
XCHA,R5
XCH A,R4
RLC A
XCH A,R4
XCH A,DPL
RLC A
XCH A,DPL
SUBB A,R3
MOV A,R5
SUBB A,R2
MOV A,R4
SUBB A,R1
MOV A,DPL
SUBB A,R0
JC DIVSUBLOOP2
MOV DPL,A
MOV A,R6
SUBB A,R3
MOV R6,A
MOV A,R5
SUBB A,R2
MOV R5,A
MOV A,R4
SUBB A,R1
MOV R4,A
INC R7
DIVSUBLOOP2:
DJNZ B,DIVSUBLOOP1
CLR A
XCH A,R6
MOV R3,A
CLR A
XCH A,R5
CLR A
XCH A,R4
MOV R1,A
MOV R0,DPL
RET
;END DIVSUB1:
MYDIV:
CINE RO,#00H,DIVSUB1
CUNE R1,#00H,DIVLOOP1
CNE R2,#00H,DIVLOOP2
MOV A,R4
MOV B,R3
DIV AB
XCH A,R7
XCH A,R6
XCH A,R5
MOV R4,A
MOV A,B
XCH A,R3
MOV R1,A
MOV R0,#18H
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
JBC CY,DIVLOOPHERE1
SUBB A,R1
JC DIVLOOPHERE:
INC R7
DIV LOOPHERE2:
DJNZ R0,DIVL00PHERE
CLR A
MOV R1,A
MOV R 2.A
RET
DIVLOOP2:
MOV R0,#18H
DIVLOOPHERE3:
MOV A,R7
ADD A,R7
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
XCH A,R1
RLC A
XCH A,R1
JBC CY,DIVLOOPHERE4
SUBB A,R3
MOV A,R1
SUBB A,R2
JC DIVLOOPHERES
DIVLOOPHERE4:
MOV A,R4
SUBB A,R3
MOV R4,A
MOV A,R1
SUBB A,R2
MOV RI,A
INC R7
DIVLOOPHERE5:
DJNZ R0,DIVLOOPHERE3
CLRA
XCH A,R1
MOV R2,A
CLR A
XCH A,R4
MOV R3,A
RET
DIVLOOP1:
MOV B,#10H
DIVLOOPHERE6:
MOV A,R7
ADD A,R7
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
XCHA,R4
RLC A
XCHA,R4
XCHA,R0
RLC A
XCH A,R0
JBC CY,QIULINHUI
SUBB A,R3
MOV A,R4
SUBB A,R2
MOV A,R0
SUBB A,R1
JC DIVLOOPQIU
QIULINHUl:
MOV A,R5
SUBB A,R3
MOV R5,A
MOV A,R4
MOV R4,A
MOV A,R0
SUBB A,R1
MOV R0,A
INC R7
DIVLOOPQlU:
DJNZ B,DIVLOOPHERE6
CLR A
XCHA,R5
MOV R3,A
CLR A
XCHA,R4
CLR A
XCH A,R0
MOV R1,A
RET
;ENDDIV
END