标题:
51单片机流水灯程序,看哪里出错了,灯全暗新手求解答
[打印本页]
作者:
inception
时间:
2015-7-13 21:37
标题:
51单片机流水灯程序,看哪里出错了,灯全暗新手求解答
51单片机流水灯程序,看哪里出错了,灯全暗
#include <reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 num)
{
u16 x,y;
for(x=num; x>0; x--)
for(y=110; y>0; y--)
{
;//延时1ms
}
}
void main(void)
{
u8 n,temp_val;
P1=0xFF;//LED输出模式
temp_val=0xFF;
while(1)
{
for(n=1;n<8;n++)
{
temp_val = (temp_val << 1) || (0x01);
P1=temp_val;
delay(500);
}
}
}
作者:
liaolinhui
时间:
2015-7-13 23:15
temp_val = (temp_val << 1) || (0x01);的或改成与,因为用或的话temp_val 会一直是0xff
作者:
电子爱好者life
时间:
2015-7-13 23:30
逻辑或只是用于判断,即只有0和1,按位或才是用于计算。temp = 0xff,左移一位变成0xfe,在和0x01 逻辑或变成了0x01,你说的全部不亮,我就不知道原因,因为不知道你的硬件电路是怎样的!如果改成和 0x01 按位或 temp一直为0xff,如果是共阳,全不亮是正确的。但是你写的是逻辑或,结果只能是0x01 。
作者:
电子爱好者life
时间:
2015-7-13 23:35
liaolinhui 发表于 2015-7-13 23:15
temp_val = (temp_val
改成逻辑与和按位与都不能实现
作者:
inception
时间:
2015-7-14 10:39
谢各位,明白了, 初值设成0xfe,左移后在按位或就可以了
作者:
Ahaopiqi
时间:
2015-7-14 11:35
temp_val = (temp_val << 1) || (0x01);
这句话,错了,
把||改成&就可以了
作者:
云帝辰
时间:
2015-7-14 16:07
temp_val=0xFF; temp_val = (temp_val << 1) || (0x01); 会一直是1 当然全灭了
作者:
dingmingzhou
时间:
2015-7-20 18:25
你那程序,与也罢,或也罢(你用“||"或常数?????!!!!
)都不行的,不好用的!你试试这个:
#include <reg52.h>
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 num)
{
u16 x,y;
for(x=num; x>0; x--)
for(y=110; y>0; y--);
}
void main(void)
{
u8 temp_val;
temp_val=0x01;
while(1)
{
temp_val = _crol_(temp_val,1); //左移
// temp_val = _cror_(temp_val,1); //右移
P1= temp_val ;
delay(5000);
}
}
作者:
段水青云
时间:
2015-7-20 19:31
再好好分析下,慢慢来
作者:
段水青云
时间:
2015-7-20 19:34
学习单片机重要的是不要急,慢慢来
作者:
wjz891120
时间:
2015-7-21 11:13
设置初值
作者:
z67230101
时间:
2015-7-23 11:36
temp_val = (temp_val << 1) || (0x01);
这句有错。运算符用的 有误
作者:
future001
时间:
2015-7-23 11:39
temp_val=0xFF; temp_val = (temp_val << 1) || (0x01); 会一直是1 当然全灭了
作者:
438226465
时间:
2015-7-24 14:52
编程序一定要细心,错一步都不行的!
作者:
438226465
时间:
2015-7-24 14:52
慢慢来,编多了就会了
作者:
yaobaige
时间:
2015-7-24 15:06
temp_val=0xFF; temp_val = (temp_val << 1) || (0x01); 会一直是1 当然全灭了
作者:
vianowu
时间:
2015-7-24 15:10
temp_val=0xFF; temp_val = (temp_val << 1) || (0x01); //注意所用的运算符号,和运算结果
作者:
12346
时间:
2015-7-24 16:08
454654
作者:
565
时间:
2015-7-25 14:54
我也有这样错误
作者:
问问123
时间:
2015-7-25 16:32
根据你的仿真图,看是高电平亮还是低电平亮,再决定使用0xfe还是0x01
作者:
芥末
时间:
2015-9-3 21:48
去掉||
作者:
sawyer_bai
时间:
2015-9-4 09:18
初始值就是FF,你后面||还是0x01,最后的结果就是永远都是FF,要是你的LED另一端接的是VCC,那可不就一直全暗么
作者:
HuM
时间:
2015-9-4 11:11
temp_val = (temp_val << 1) && (0x01);
作者:
袁诗奎
时间:
2015-9-5 09:18
你的灯是高电平 亮还是低电平亮的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1