【HC89S003F4开发板】9ASM写定时器1
HC89S003F4开发板ASM写定时器1
一、实现过程
1、外部寄存器设置
- 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行读写。
WDTCCR EQU 0FEA0H
CLR A
MOV DPTR,#WDTCCR
MOVX @DPTR,A ; 关闭看门狗
2、设置定时器1
- 定时器计算方法
- 公式: 65536 - ((1/1000) / (1/(Fosc / Timer分频系数)))
- Fosc=16000000,Timer分频系数=12
- 得到反推值 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、程序地址定位
程序前80H作为中断向量地址需要跳过,并且使用了T1中断需要添加转移
ORG 00H
AJMP MAIN
ORG 01BH
AJMP TIME1
ORG 80H
二、完整程序
- @实现效果:led闪烁
$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