这是怎么回事?是程序的问题还是电路的问题(比如说电压值的设定),
#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//
主程序void main(){uchar i;P2=0x01;while(1){
for(i=0;i<7;i++){P2=_crol_(P2,1); //P2 的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2 的值向右循环移动DelayMS(150);}}}
proteus仿真图:
求高手解释啊! 不胜感激。。
还是不行啊,仿真成功,LED灯会左右来回闪烁吧
追答#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar led_table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
//延时
void DelayMS(uint x){
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}//
主程序
void main()
{
uchar i;
while(1)
{
for(i=0;i<7;i++)
{
P2=led_table[i]; //P2 的值向左循环移动
DelayMS(150);
}
for(i=7;i<15;i++)
{
P2=led_table[i]; //P2 的值向右循环移动
DelayMS(150);
}
}
}
您再试一下,复制进去,不行再追加吧!,谢谢
您可以不用总线,直接连接试一下,谢谢
改为1000以后也不行啊,
追答你是一定要用那个头文件么。
不是的话用>试下呢?
电路多余试过没- -。
还是说你没把程序下进去?右击再左击那个.
多余的我也删除了,程序我先用keil转换为hex格式在放进单片机,是不是我的LED电路有问题啊?请帮忙看看
追答电路看起来没问题...
#include
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x){
uchar i;
while(x--)
{
for(i=0;i>1;
DelayMS(500);
}
}
}
这样还是不行的话我也不知道了- -。
那个,你开始运行了么...左下角的一个类似音乐播放器的开始箭头-0 -。
开始运行后,灯会从左到右闪烁,间隔时间太短,之后灯就一直亮着,这是怎么回事,是不是需要改变元件参数呢?
追答原因可能在uchar i 的地方main里的i和延时里的i冲突了,延时出来i就等于120了呢.
你把main里的i改成ii什么的.
左右闪烁是不是0x01和0x03,
之后全亮可能程序跑飞了吧0.0