电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2776|回复: 0
收起左侧

单片机C语言实例-312-用定时器T0的中断实现长时间定时

[复制链接]
发表于 2022-3-26 16:57:54 | 显示全部楼层 |阅读模式
单片机C语言实例-312-用定时器T0的中断实现长时间定时

//实例46:用定时器T0的中断实现长时间定时
#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位重新赋初值
}


更多详情参考附件文档
+08:00C414联盟网5878.png
游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表