如何用2个按键实现2种灯光效果的转换

2019-07-16 01:48发布

如题,小弟今年准备毕业 学的是电子信息工程 尝试用C编写了个16个灯的流水灯+按键转换效果的程序
一开始从左往右 按了一下就从右至左。用的是中断实现
我现在向用另外一个按键来实现第三种效果 不知道该怎么编写
下面附上源程序  求帮忙



#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#include <intrins.h>
void delay(int a)
{
uint x,y;
for(x=0;x<100;x++)
for(y=0;y<a;y++);
}

void main()
{
uchar a=0xfe,b=0xfe,c=0x7f,q;
IT0=0;
EX0=1;
EA=1;
while(1)
{
for(q=0;q<8;q++)
{
    P0=a;
    a=_crol_(a,1);
    delay(50);
}
    P0=0xff;
for(q=0;q<8;q++)
{
    P2=a;
    a=_crol_(a,1);
    delay(50);
}
    P2=0xff;


/*P0=b;
delay(100);
b=_crol_(b,1);
delay(100);
P0=0xff;*/
/*P2=0xff;
P2=a;
delay(100);
a=_crol_(a,1);
delay(100);
P2=0xff;*/

}
}
int0() interrupt 0//外部中断0服务子程序
{
uchar a=0xfe,b=0xfe,c=0x7f,q;
for(q=0;q<8;q++)
{
    P2=c;
    c=_cror_(c,1);
    delay(50);
}
    P2=0xff;
for(q=0;q<8;q++)
{
    P0=c;
    c=_cror_(c,1);
    delay(50);
}
    P0=0xff;
}



/*P0=0x00;         //16个灯闪烁
P2=0x00;
delay(100);
P0=0xff;
P2=0xff;
delay(100);*/



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
欢乐罗小黑
1楼-- · 2019-07-16 06:22
第三种效果是从两边向中间逐个点亮  谢谢
小咯咯怒
2楼-- · 2019-07-16 09:25
可以从硬件电路上改进,比如两个开关都接中断口,同时又分别接两个io口,触发中断后,再检测按的是哪个开关,实现对应效果。
yuying2015
3楼-- · 2019-07-16 09:51
 精彩回答 2  元偷偷看……
yuying2015
4楼-- · 2019-07-16 12:45
说明哦,我不知道你的灯啥顺序的,顺序不对的话把a与c,_cror_与_crol_换换就好了
yuying2015
5楼-- · 2019-07-16 16:22
说明哦,我不知道你的灯啥顺序的,顺序不对的话把a与c,_cror_与_crol_换换就好了
yuying2015
6楼-- · 2019-07-16 22:11
像楼上说的,io口和中断口搭配可以实现n中顺序

一周热门 更多>