C语言编程(定时器50ms)

Python012

C语言编程(定时器50ms),第1张

#include“reg52.h”  //头文件,包含各种寄存器定义及函数库

time0()      interrupt 1        using 0

{

    TH0=0x3CTLO=0xB0

    P1_0=~P1_0

}

main()

{

      TMOD=0x01TH0=0x3CTLO=0xB0

//12MHz下,50ms定时所对应的初值

      EA=1ET0=1TRO=1

      while(1)

      {

        }

}

单片机定时中断C语言的写法步骤》由会员分享,可在线阅读,更多相关《51单片机定时中断C语言的写法步骤(2页珍藏版)》请在人人文库网上搜索。

1、51单片机定时中断C语言的写法步骤程序说明:51单片机定时器0工作于方式一,定时50ms中断一次晶振为12M#includevoid mainTOMD = 0X01;/配置定时器0工作于方式一TH1 = (65536-50000)/256/高八位装入初值TL1 = (65536-50000)%256/低八位装入初值ET0 = 1/开定时器0中断EA = 1/开总中断TR0 = 1/启动定时器0while(1);void Timer0_int() interrupt 1/重新装初值TH1 = (65536-50000)/256/高八位装入初值TL1 = (65536-50000)%256/低八位装入初值 /*/上面是比较好理解的。如果实在要求简洁的话,看下面的,跟上面功能一样#includevoid mainTOMD = 0X01;/配置定时器0工作于方式一TH1 = 0x3c/高八位装入初值TL1 = 0xb0/低八位装入初值IE = 0x82/开总中断并开定时器0中断TR0 = 1/启动定时器0while(1);void Timer0_int() interrupt 1/重新装初值TH1 = 0x3c/高八位装入初值TL1 = 0xb0/低八位装入初值。

假设你用的晶振为12m,用p1.0口输出周期为2ms的方波。使用定时器工作方式1.

至于计数初值的计算,授之以鱼不如授之以渔!

在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12m晶振,则定时器的计数频率为1mhz。假设定时时间为t,机器周期为t1,即12/晶振频率。x为定时器初值。则

x=2^n-t/t1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8

自己算去吧!

#include

void

inittimer0(void)//

{

tmod

=

0x01

th0

=

0x0fc

//计数器初值

tl0

=

0x18

ea

=

1

et0

=

1

tr0

=

1//开启定时器t0

}

void

main(void)

{

inittimer0()

}

void

timer0interrupt(void)

interrupt

1

{

th0

=

0x0fc//重新赋初值

tl0

=

0x18

p1.0=~p1.0

//输出方波

}