编了一个流水灯的程序,程序是这样的:按下键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 编辑 ]
此帖出自
小平头技术问答
#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);
}
}
}
你再试试
一周热门 更多>