单片机初学者的一个小问题,求帮帮忙啊!!!
#include"reg51.h"#include"intrins.h"unsignedcharkey=0;typedefunsignedintu16;typedefun...
#include"reg51.h"
#include"intrins.h"
unsigned char key=0;
typedef unsigned int u16;
typedef unsigned char u8;
sbit led=P2;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
void delay(u16 i)
{
while(i--);
}
void moshi1()
{
u8 i;
led=0xfe;
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
}
}
void moshi2()
{
u8 i;
led=0x7f;
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(50000);
}
}
void moshi3()
{
u8 i;
led=0xaa;
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
}
}
int anjian()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
key=~key;
return 1;
}
}
if(k2==0)
{
delay(1000);
if(k2==0)
{
key=~key;
return 2;
}
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
key=~key;
return 3;
}
}
}
void main()
{
while(1)
{
int m;
m=anjian();
if(key)
switch(m)
{
case(1):moshi1();break;
case(2):moshi2();break;
case(3):moshi3();break;
}
}
}
为什么下载完程序按3.0 3.1 3.2键都没反应 展开
#include"intrins.h"
unsigned char key=0;
typedef unsigned int u16;
typedef unsigned char u8;
sbit led=P2;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
void delay(u16 i)
{
while(i--);
}
void moshi1()
{
u8 i;
led=0xfe;
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
}
}
void moshi2()
{
u8 i;
led=0x7f;
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(50000);
}
}
void moshi3()
{
u8 i;
led=0xaa;
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
}
}
int anjian()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
key=~key;
return 1;
}
}
if(k2==0)
{
delay(1000);
if(k2==0)
{
key=~key;
return 2;
}
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
key=~key;
return 3;
}
}
}
void main()
{
while(1)
{
int m;
m=anjian();
if(key)
switch(m)
{
case(1):moshi1();break;
case(2):moshi2();break;
case(3):moshi3();break;
}
}
}
为什么下载完程序按3.0 3.1 3.2键都没反应 展开
1个回答
展开全部
程序修改如下:
#include"reg51.h"
#include"intrins.h"
unsigned char key=0;
typedef unsigned int u16;
typedef unsigned char u8;
sfr led=P2;//这里是错误的,应该是sfr
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
void delay(u16 i)
{
while(i--);
}
void moshi1()
{
u8 i;
led=0xfe;
key=0;
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
}
}
void moshi2()
{
u8 i;
led=0x7f;
key=0;
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(50000);
}
}
void moshi3()
{
u8 i;
led=0xaa;
key=0;
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
}
}
int anjian()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
key=~key;
return 1;
}
}
if(k2==0)
{
delay(1000);
if(k2==0)
{
key=~key;
return 2;
}
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
key=~key;
return 3;
}
}
}
void main()
{
int m;
while(1)
{
m=anjian();
if(key)
switch(m)
{
case 1:moshi1();break;
case 2:moshi2();break;
case 3:moshi3();break;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询