51单片机实例6——用定时器T0中断控制1位LED秒闪烁

用定时器T0中断控制1位LED秒闪烁

1、设计目的

        用定时器T0中断控制1位LED秒闪烁

2、仿真电路

 

3、程序设计(C语言)

#include<reg51.h>
#include<math.h>
sbit led=P1^0;  //定义P1.0为led接口
int t0_num=0;  //定义T0中断响应次数
/****************************************
函数功能:定时器T0的初始值设置
*****************************************/
void t0_init_value(int t)
{
	TH0=((int) (pow(2,16)-t*pow(10,-3)*12*pow(10,6)/12))/256; 
	TL0=((int) (pow(2,16)-t*pow(10,-3)*12*pow(10,6)/12))%256;  //设置定时器初值
}
/****************************************
函数功能:定时器T0的定时初始化
*****************************************/
void t0_init(int t)
{
	TMOD=0x01;  //设置T0工作于定时工作方式1
	t0_init_value(t);
	IE=0x00;	//禁止中断
	ET0=1;	//开启T0溢出中断
	EA=1;	//开启总中断
	TR0=1;	//启动T0
}
/****************************************
函数功能:定时器T0的中断服务子程序,1s定时闪烁
*****************************************/
void second_1s() interrupt 1
{
	TH0=15536/256; 
	TL0=15536%256;  //设置定时器初值
	if(t0_num==20)
	{
		led=~led;		//led闪烁
		t0_num=0;		//1s定时结束,重置中断次数计数
	}
	else
		t0_num++;		//中断次数计数
}
/****************************************
函数功能:主函数
*****************************************/
void main()
{
	led=1;  //led初始状态熄灭
	t0_init(50);	//调用定时初始化函数
	while(1);	//持续运行
}

4、补充知识

  • 0
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LAI-BF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值