标题:
单片机程序很疑惑,为什么led灯全亮了,没有进行流水
[打印本页]
作者:
liu9808
时间:
2020-4-17 16:11
标题:
单片机程序很疑惑,为什么led灯全亮了,没有进行流水
为什么led灯全亮了,没有进行流水
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define led P2
void delay(uchar i)
{
while(i--);
}
void main()
{
uchar i;
led=0x7f;
while(1)
{
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(50000);
}
}
}
复制代码
作者:
liu9808
时间:
2020-4-17 16:16
这是我之前写的下载是可以正常的,今天想写一个红外遥控控制流水的,写出来全亮,然后我新建了一个项目写了上面的代码,也是全亮,我对比看看了好久没看出来两个有啥区别,为啥一个可以一个不可以#include<reg52.h> #include<intrins.h> #define uint unsigned int #define led P2 //sbit led = P2;是错的 sbit只能定义一个引脚,P2是一个端口,#define 是宏替换,将P2口用led所替换 void delay(int i) { while(i--); } void main() { int i,y; led = 0x7f; while(1) { for (i=0;i<7;i++) { led=_cror_(led,1); delay(50000); } } }
作者:
wulin
时间:
2020-4-17 17:41
流水速度太快,视觉全亮,数据类型用错:void delay(uchar i)改void delay(uint i)。
作者:
hbcqd
时间:
2020-4-17 18:00
本帖最后由 hbcqd 于 2020-4-17 21:07 编辑
你自己在写程序时要注明每条语句的作用,然后再来检查,是否正确与否。
例如:
#include<reg52.h> //预处理命令
#include<intrins.h> //预处理命令
#define uchar unsigned char//宏定义
#define uint unsigned int //宏定义
#define LED P2 //将P2口定义为LED后面就可以使用LED代替P2口
void delay(uint i) //无符号整型 0~65535
{
while(i--); //循环50000次
}
void main() //主程序
{
uchar i; //无符号字符类型,单字节0~255
led=0x7f; //0111 1111B ,即P2^7输出低电平 第八个LED灯亮
while(1) // 无限循环
{
for(i=0;i<7;i++) //循环7次
{
led=_cror_(led,1); //将LED右移一位
delay(50000); //大约延时450ms
}
}
}
作者:
game灬boy
时间:
2020-4-17 18:31
延时太短50ms基本分辨不出来所以看着就像全亮
作者:
tyrl800
时间:
2020-4-17 18:35
void delay(uchar i)
{
while(i--);
}改成
void delay(uint i)
{
...............
}
作者:
liu9808
时间:
2020-4-18 08:15
hbcqd 发表于 2020-4-17 18:00
你自己在写程序时要注明每条语句的作用,然后再来检查,是否正确与否。
例如:
我明白了,感谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1