在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。
#include<reg51.h>
#include<intrins.h>
仿真图效果。
这个思路我看的明白,一直循环灯亮应该怎么写呢,c程序,
追答可定义一个无符号全局或静态变量 i, 如下所示:
unsigned char i
变量i用于点灯的计数变量。
用定时器做一个0.5秒定时程序(定时器中断例子网上可以搜索),在0.5秒定时程序中写入以下代码:
……
if (i>3) i=0 ;
switch ( i )
{
//---点亮D1,熄灭其它LED ---
case 0 :
P0=0xFE ;
break ;
//--- 点亮D2,熄灭其它LED ---
case 1 :
P0=0xFD ;
break ;
//--- 点亮D3,熄灭其它LED ---
case 2 :
P0=0xFB ;
break ;
//--- 点亮D4,熄灭其它LED ---
case 3 :
P0=0xF7 ;
break ;
}
i++ ;
……
这样采用定时中断方法,实现0.5秒循环点亮LED。利用中断的优点是代码运行效率高。如果要改变亮灯时间,修改定时时间即可。