【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
    

猜你喜欢

转载自www.cnblogs.com/yywBlogW/p/11386652.html