开始LED灯在最右侧亮,为什么按K1按键LED灯不会向右移动(普中MS开发板)
代码如下:
#include <reg51.h>
#include <intrins.h>
#define GPIO_LED P2
sbit K1=P3^1;
void Delay10ms();
void main(void)
{
unsigned int i,j;
i=0;
j=0xfe;
while(1)
{
GPIO_LED=j;
if(K1==0)
{
Delay10ms();
if(K1==0)
{
j=_cror_(j,1);
while((i<50)&&(K1==0))
{
Delay10ms();
i++;
}
}
}
}
}
void Delay10ms(void)
{
unsigned char a,b,c;
for(a=1;a>0;a--)
for(b=38;b>0;b--)
for(c=130;c>0;c--);
}
把代码贴上来,方便修改。
这么改,供参考:
#include <reg51.h>
#include <intrins.h>
#define GPIO_LED P2
sbit K1=P3^1;
void Delay10ms();
void main(void)
{
unsigned int i;
i=0;
GPIO_LED = 0xfe;//p2口初始值,假如是低电位点亮led,看你的实际电路情况
while(1)
{
if(K1==0)
{
Delay10ms();//延时消抖
if(K1==0)
{
i = !i; //按一次按键,状态翻转一次
while(!K1);
}
}
switch(i){
case 1:
GPIO_LED =_cror_(GPIO_LED,1);
Delay10ms();
break;
case 0:
GPIO_LED = 0xfe;
Delay10ms();
break;
}
}
}
void Delay10ms(void)
{
unsigned char a,b,c;
for(a=1;a>0;a--)
for(b=38;b>0;b--)
for(c=130;c>0;c--);
}
那个_cror的函数定义是怎样的
不知道你这个问题是否已经解决, 如果还没有解决的话:#include <REGX52.H>
void main(){
while(1){
if(P3_1==0){
P2_0=0;
}
else{
P2_0=1;
}
}
}
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while (xms){
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main(){
while(1){
if(P3_1==0){
Delay(20);
while(P3_1==0);
Delay(20);
P2_0=~P2_0;
}
}
}