定时器中断案例(针对51单片机初学者)

一、案例要求:

运用定时器T0实现8个LED亮1s、灭1s不断循环,要求T0使用工作方式0,并且要用到定时器0的中断。

二、案例代码:


#include <reg51.h>	  //包含89C51相关的头文件 
  

unsigned int count ;  //定义全局变量count记录溢出次数
 

//主函数
void main()
{
	
  TMOD=0x00;      //模式为13位计数器
  TH0=(8192-5000)/32;
  TL0=(8192-5000)%32;        
  TR0=1;          //打开定时器0
  ET0=1;          //允许定时器0中断
  EA=1;           //打开总中断
  while(1);
}
 
//定时器0的中断服务函数
void Timer0() interrupt 1
{ 
	TH0=(8192-5000)/32;
	TL0=(8192-5000)%32;     //重新装载计数器的初值
	count++;                //每中断1次,count值加1
	
	if(count==200)          //中断200次说明定时了1S
	{
		P1=~P1;             //P1端口电平翻转
		count=0;            //计数归零重新开始计数
	}
	
}

三、案例仿真:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值