HC89S003F4 development board ASM write Timer 1
First, the implementation process
1, the external register set
- XSFR and extended using the same access method XRAM, using MOVX A, @DPTR and MOVX @DPTR, A to read and write.
WDTCCR EQU 0FEA0H
CLR A
MOV DPTR,#WDTCCR
MOVX @DPTR,A ; 关闭看门狗
2, set the timer 1
- Timer calculation
- Formula: 65536 - ((1/1000) / (1 / (Fosc / Timer division factor)))
- Fosc = 16000000, Timer division factor = 12
- Backstepping value obtained 0xFACB
EA BIT 0A8H.7
TCON DATA 088H
IE DATA 0A8H
TL1 DATA 08BH
TH1 DATA 08DH
TMOD DATA 089H
TCON1 EQU 0FE80H
CLR A
MOV DPTR,#TCON1
MOVX @DPTR,A
MOV TMOD,A
MOV TH1,#0FAH
MOV TL1,#0CBH
ORL IE,#08H
ORL TCON,#040H
SETB EA
3, positioning program address
As a former program 80H interrupt vector address needs to be skipped, and used to add T1 interrupt transfer
ORG 00H
AJMP MAIN
ORG 01BH
AJMP TIME1
ORG 80H
Second, the complete program
- @ Achieve results: led flashes
$NOMOD51
P0_0 BIT 080H.0
EA BIT 0A8H.7
TCON DATA 088H
IE DATA 0A8H
TL1 DATA 08BH
TH1 DATA 08DH
TMOD DATA 089H
CLKSWR DATA 08EH
WDTCCR EQU 0FEA0H
CLKDIV EQU 0FE91H
TCON1 EQU 0FE80H
P0M0 EQU 0FF00H
ORG 00H
AJMP MAIN
ORG 01BH
AJMP TIME1
ORG 80H
MAIN:
USING 0
MOV R0, #00H
CLR A
MOV DPTR,#WDTCCR
MOVX @DPTR,A
MOV CLKSWR,#051H
MOV DPTR,#CLKDIV
INC A
MOVX @DPTR,A
MOV DPTR,#P0M0
MOVX A,@DPTR
ANL A,#0F0H
ORL A,#08H
MOVX @DPTR,A
CLR A
MOV DPTR,#TCON1
MOVX @DPTR,A
MOV TMOD,A
MOV TH1,#0FAH
MOV TL1,#0CBH
ORL IE,#08H
ORL TCON,#040H
SETB EA
DELAY:
SJMP DELAY
TIME1:
USING 0
CJNE R0, #0C8H, exit
CPL P0_0
MOV R0, #00H
exit:
INC R0
RETI
END