mega128流水灯的问题~请教傻孩子了···好几天了【恢复】
本人刚刚从mega16转向128 没想到一开始就弄了两天的流水灯;
检查许久··没有硬件的问题
那么就是软件的··
试验1:
#include <mega128.h>
#include <delay.h>
void main(void)
{
DDRD=0xFF;
while (1)
{
PORTD=~PORTD;
delay_ms(10);
};
}
*************************************这段程序是亮的
然后,按照马潮老师的书:
#include <mega128.h>
#include <delay.h>
void main(void)
{
PORTD=0xFF;
DDRD=0xFF;
while (1)
{
PORTD=~PORTD;
delay_ms(10);
};
}
可以生成hex,下载,仔细看了··很暗很暗的闪··?把延时加到1000ms也是很快的暗闪一下··很难看清楚,然后1000ms一个闪····然后,用avr studio调试,完全可以,单步运行OK
还有这个
#include <mega128.h>
#include <delay.h>
void main()
{
unsigned char position=0;
DDRD=0xFF;
while(1)
{
PORTD=~(1<<position);
if(++position>=8)
position=0;
delay_ms(50);
};
}
也是调试可以,实际的硬件不亮···
难道128和16那么大的区别。。。。
128达人指点··小弟不胜感激···
#include <mega16.h>
#include <delay.h>
void main(void)
{
unsigned char position = 0;
PORTC=0xFF;
DDRC=0xFF;
while(1)
{
PORTC= ~(1<<position);
if(++position>=8) position = 0;
delay_ms(20);
};
}
这样同样的程序在16完全OK···
补充··
小弟用CVAVR···完全是马潮老师的忠实读者·· 不慌哈,楼主。
1.不要怀疑电阻,你是买的开发板,只要设计他的人不是太笨,这个电阻的数值会八九不离十的。
2.如果你搞不清楚程序为什么不对,最好用最简单的方法来做,例如:
while(1)
{
PORTD=0xFF;
delay1S();
PORTD=0x00;
delay1S();
}
如果这个程序通过了,再往下做。
可能造成这个问题的原因有:时钟硬件、时钟熔丝设置、端口相关的初始化设置…… 你写个程序,让所有的I/O输出高电平,接在小灯上,看一下他的状态,我想会不会是芯片引脚有问题了 都试过了··难道是我买的开发板上的问题·· 不知道10mS你的眼睛能看出来吗?改成秒级别的! 更换引脚上的限流电阻看看?
页:
[1]