刚刚接触AVR,写了一段很简单的程序(如下)想让某个LED灯亮,用progisp1.67下
#include <iom128v.h>
void main(void)
{
unsigned char i=0;
PORTA = 0xFA;
DDRA = 0xFF;
DDRE=0XFF;
PORTE=0XFF;//573的锁存端
while(1);
}
那里已经提示下载成功了,但不知为什么灯一直都是全亮,我把原配的一个跑马灯程序下载到开发板上(128的)可以跑,而当我把跑马灯上的一大段延时程序复制加入到上面的程序时,居然又可以实现某个灯两亮灭了,加入延时函数后程序如下:(红色是加进去的)
#include <iom128v.h>
void delay_1us(void) //1us延时函数
{
asm("nop");
}
void delay_nus(unsigned int n) //N us延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1us();
}
void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1140;i++);
}
void delay_nms(unsigned int n) //N ms延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}
void main(void)
{
unsigned char i=0;
PORTA = 0xFA;
DDRA = 0xFF;
DDRE=0XFF;
PORTE=0XFF;
while(1);
}
请高手帮忙解决一下,我为这个问题想了好几天 |