单片机定时器中断实现长时间定时程序

#include<reg51.h>  //  包含51单片机寄存器定义的头文件

sbit D1=P2^0;  //将D1位定义为P2.0引脚

unsigned char Countor;   //设置全局变量,储存定时器T0中断次数

/**************************************************************

函数功能:主函数

**************************************************************/

void main(void)

{

   EA=1;     //开总中断

 ET0=1;     //定时器T0中断允许        

 TMOD=0x01;    //使用定时器T0的模式2

 TH0=(65536-46083)/256; //定时器T0的高8位赋初值

 TL0=(65536-46083)%256; //定时器T0的高8位赋初值

 TR0=1;      //启动定时器T0

 Countor=0;    //从0开始累计中断次数

 while(1)    //无限循环等待中断

       ;

 }

/**************************************************************

函数功能:定时器T0的中断服务程序

**************************************************************/

void Time0(void) interrupt 1 using 0    //“interrupt”声明函数为中断服务函数,其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

 {

   Countor++;   //中断次数自加1

 if(Countor==20)   //若累计满20次,即计时满1s

 {

    D1=~D1;     //按位取反操作,将P2.0引脚输出电平取反

  Countor=0;  //将Countor清0,重新从0开始计数

 }

   TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

 TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值

 }

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查