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

该博客介绍了如何使用51单片机的定时器T0实现中断方式的长时间定时程序。通过设置定时器T0的模式2,计算合适的初值,并在中断服务程序中进行计数,当计数达到20次时,翻转P2.0引脚状态,从而每秒改变一次输出。同时,详细展示了代码实现过程,有助于单片机初学者理解定时器中断的应用。
摘要由CSDN通过智能技术生成

9a68eae914bce2912b9e014374e548a1.gif

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

#include // 包含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位重新赋初值

}

94ba30cf4da3d1c8f3b437e6564ab69e.png

0e1e79e33005f5330212f08a1874341e.png

为了方便大家更好的学习,畅学电子网特别增加了针对单片机和EDA的公众号,每天推送相关知识,希望能对你的学习有所帮助!

3e2f3c0834ad869dffb858274b89de9f.png

824cf5b892b1e1fd3b350575cf3a21be.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值