P2_7是开关
思路是这样的,不按开关流水灯一盏一盏地跳,按一下后流水灯隔个一盏跳,再按又是一盏一盏跳这样循环。然后问题就出在key和set_out,幸幸苦苦编的程序,按下按键后没有反应,仍然是一盏一盏跳,按与不按没有区别!然后试着将key()带入到while(r==0)程序里面,运行后直接第一盏灯亮一下,然后所有灯不亮了,调试了N次了无解,跪求各位大佬帮忙看看,感觉就是key()程序有问题
#include "reg51.h"
sbit P2_7=P2^7;
unsigned char r;
unsigned int a,b,temp;
void delay(char p)
{
unsigned char i,j;
for(i=0;i<p;i++)
for(j=0;j<50;j++);
}
void key()
{
if(P2_7==0)
{
delay(20);
if(P2_7==0)
{
r++;
if(r>1)
r=0;
while(!P2_7);
}
}
}
void set_out()
{
key();
temp=0x01;
while(r==0)
{
P1=temp;
if(temp==0x80)
temp=0x01;
else
temp=(temp<<=1);
for (a=0;a<1000;a++)
for (b=0;b<100;b++);
}
while(r==1)
{
P1=temp;
if(temp==0x80)
temp=0x01;
else
temp=(temp<<=2);
for (a=0;a<1000;a++)
for (b=0;b<100;b++);
}
}
思路是这样的,不按开关流水灯一盏一盏地跳,按一下后流水灯隔个一盏跳,再按又是一盏一盏跳这样循环。然后问题就出在key和set_out,幸幸苦苦编的程序,按下按键后没有反应,仍然是一盏一盏跳,按与不按没有区别!然后试着将key()带入到while(r==0)程序里面,运行后直接第一盏灯亮一下,然后所有灯不亮了,调试了N次了无解,跪求各位大佬帮忙看看,感觉就是key()程序有问题
#include "reg51.h"
sbit P2_7=P2^7;
unsigned char r;
unsigned int a,b,temp;
void delay(char p)
{
unsigned char i,j;
for(i=0;i<p;i++)
for(j=0;j<50;j++);
}
void key()
{
if(P2_7==0)
{
delay(20);
if(P2_7==0)
{
r++;
if(r>1)
r=0;
while(!P2_7);
}
}
}
void set_out()
{
key();
temp=0x01;
while(r==0)
{
P1=temp;
if(temp==0x80)
temp=0x01;
else
temp=(temp<<=1);
for (a=0;a<1000;a++)
for (b=0;b<100;b++);
}
while(r==1)
{
P1=temp;
if(temp==0x80)
temp=0x01;
else
temp=(temp<<=2);
for (a=0;a<1000;a++)
for (b=0;b<100;b++);
}
}