如何用2个按键实现2种灯光效果的转换
时间:10-02
整理:3721RD
点击:
如题,小弟今年准备毕业 学的是电子信息工程 尝试用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);*/
一开始从左往右 按了一下就从右至左。用的是中断实现
我现在向用另外一个按键来实现第三种效果 不知道该怎么编写
下面附上源程序 求帮忙
#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);*/
第三种效果是从两边向中间逐个点亮 谢谢
可以从硬件电路上改进,比如两个开关都接中断口,同时又分别接两个io口,触发中断后,再检测按的是哪个开关,实现对应效果。
比如说从中间向两边散,再由两边向中心聚
int1() interrupt 1//外部中断1服务子程序
{
uchar a=0xfe,b=0xfe,c=0x7f,q;
for(q=0;q<8;q++)
{
P0=a;
P2=c;
c=_crol_(c,1);
c=_cror_(c,1);
delay(50);
}
P2=0xff;
P0=0xff;
for(q=0;q<8;q++)
{
P0=c;
P2=a;
a=_crorr_(c,1);
c=_crol_(c,1);
delay(50);
}
P2=0xff;
P0=0xff;
}
PCB打样找华强 http://www.hqpcb.com 样板2天出货
说明哦,我不知道你的灯啥顺序的,顺序不对的话把a与c,_cror_与_crol_换换就好了
说明哦,我不知道你的灯啥顺序的,顺序不对的话把a与c,_cror_与_crol_换换就好了
像楼上说的,io口和中断口搭配可以实现n中顺序