2017年11月29日
定时器/计时器中断LED灯闪烁程序
#include<reg52.h> //定义单片机特殊功能寄存器和位寄存器,52比51多一个定时器T2 #define uint unsigned int //宏定义 名称替换 无符号整型 #define uchar unsigned char //宏定义 名称替换 无符号字符型 uint count; //声明计数 void delay(uint z) //嵌套延时函数 { uint x,y; for(x = z;x >0;x --) for(y = 112;y > 0;y --); } void init() //初始化函数 { TMOD = 0x01; //定时器0工作方式0模式1 TH0 = 0x4b; //高八位 TL0 = 0xfd; //低八位
//计算方法:THX=(65536-N)/256,TLX=(65536-N)%256。N=t/Tcy,Tcy为机器周期单位us,t为要设的时间单位ms ET0 = 1; //开T0的中断 TR0 = 1; //开定时器0 EA = 1; //开总中断 } void main() //主函数开始 { init();//运行延时 while(1)//循环运行 { P1 = 0xff;//P1口LED灯灭 } } void TO_time() interrupt 1 { TH0 = 0x4b;//高八位 TL0 = 0xfd;//低八位 count ++; //count自加1 if(count == 4)//计四次50ms即200ms { P1 = 0;//P1口送低电平即LED灯全亮 delay(5);//延时5ms count = 0;//count计数归0 } }