Advertisement

开发和应用基于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)

还没有任何评论哟~