【HC89S003F4开发板】9ASM写定时器1

HC89S003F4开发板ASM写定时器1

一、实现过程

1、外部寄存器设置

image

  • 扩展 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、程序地址定位

image

程序前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
	
原文地址:https://www.cnblogs.com/yywBlogW/p/11386652.html