开发和应用基于Proteus开发的51系列单片机仿真实例(五十八),重点研究定时器/计数器T1的定时实现
发布时间
阅读量:
阅读量
1、本例通过定时器1的定时中断功能,控制两个LED灯以不同的频率进行闪烁。
2、实现方式:为定时器T1配置合适的初始值,从而实现50毫秒的定时中断。由于需要分别控制两个LED灯以不同频率闪烁,因此需设置两个变量用于记录各自的中断次数。
3、在keil c51中创建新工程ex46,并编写以下程序代码,完成编译后生成ex46.hex文件。
#include <reg51.h> //引入头文件
sbit LED1=P1^0; //定义端口位
sbit LED2=P1^1;
unsigned char counter1,counter2; //定义全局变量,用于记录定时器的中断溢出次数
//主函数部分
void main(void)
{
EA = 1; //开启总中断
ET1 = 1; //允许定时器T1中断
TMOD = 0x10; //设定定时器的工作模式
TH0 = (65536-46083)/256; //为定时器赋初始值
TL0 = (65536-46083)%256;
TR1 = 1; //启动定时器
LED1 = 1; //关闭LED灯
LED2 = 1;
counter1 = 0; //初始化中断计数值为0
counter2 = 0;
while(1)
{
}
}
//定时器T1的中断服务函数,
全部评论 (0)
还没有任何评论哟~
