实例功能 在上两个实例中,我们是通过延时程序控制发光二极管的定时亮灭,现在回想起来,这样做不是很恰当,为什么呢
首先,用延时程序作定时并不精确,程序的指令中还包含其他的判断指令,定时时间不能精确地控制;其次,主程序中做了循环延时,就不能进行其他程序功能的设计
单片机之所以在工业控制中有大量的应用,就是在于它有其独特的定时、计数功能
在本例中,用定时器来实现灯的闪烁功能的设计
本例在3 个功能模块描述如下: 单片机系统:产生1s 的定时中断
外围电路:通过驱动芯片实现单片机I/O 口对4 个发光二极管的驱动
51 程序:完成单片机定时器编程1s 定时的例程
本例的目的在于希望读者在读完本例后,能完成相关的电路设计,并掌握如下的知识点内容:了解单片机定时器,掌握定时器的中断原理
//定义头文件和各个输入脚以及变量声明 # include # includee # define unit unsigned int # define uchar uhsigned char sbit L0=P2^0; sbit L1=P2^1; sbit L2=P2^2; sbit L3=P2^3; uchar data BUFFER[1]={0};//定时器计数变量 void main(void) { P2=0x0f; EA=1; IT1=1; ET0=1 TMOD=0x01; TH0=-5000/256; TL0=-5000%256; TR0=1; for(;;); } //定时计数器0 的中断服务子程序 void timer0(void)interrupt 1using 1 { TH0=-5000/256; TL0=-5000%256; BUFFER[0]=BUFFER[0]+1; If(BUFFER[0]= =100) { L3=
L3; L2=
L2; L1=
L1; L0