AVR单片机教程——闪烁LED

发布者:fuehrd努力的最新更新时间:2019-12-03 来源: eefocus关键字:AVR  单片机教程  闪烁LED 手机看文章 扫描二维码
随时随地手机看文章

上次我们把LED点亮了。你可能已经试过把 LED_RED 换成其他灯,也可能已经用 led_on() 把所有LED一起点亮了。但是LED点亮以后,程序就退出了,之后LED一直没有暗,直到没有供电。这一次,我们用程序来控制LED的亮和暗。


新建一个C executable项目,选择ATmega324PA单片机,在项目属性中添加库libee1,将配置改为Release。这是本教程现阶段中每一次新建项目都要做的。我刚才尝试用project template简化,然而设置无法导入。


默认生成的main.c中的内容我们还是不要,全部删除后敲入以下代码:


 1 #include

 2 #include

 3 

 4 int main()

 5 {

 6     led_init();

 7     while (1)

 8     {

 9         led_set(LED_RED, LED_ON);

10         delay(500);

11         led_set(LED_RED, LED_OFF);

12         delay(500);

13     }

14 }


分析一下这段代码:


第2行包含了一个头文件 delay.h ,它提供了 delay 函数,用于设置一定时长的延时。第10行和第12行用这个函数来延时500毫秒。


第9行和第11行分别让红色LED开启与关闭。


while (1) 表示无限循环,循环的周期是1秒多一点,1秒是两个500毫秒相加,多一点是因为两个 led_set 的调用也需要时间。


F5、F6以后,你会发现开发板上的红色LED以1秒为周期闪烁。


通过这个例子,你应该可以发现,单片机程序与计算机程序还有一个不同点,在于计算机程序一般都有结束,而单片机程序一般都要持续运行。这是因为单片机一般用于控制用途,控制的设备是长期运作的。同时这也意味着,单片机系统对可靠性的要求很高,这包含了两方面:其一,单片机硬件不能出错,比如电源波纹不能让程序不能跑飞;其二,单片机程序不能出错,控制逻辑一定不能写错,同时对可能发生的错误也要有合理的处理措施。

关键字:AVR  单片机教程  闪烁LED 引用地址:AVR单片机教程——闪烁LED

上一篇:AVR单片机教程——流水灯
下一篇:AVR单片机教程——点亮第一个LED

推荐阅读最新更新时间:2024-11-12 22:39

AVR中如何操作单个IO口
WinAVR中如何操作单个IO口 用PORTA|=(1 7) PORTA|=(1 7) 意思是把00000001左移7位再和porta相或 PORTB |= _BV(n) 和 PORTB &= ~_BV(n) sbi() 可以用的 05版装好后的确不能用 sbi()和cbi()。 仔细看资料后,发现头文件里的确没有这两函数的定义。 发现问题原因后,解决它就不是什么问题了。 方法有无数种。 1. 将下面两行拷到程序中。 #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bi
[单片机]
8051单片机教程第十二课:逻辑运算类指令
对累加器A的逻辑操作: CLRA;将A中的值清0,单周期单字节指令,与MOVA,#00H效果相同。 CPLA;将A中的值按位取反 RLA;将A中的值逻辑左移 RLCA;将A中的值加上进位位进行逻辑左移 RRA;将A中的值进行逻辑右移 RRCA;将A中的值加上进位位进行逻辑右移 SWAPA;将A中的值高、低4位交换。 例:(A)=73H,则执行CPLA,这样进行: 73H化为二进制为01110011, 逐位取反即为10001100,也就是8CH。 RLA是将(A)中的值的第7位送到第0位,第0位送1位,依次类推。 例:A中的值为68H,执行RLA。68H化为二进制为01101000,按
[单片机]
AVR单片机Atmega128外扩RAM
由于AVR系列单片机采用的是内部外部RAM统一编址,ATmega128工作在非ATmega 103模式时具有4k+256B的包括寄存器文件(通用工作寄存器)、I/O寄存器、扩展I/O寄存器和内部SRAM的连续内部存储空间。所以在扩展外部RAM时,和内部SRAM地址重叠的外部RAM地址是不能直接访问的。也就是说扩展的外部RAM每64k要浪费掉内部SRAM那么大的空间(AT90系列如此)。所幸的是mega系列解决了这一缺点,专门有一个寄存器XMCRB用来解决对与内部SRAM地址空间相同地址的外部RAM访问。其低三位XMM2 、XMM1 、XMM0三位的设置,决定高位地址线PC口的哪些口线被释放为普通I/O,而不是作为高位地址。这
[单片机]
<font color='red'>AVR</font><font color='red'>单片机</font>Atmega128外扩RAM
Lcd.h头文件下载-字符型液晶LCD的AVR单片机驱动程序头文件
/***************************************************************************** 单 位:广西民族大学物理与电子工程学院07物本班 文件名称:Lcd.h 文件标识:_LCD_H_ 摘 要:字符型液晶LCD的AVR单片机驱动程序头文件 当前版本:V2.0 *****************************************************************************/ #ifndef _LCD_H_ #define _LCD_H_ #include BaiYuAvrKuD
[单片机]
atmega128 bootloader程序在IAR-AVR下 linker文件的配置及原因
第一步:atmega128的片内flash分区描述 在atmega128 datasheet的275页中有分区描述 对应的在284页中,有具体的应用区与boot区的大小设置 注意:Byte address = word address * 2 这里的BOOT区首地址,$F000 = 0x1E000 根据手册中的描述,我们使用JTAG MKII 烧写器通过软件 Avr Studio 4,配置熔丝位 BOOTSZ为00 注意:这里面的4096 words = 8K bytes 第二步:说明一下linker(.xcl)文件的作用 好了,怎么让我们的程序烧写到flash中是在指定的0x1E000处呢?这就需要在
[单片机]
atmega128 bootloader程序在IAR-<font color='red'>AVR</font>下 linker文件的配置及原因
avr继电器+1602程序
#include iom8v.h #include macros.h #define uchar unsigned char #define uint unsigned int /////////////////////////////////////////////////////////////// #define rs_L PORTD&=~BIT(0) #define rs_H PORTD|=BIT(0) #define rs_out DDRD|=BIT(0) #define rw_L PORTD&=~BIT(1) #define rw_H PORTD|=BIT(1) #define rw_ou
[单片机]
<font color='red'>avr</font>继电器+1602程序
基于AVR单片机的核磁共振仪床体运动控制与检测系统的研究与设计
1 引言 近年来随着医学技术的快速发展,核磁共振仪已经在大中型医院中被广泛的应用。目前,在核磁共振仪的生产过程中,床体部分要与磁体一起搬入电磁屏蔽室组装后才能进行检测,这对人员和物资都是很大的浪费。针对这种状况,本文设计出了一套核磁共振仪床体部分的运动控制与检测系统,它能够对床体部分独立进行检测,而不必将全部系统在屏蔽室安装后检测,从而降低了核磁共振仪床体部分的生产和检测成本,缩短了生产周期。 本设计以通用医疗集团的Ovation5型核磁共振仪的床体为对象,对驱动床体做横向运动的直流步进电机和驱动床体做纵向运动的直流伺服电机的精确控制问题进行较为深入的分析和研究。系统主要采用了ATMEL公司的Atmega128单片机和AL
[单片机]
基于<font color='red'>AVR</font><font color='red'>单片机</font>的核磁共振仪床体运动控制与检测系统的研究与设计
AVR片内TWI总线(I2C总线协议)
/*本程序为八位共阴极数码管且有两个573控制的动态扫描*/ /*此程序为开机记忆,可以每次开机分自动加一。如果加了,说明操作成功*/ /*本程序把24C08的SCL和SDA分别接在MCU的SCL(PC0第22脚)和SDA(PC1第23脚)*/ //24C08的第7脚WP接地 #include iom16v.h #include macros.h //这里面有BIT(),所以要包含 #define uchar unsigned char #define uint unsigned int #pragma data:code //注code的功能是把后面的数据存在程序存贮器中,不用code就放到了随机存贮器中. uchar cons
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved