定时器这家伙在哪里都会用到,实际工程开发中没有能离开定时器的。所以掌握定时器就尤为重要了,这里主要提到的是最基本的使用了--用于定时。
LED原理图见《51单片机--流水灯演示》,定时器没有原理图,属于单片机内部资源。
代码如下:
#include //头文件
#include
#define uint unsigned int //宏定义
uint jishuNumber,aa; //定义jishuNumber为计数器计满次数(本程序20次为1S) aa代表流水号
void main() //主函数入口
{
aa=0xfe; //初始化为点亮第一个LED灯
P1=aa;
//定时器T0方式1初始化(其它通用)
TMOD=0x01; //①TMOD赋值,以确定T0/T1的工作方式
TH0=(65536-46080)/256; //②计算初值,并将初始化值写入TH0/TL0
TL0=(65536-46080)%6;
EA=1; //③开放相应中断
ET0=1; //④TR0/TR1置位,启动相应定时器/计数器
TR0=1;
while(1)
{
if(jishuNumber==20) //如果1S
{
jishuNumber=0;
aa=_crol_(aa,1); //把aa左旋之后赋值给aa
P1=aa; //流水灯点亮
}
}
}
void T0_time_no1() interrupt 1 //中断服务程序
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%6;
jishuNumber++; //计满一次加1
}
以上,结束。