关于AVR单片机点亮LED及下载软件使用方法的问题,望高手解答!

1.用的Atmega128A,程序如下,一个端口控制8个LED,先亮4个隔1秒后亮另外4个(编译环境是ICCAVR的,使用内部默认的1M时钟频率),执行后只亮了前面4个,... 1.用的Atmega128A,程序如下,一个端口控制8个LED,先亮4个隔1秒后亮另外4个(编译环境是ICCAVR的,使用内部默认的1M时钟频率),执行后只亮了前面4个,然后就停在那里了,想不通为何没有循环。
#include <iom128v.h>
#define uint unsigned int
void delay(uint a)
{
uint b=1000;
while(a--)
while(b--);
}
void main(void)
{
while(1)
{
PORTC = 0xf0;
delay(1000);
PORTC=0x0f;
delay(1000);
}
}

2.我下载程序用的PROGISP167+USBASP,每次下载程序都是两步“调入flash”——“自动”,现在我想改变熔丝位的值,让系统用内部8M的时钟频率,在向导方式里勾选了“内部RC振荡(8M)起振时间6CK+65MS”,然后还是“调入flash”——“自动”,请问我成功设置了芯片的熔丝位了吗?为何我将下载器拔下第二次插上的时候,点了“RD”,熔丝位的值又变回系统默认的了???右边那个框框“时钟校正”有个“读出”是啥意思?
展开
 我来答
百度网友186dfeac08
2013-11-07 · TA获得超过754个赞
知道小有建树答主
回答量:1074
采纳率:50%
帮助的人:528万
展开全部
那要看你自动里面有没有选择下载熔丝位,要是没选择,那就要单独下熔丝位了。

个人建议,在自动里面不要选择下熔丝位,也就是说熔丝位最好单独下载,独立于flash下载。

另外,为什么不能正常运行,你要把延时写成这样:

void delay(uint a)
{
uint b=1000;
while(a--)
{
while(b--);
b=1000; // 注意加上这句。建议以后不如用for语句,免得出问题不知道在哪。
}
}

另外,主函数里也要注意:
void main(void)
{

DDRC=0XFF; // 设置PC口的方向啊!

while(1)
{
PORTC=0xf0;
delay(1000);
PORTC=0x0f;
delay(1000);
}
}
追问
那下载熔丝位是不是在软件菜单栏里“命令”--“编程熔丝位”??
追答

看图片就知道了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式