概述
1、本例使用定时器T0的定时中断来控制P1.0端口的LED闪烁,定时周期为100MS,LED点亮50MS,熄灭50ms。
2、实现方法:首先将定时器设置为定时方式,然后选择工作方式,在使用定时中断前要先打开总中断,然后再打开定时中断。定时的初值根据计算好的值进行设置,在定时中断中还要重新装载定时初值。
3、在keil c51中新建工程ex45,编写如下程序代码,编译并生成ex45.hex文件
#include <reg51.h> //包含头文件
sbit LED=P1^0; //端口位定义
//主函数
void main(void)
{
EA = 1; //开总中断
ET0 = 1; //定时器T0中断允许
TMOD = 0x01; // 设置定时器的工作方式
TH0 = (65536-46083)/256; //定时器赋初值
TL0 = (65536-46083)%256;
TR0 = 1; //开启定时器
LED = 1; //关闭LED
while(1)
{
}
}
void main(void)
{
EA = 1; //开总中断
ET0 = 1; //定时器T0中断允许
TMOD = 0x01; // 设置定时器的工作方式
TH0 = (65536-46083)/256; //定时器赋初值
TL0 = (65536-46083)%256;
TR0 = 1; //开启定时器
LED = 1; //关闭LED
while(1)
{
}
}
//定时器0的定时中断服务函数
void Time0(void) interrupt 1 using 0
{
LED = ~LED; // 断口点评取反
TH0 = (65536-46083)/256; //定时器重新赋初值
TL0 = (65536-46083)%256;
}
void Time0(void) interrupt 1 using 0
{
LED = ~LED; // 断口点评取反
TH0 = (65536-46083)/256; //定时器重新赋初值
TL0 = (65536-46083)%256;
}
4、 在proteus中新建仿真文件ex45.dsn,电路原理图如下所示:
5、将ex45.hex文件载入at89c51中,启动仿真,按动按键,观察程序运行结果,下图是某一时刻程序运行结果
最后
以上就是勤劳水杯为你收集整理的基于proteus的51单片机仿真实例五十七、定时器/计数器T0的定时实例的全部内容,希望文章能够帮你解决基于proteus的51单片机仿真实例五十七、定时器/计数器T0的定时实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复