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

发布日期:2022-11-28
单片机定时器中断实现长时间定时程序

电工优优今天要和大家分享的单片机定时器中断实现长时间定时程序相关信息,接下来我将从单片机定时器中断程序,51单片机定时器中断,单片机定时器中断原理这几个方面来介绍。

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

#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位重新赋初值

 }

以上就是"电工优优"为大家介绍的单片机定时器中断程序的相关信息,想了解更多"单片机定时器中断实现长时间定时程序,单片机定时器中断程序,51单片机定时器中断,单片机定时器中断原理"相关知识,请收藏电工无忧吧。