Linglong之AVR程例2 闪烁的LED
时间:11-22
来源:互联网
点击:
因为,早期程序都比较简单,所以更新的比较快呀。
这里我们让LED闪烁起来。就是中间有延时,点亮LED,延时一会,灭了LED再延时一会。
这个过程循环起来了,就是我们要的结果。
看程序:
#include avr/io.h> //io端口寄存器配置文件,必须包含
#include //系统自带的延时函数很好用。
int main(void) //GCC中main文件必须为返回整形值的函数,没有参数
{
DDRA = 0xff;
while(1)
{
PORTA = 0x01;
_delay_ms(1000); //延时一会
PORTA = 0;
_delay_ms(1000);
}
}
还有给大家说一个我写这个程序时,犯过一个错误。
看下面的程序:
#include //io端口寄存器配置文件,必须包含
int main(void) //GCC中main文件必须为返回整形值的函数,没有参数
{
int i = 0,j = 0;
DDRB = 0xff;
while(1)
{
PORTB = 0xf0;
for(i = 0;i 16000; i++) //这两行是一个延时程序
for(j = 0;j<10000;j++);
PORTB = 0x0f;
for(i = 0;i 16000; i++) //这两行是一个延时程序
for(j = 0;j<10000;j++);
}
}
这里我们不管他的端口问题。我们只看程序。
按我们正常的写51的思维是没有错的,如果你用ICC,CVAVR都软件编译也不会有错,但是如果用GCC就有问题。
因为GCC会帮我们优化程序。大家要注意这点就好了。。
这里我们让LED闪烁起来。就是中间有延时,点亮LED,延时一会,灭了LED再延时一会。
看程序:
#include avr/io.h>
#include
int main(void)
{
}
还有给大家说一个我写这个程序时,犯过一个错误。
看下面的程序:
#include
int
{
int
while(1)
{
PORTB
for(i
PORTB
for(i
}
}
这里我们不管他的端口问题。我们只看程序。
按我们正常的写51的思维是没有错的,如果你用ICC,CVAVR都软件编译也不会有错,但是如果用GCC就有问题。
因为GCC会帮我们优化程序。大家要注意这点就好了。。
AVR程例闪烁LE 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)