实现定时器定时 1 秒钟,LED 亮灭显示
要求
每隔一秒钟,实现LED灯的显隐转换
实验代码
/************************************************************************************** * 定时器1中断实验 * 实现现象:实现定时器定时 1 秒钟,LED 亮灭显示 注意事项: ***************************************************************************************/ #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit led = P2^0; /******************************************************************************* * 函 数 名 : Timer1Init * 函数功能 : 定时器1初始化 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Timer1Init() { TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。 TH1=0XFC; //给定时器赋初值,定时1ms TL1=0X18; ET1=1;//打开定时器1中断允许 EA=1;//打开总中断 TR1=1;//打开定时器 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { Timer1Init(); //定时器1初始化 while(1); } /******************************************************************************* * 函 数 名 : void Timer1() interrupt 3 * 函数功能 : 定时器0中断函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Timer1() interrupt 3 { static u16 i; TH1=0XFC; //给定时器赋初值,定时1ms TL1=0X18; i++; if(i==1000) { led = ~led; i=0; } }