r8051xc2定时器2的用法

T2CON----定时器2控制寄存器

t2con.7---t2ps:时钟的选择

                     0:定时器2的clocked是1/12的振荡器频率

                     1:定时器2的clocked是1/24的振荡器频率

t2con.6---3fr :外部中断int3的活跃选择(也用来比较和获取信号)

                       0 :falling edge  
                       1 :rising edge

t2con.5---i2fr:外部中断int2的活跃选择(也用来比较和获取信号)

                       0 :falling edge  
                       1 :rising edge

t2con.4---t2r1:定时器2的加载模式选择

t2con.3---t2r0:定时器2的加载模式选择

                       0X – reload disabled 
                       10 – Mode 0  
                       11 – Mode 1

t2con.2---t2cm:定时器2的比较模式选择

                       0 – Mode 0 
                       1 – Mode 1

t2con.1 ---t2i1:timer2的输入选择

t2con.0---t2i0:timer2的输入选择

t2i1:t2i0

0:0   timer 2 stopped

0:1   输入频率f/12或者f/24

1:0   通过检测T2口的下降沿来增加定时器2

1:1   由外部脚t2输入频率f/12或者f/24

复制代码
/*
  程序用途:timer2自动填装控制
  版本号:  V1 
  创建日期:2013.9.22
  创建者:
*/
$NOMOD51
#include"REG8F301.INC"

dseg        at        30h
iseg        at        80h
cseg        at        00h
    org        0000H
    jmp        start
    org        002bh
    jmp        Timer2_Isr
start:
    mov        ckcon,#50h
    mov        r0,#0x7f
ClrRam:
    mov        @r0,#0
    djnz        r0,ClrRam
    
    mov        dptr,#0x00
ClrOutRam:
    mov        a,#0x00
    movx        @dptr,a
    inc        dpl
    mov        a,dpl
    cjne        a,#0,ClrOutRam
    inc        dph
    mov        a,dph
    cjne        a,#3,ClrOutRam
SetTimer2:
    mov        tl2,#00h
    mov        th2,#00h
    mov        crch,th2
    mov        crcl,tl2
    mov        T2con,#11h     //选择模式0自动加载,选择f/12分频
    setb        ET2
    setb        EA
main:
     ljmp        main
Timer2_Isr:
    push        acc
    push        psw
    nop
    nop
    pop        psw
    pop        acc

    END                
/*
  总结:
      1.将crch,crcl里的值自动填充到tl2与th2
    2.crcl加到0xFF时crch加1,crch溢出时产生中断,并自动填充
*/
复制代码

没有更多推荐了,返回首页