|
感謝您的回復(fù),合并后當(dāng)按鍵按第二次后就一直執(zhí)行case 2: y=8; break;再按下按鍵卻不能執(zhí)行后面的程序了,能否幫忙檢查一下錯(cuò)誤呢?
#include <stc8.h>
sbit K=P5^5;
sbit GREEN = P3^1;//紅光控制端,0點(diǎn)亮
sbit RED = P3^2;//綠光控制端,0點(diǎn)亮
sbit BLUE = P3^3;//藍(lán)光控制端,0點(diǎn)亮
unsigned char y=0;
//void Delays(unsigned int t);
void RGB(unsigned char R ,unsigned char G ,unsigned char B);
void delay (unsigned int i)
{
unsigned int k,m;
for(m=0;m<9000;m++);
for(k=0;k<i;k++);
}
void fuxi()
{
if(y==0)
{
P3=0x00;
}
if(y==1)
{
P3=0x02;
}
if(y==2)
{
P3=0x04;
}
if(y==3)
{
P3=0x08;
}
if(y==4)
{
P3=0x06;
}
if(y==5)
{
P3=0x0a;
}
if(y==6)
{
P3=0x0c;
}
if(y==7)
{
P3=0x0e;
}
if(y==8)
{
RGB(1,0,0);
RGB(0,1,0);
RGB(0,0,1);
RGB(0,1,1);
RGB(1,1,0);
RGB(1,0,1);
RGB(1,1,1);
RGB(0,0,0);
}
}
void key()
{
unsigned char x;
if(K==0)
{
delay(50);
if(K==0)
{
while(!K);
x++;
if(x==9)
x=1;
if(y==9)
x=1;
switch(x)
{
case 1: y=1; break;
case 2: y=8; break;
case 3: y=3; break;
case 4: y=4; break;
case 5: y=5; break;
case 6: y=6; break;
case 7: y=7; break;
case 8: y=2; break;
default: break;
}
}
}
}
void port_mode()
{
P3M1=0X00;P3M0=0X00;P5M1=0X00;P5M0=0X00;
}
void main()
{
unsigned char i=0;
RED = 0 ; GREEN = 0 ; BLUE = 0 ;
port_mode();
P5=0XE0;
P3=0X00;
while(1)
{
key();
fuxi();
}
}
void Delays(unsigned int t)
{
while(--t);
}
void RGB(unsigned char R ,unsigned char G ,unsigned char B)
{
unsigned int pwm , set = 2000 ;
for(pwm=1;pwm<set;pwm++)//漸亮
{
RED = 0; //熄滅LED
GREEN = 0;
BLUE = 0;
Delays(set-pwm);//延時(shí)長度
RED = R;
GREEN = G;
BLUE = B;
Delays(pwm);//延時(shí)長度
}
for(pwm=set-1;pwm>0;pwm--)//漸暗
{
RED = 0; //熄滅LED
GREEN = 0;
BLUE = 0;
Delays(set-pwm);//延時(shí)長度
RED = R;
GREEN = G;
BLUE = B;
Delays(pwm);//延時(shí)長度
}
} |
|