定时器0工作模式3

image

此时低8位和高八位溢出时有分别的中断

tl0占用T0

th0占用T1

两个计数器是独立的

/*

   程序功能:timer0 的验证程序

   版本:v1

   创建日期:2013.9.18

    创建者:

 */

$NOMOD51                //取消使用51内部默认SFR

#include "REG8F301.INC"

dseg    at      30h          //通用RAM字节段从30H开始



iseg    at      80h     //0-ffh地址的RAM段     80h-ffh段RAM只能用间接寻址进行操作



cseg    at      0

        org        0000h

        jmp        Start

        org        000bh

        jmp        Timer0_Isr

        org        001bh

        jmp        Timer_Isr    //TH0此时占用定时器1

        org        0030h

start:

        mov        r0,#0x7f

ClrRam:                              //清内部256Byte RAM

        mov        @r0,#0

        djnz        r0,ClrRam    

        mov        dptr,#0x00      //清外部768Byte RAM

ClrOutRam:

        mov        a,#0x00         //给外部RAM全部写0x00

        movx        @dptr,a

        inc        dpl

        mov        a,dpl

        cjne        a,#0,ClrOutRam

        inc        dph

        mov        a,dph

        cjne        a,#3,ClrOutRam 

SetTimer0:                                         

        mov        tmod,#03h            //定时器1工作于模式1

        mov        th0,#HIGH(256-100)

        mov        tl0,#LOW(256-100)

        setb        tr0                      //开启定时器0计数

        setb        et0                    //允许定时器1中断

        setb        tr1                      //开启定时器1计数

        setb        et1                    //允许定时器1中断

        setb        ea

main:    

        ljmp        main



Timer0_Isr:

    push        acc

    push        psw

    mov        tl0,#LOW(256-100)

    nop

    nop

    pop        psw

    pop        acc

    reti

Timer_Isr:

    push        acc

    push        psw

    mov        th0,#LOW(256-100)

    nop

    nop

    pop        psw

    pop        acc

    reti

    end

你可能感兴趣的:(定时器)