说明:器件为Atmega162 Fre=7.3728MHz 程序目的:测试PORTD4,PORTD5 IO口的LED灯是否正确闪烁,LED灯外接上接电阻。 编译环境:WinAVR-20071221 烧录环境:Pony2000 v2.6f ISP烧录
提示:不存在硬件及熔丝问题,因为用ICC AVR写的应用程序是完全正确的。 (烦啊,ICCAVR没有注册码,是急着转用GCC!)
程序代码如下: #include <avr/io.h> void Main_DealyTime(unsigned int iTmpDlyTime) //延时 { for(;iTmpDlyTime>0;iTmpDlyTime--); }
void Main_InitPort(void) { PORTA = 0x00; DDRA = 0xF0; // PORTB = 0x00; DDRB = 0x00; // PORTC = 0x00; // DDRC = 0x60; // PORTD = 0xf8; DDRD = 0xf8; //PORTD 就五位,设置为输出 PORTE = 0x00; DDRE = 0x00; // }
int main(void) { Main_InitPort(); while(1) { Main_DealyTime(5000); Main_DealyTime(5000); PORTD |= 0x030; //置1 Main_DealyTime(5000); Main_DealyTime(5000); PORTD &= ~0x030; //取反 } return 0; }
问题: 1、当前程序代码是否有误?或者设置不合理的地方? 2、当前的程序是否从main处开始执行?不是的话如何更改? 3、在HEX文件内,箭头向上的代码是如何产生的?
谢谢!
测试结果:D4,D5 IO口LED没有任何闪动。 Hex代码如下图所示:
https://bbs.21ic.com/upfiles/img/20077/200777141929224.jpg |