通过定时器控制8只LED流水灯变化速度,要求:由外部按键控制流水灯的速度。(可加速,减速) 求一个C的程序。
#include
#include
#include uchar unsigned char
#include uint unsigned int
sbit k3=p1^5; //按键调整LED的闪亮速度
sbit k2=p1^6;
sbit k1=p1^7;
bit ldelay; //长时间溢出标志
uchar speed=10; //循环速度控制
uchar code led[9]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; //预定跑马灯段码
void main(void) //主函数
{
uchar ledi; //用来控制显示顺序
TMOD=0x01;
THO=0x10; //定时器0赋初值
TLO=0X00;
EA=1; //开总中断
ETO=1; //开定时器0中断
TRO=1; //启动定时器0
while(1)
{
if(!k1) {speed=1;}
if(!k2) {speed=50;}
if(!k3) {speed=9;}
if(ldelay) //定时到,执行跑马灯
{
ldelay=0;
p0=led[ledi]; //段码送p0口
ledi++; //送下一位
if(ledi==9) //是否显示完一遍
{
ledi=0;
}
}
}
}
void timer0() interrupt 1 //定时器中断0服务子函数
{
THO=0x10; //定时器0赋初值
TLO=0x00;
if(t==speed)
{
ldelay=1; //定时时间溢出,设置标志位
}
}
这个是我自己的程序。但外部按键怎么按它速度就是不发生变化。求帮助啊。