zoukankan      html  css  js  c++  java
  • AVR单片机教程——闪烁LED

    本文隶属于AVR单片机教程系列。

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

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

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

     1 #include <ee1/led.h>
     2 #include <ee1/delay.h>
     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秒为周期闪烁。

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

    上一篇:点亮第一个LED

    下一篇:流水灯

  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/jerry-fuyi/p/11330805.html
Copyright © 2011-2022 走看看