新手求指点

2019-03-24 20:02发布

编了一个流水灯的程序,程序是这样的:按下键1,流水灯从右往左一秒亮一个灯;按下键2,流水灯从左往右一秒亮一个灯。遇到了一个小问题,我先按下键1,再按下键2,按照我编写的程序,应该是左边第一个灯先亮,但是现在用protues仿真时,它是从我按下键那个瞬间的亮灯情况往右循环。先按下键2,再按下键1也是类似的情况。请高手指点下~   程序如下:   #include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char uchar aa;
uchar bb;
sbit key1=P3^0;
sbit key2=P3^1;     void delayms(uint xms)
{
 uint i,j;
 for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}     void main()
{
 aa=0xfe;
 bb=0x7f;
 while(1)
 {
  if(key1==0)
  {
   
 delayms(10);
 P0=aa;
 delayms(1000);
 aa=_crol_(aa,1);
  
  }
  else if(key2==0)
  {
  
 delayms(10);
    P0=bb;
 delayms(1000);
 bb=_cror_(bb,1);
  
  }
 }
} [ 本帖最后由 白小白 于 2011-4-2 18:18 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
zjjone1023
1楼-- · 2019-03-26 02:06
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char



uchar aa;
uchar bb;
sbit key1=P3^0;
sbit key2=P3^1;











void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}











void main()
{
aa=0xfe;
bb=0x7f;
while(1)
{
while(key1==0)
  {
   
delayms(10);
P0=aa;
delayms(1000);
aa=_crol_(aa,1);
   
  }
while(key2==0)
  {
   
delayms(10);
    P0=bb;
delayms(1000);
bb=_cror_(bb,1);
   
  }
}
}
你再试试
zjjone1023
2楼-- · 2019-03-26 04:37
我也是新手,希望能一起学习共同进步,呵
白小白
3楼-- · 2019-03-26 08:22
 精彩回答 2  元偷偷看……
zjjone1023
4楼-- · 2019-03-26 11:37
不会吧,我用自己的开发板试的可以了啊,呵呵
仿真我就不太清楚了,没有帮上忙,呵呵
ddllxxrr
5楼-- · 2019-03-26 14:41
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char



uchar aa;
uchar bb;
sbit key1=P3^0;
sbit key2=P3^1;











void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}











void main()
{
aa=0xfe;
bb=0x7f;
while(1)
{
  if(key1==0)
  {
   
delayms(10);
delayms(1000);
aa=_crol_(aa,1);
   
  }
  else if(key2==0)
  {
   
delayms(10);
    P0=bb;
delayms(1000);
bb=_cror_(bb,1);
   
  }
}
}

ddllxxrr2.JPG

[ 本帖最后由 ddllxxrr 于 2011-4-2 20:44 编辑 ]
常见泽1
6楼-- · 2019-03-26 18:03
先按下K1 然后按K2 是从左面那个灯开始往右啊 我用你的编译仿真是可以的呢

一周热门 更多>