标题: 原本是想一按键就会有流水灯的效果,一松手就没有任何反应的,可是现在一按却只有... [打印本页]

作者: 天命难违    时间: 2015-3-11 20:50
标题: 原本是想一按键就会有流水灯的效果,一松手就没有任何反应的,可是现在一按却只有...
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4;
void delay(uint z);
void main()
{
while(1)
  {
   if(key1==0)
   {
    P1=0xfe;
    P1=_crol_(P1,1);
    delay(1000);
   }
    else
    P1=0xff;
  }
     
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=120;y>0;y--);
}



原本是想一按键就会有流水灯的效果,一松手就没有任何反应的,可是现在一按却只有第二个灯亮,松手就不亮了,请问这样要怎么该才能有想要的效果,谢谢了

作者: dingmingzhou    时间: 2015-3-11 22:45
你把P1=oxfe语句调到if语句上面试试?
作者: liaolinhui    时间: 2015-3-15 18:36
if(key1==0)
   {
    P1=0xfe;
    P1=_crol_(P1,1);
    delay(1000);
   }
这里不能直接用P1进行移位,需要有个中间变量
比如
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar a=0xfe;
sbit key1=P3^4;
void delay(uint z);
void main()
{
while(1)
  {
   if(key1==0)
   {P1=a
    a=_crol_(a,1);
    delay(1000);
   }
    else
    P1=0xff;
  }
     
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=120;y>0;y--);
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1