📄 秒钟0.a51
字号:
ORG 0000H
BEGIN: LJMP INIT
ORG 0003H ;INT0
RETI
ORG 000BH ;T0 INT
T0: LJMP T0INTSR
RETI
ORG 0013H ;1NT1
RETI
ORG 001BH ;T1 INT
RETI
ORG 0023H ;S PORT INT
RETI
ORG 002BH ;T2 INT
RETI
ORG 0030H
;=====================================================
;8032 RAM 00H--FFH CLEAR 0
INIT:
MOV R0,#0FFH
MOV A, #00H
CLE0FFH:
MOV @R0,A
DJNZ R0,CLE0FFH
;SET STACK AREA 70H--7FH
MOV SP,#70H
;TIMER INIT
MOV TMOD,#01H
MOV TL0,#0FCH ;2 E+16 = 65536 = 55536 + 10000(0.05S)
MOV TH0,#0D8H ;D8F0H=55536
;ENABLE INTERRUPT
SETB EA
SETB ET0
;START UP T0
SETB TR0
;SYSTEM NORMAL ,IDENTIFIER "0.0"
MOV PSW,#00H
;====================================================================
ENTRK1: NOP
LCALL TICHANG;DISPLAY CHARACTER CHANGE
LCALL DISPLAY;DISPLAY SUBRUTIN
SJMP ENTRK1
;====================================================================
; 2. TICHANG......TIME DATA CHARACTER CHANGE
; 4. DISPLAY......DISPLAY SUBRUTIN
; 6. DELAY60......DELAY 60mS
; 7. DCCHANG......DISPLAY CHARACTER CHANGE
;--------------------------------------------------------------------
;2.------------------------------------------------------------------
;TICHANG
; TIME DATA CHARACTER CHANGE
; 2. RAM BIT 00H --PRESS TIMESET KEY FLAG 1=PRESSED, 0=NOT
;
;--------------------------------------------------------------------
TICHANG:NOP
MOV R7,#4
MOV R0,#6FH
MOV R1,#33H
TCHANG0:MOV A,@R1
LCALL DCCHANG ;DISPLAY CHARACTER CHANGE
CPL A
MOV @R0,A
DEC R0
DEC R1
DJNZ R7,TCHANG0
TICHOUT:NOP
RET
;--------------------------------------------------------------------
;4.------------------------------------------------------------------
;DISPLAY:
; DISPLAY SUBRUTIN
;
; RAM:6FH CLOCK HORE 10 BIT
; 6EH CLOCK HORE 1 BIT
; 6DH CLOCK MIN 10 BIT
; 6CH CLOCK MIN 1 BIT
;
;--------------------------------------------------------------------
DISPLAY:NOP
SETB P1.3
MOV P0,6FH
CLR P1.0
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60MS
SETB P1.0
MOV P0,6EH
CLR P1.1
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60mS
SETB P1.1
MOV P0,6DH
CLR P1.2
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60MS
SETB P1.2
MOV P0,6CH
CLR P1.3
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60MS
SETB P1.4
SETB P1.7
SETB P1.6
SETB P1.5
RET
;--------------------------------------------------------------------
;--------------------------------------------------------------------
;6.------------------------------------------------------------------
;DELAY60:
; DELAY 100mS FOR NEXT RANGING
;--------------------------------------------------------------------
DELAY60:PUSH PSW
MOV PSW,#00H
MOV R3,#6 ;#10 0.5ms * 10 = 5ms 1997-9-3
W60MS: MOV R4,#0FAH ;0FAH =250
W500US1:DJNZ R4,W500US1 ;TIME = 2US 2 US * 250 = 0.5 MS
DJNZ R3,W60MS
POP PSW
RET
;-------------------------------------------------------------------
;7.------------------------------------------------------------------
;DCCHANG:
; DISPLAY CHARACTERS CHANGE ROUTINE
; NOTE:
; 1. ENTRY A-----LOAD SETOFF
; 2. RET A-------DISPLAY CHARACTER
;--------------------------------------------------------------------
DCCHANG:MOV DPTR,#CHARAL
MOVC A,@A+DPTR
RET
;CHARACTERS LIST
CHARAL: DB 3FH,06H,5BH,4FH,66H,6DH
;SETOFF : 00H,01H,02H,03H,04H,05H,
;CHARACTERS: 0, 1, 2, 3, 4 , 5
DB 7DH,07H,7FH,6FH,77H,7CH
; 06H,07H,08H,09H,0AH,0BH,
; 6, 7, 8, 9, A, B,
DB 39H,5EH,79H,71H,73H,3EH
; 0CH,0DH,0EH,0FH,10H,11H,
; C, D, E, F, P, U,
;--------------------------------------------------------------------
;--------------------------------------------------------------------
; T0,T1 INTERRUPT SUBROUTINE
; 1. T0INTSR.......T0 INTERRUPT SERVE ROUTINE
;--------------------------------------------------------------------
;--------------------------------------------------------------------
;1.T0INTSR:
; T0 INTERRUPT SERVE ROUTINE
;
; 1. T0 IS SETED AS 0.01S TIMER(MODE 1)
; 2. T0 IS SET AS:
; TL0=F0H
; TH0=D8H B8F0H = 55536 = 65536(2 E+16) - 10000
; AFTER 50000 uS ,INTRUPT IS HAPPEN
; IN THIS STATES, T0 TIME IS 50 MS
;--------------------------------------------------------------------
T0INTSR:CLR ET0
CLR TR0
INC 30H
MOV TL0,#0FCH
MOV TH0,#0D8H
SETB TR0
SETB ET0
;5.------------------------------------------------------------------
; TIMECAL:
; TIME CALCULATE
;
; 1. RAM BIT 00H --PRESS TIMESET KEY FLAG 1=PRESSED, 0=NOT
; 2. RAM 30H T0 INTERRUPT COUNTER
; 31H CLOCK HORE 1 BIT
; 32H CLOCK MIN 10 BIT
; 33H CLOCK MIN 1 BIT
; 4. RAM:6FH CLOCK HORE 10 BIT
; 6EH CLOCK HORE 1 BIT
; 6DH CLOCK MIN 10 BIT
; 6CH CLOCK MIN 1 BIT
;--------------------------------------------------------------------
MOV A,30H ;HOUR DISPLAY FLASH
CJNE A,#10,TIMECA1 ;
TIMECA1:JNC TIMECAJ ;
TIMEOU1:LJMP TIMEOUT ;
TIMECAJ:MOV 30H,#00H ;SECONDE ADD 1
INC 31H
MOV A,31H ;
CJNE A,#10,TIMECAF ;
TIMECAF:JNC TIMECAG ;
LJMP TIMEOUT ;SECONDE ADD 1
TIMECAG:MOV 31H,#00 ;MINIUT 0X ADD 1
INC 32H ;
MOV A,32H ;
TIMEFAS:CJNE A,#10,TIMECA7 ;
TIMECA7:JNC TIMECA8 ;
LJMP TIMEOUT ;MINIUTE 0X ADD 1
TIMECA8:MOV 32H,#0 ;MINIUTE XO ADD 1
INC 33H ;
MOV A,33H ;
CJNE A,#10,TIMECA9 ;
TIMECA9:JNC TIMECAA ;
LJMP TIMEOUT ;MINIUTE X0 ADD 1
TIMECAA:MOV 33H,#0 ;HOUR 0X ADD 1
INC 34H ;
MOV A,33H ;
CJNE A,#10,TIMECAB ;
TIMECAB:JNC TIMECAC ;
LJMP TIMEOUT ;MINIUTE X0 ADD 1
TIMECAC:MOV 34H,#0 ;HOUR 0X ADD 1
TIMEOUT:NOP
RETI
;====================================================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -