• 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

    下一篇:流水灯

  • 相关阅读:
    Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
    软件的三层架构
    【Android小应用】颈椎保健操Android开源项目
    huffman编码——原理与实现
    30天自制操作系统之第13天 定时器(2)
    JSP中Session的使用
    [非官方]ArcGIS10.2 for Desktop扩展工具包——XTools Pro
    在C语言中,double、long、unsigned、int、char类型数据所占字节数
    nyoj 130 同样的雪花 【哈希】
    socketpair的使用
  • 原文地址:https://www.cnblogs.com/jerry-fuyi/p/11330805.html
Copyright © 2020-2023  润新知