您的位置 首页 测评

Linglong之AVR程例3 流水灯

下面我们写流水灯的程序。LED程序的书写是我们学习单片机很基础的,但我是我觉的还是很重要的。能写好LED程序对我们理解AVRIO口的操作很

下面咱们写流水灯的程序。LED程序的书写是咱们学习单片机很根底的,但我是我觉的仍是很重要的。能写好LED程序对咱们了解AVR IO口的操作很有优点呀。

先这儿简略的介绍下我的硬件,8个LED接到PA口上,公共端接地。

程序:

#include <avr/io.h> //调用AVR IO口头文件

#include //调用GCC自身的调时程序。

int main(void) //主程序

{

unsigned char i = 0; //界说循环变量

DDRA = 0xff; //界说PA口为输出态

while(1) //主程序循环句子

{

PORTA=0x01<//循环点亮IO口的灯

if(++i>=8)i=0; //对循环变量的操控,让其循环8次

_delay_ms(1000); //延时程序

}

}
这儿咱们首要讲讲while(1)句子部分。

榜首句:PORTA = 0x01<

在主函数中咱们界说了i变量,咱们并对其赋值为0.(这儿其实赋不赋0,作用都是相同的,可是我仍是期望咱们赋值,这样比较标准)

这一句榜首次履行的意思便是0x01左移0次,并将左移后的成果赋结PA口。0x01便是二进值的0000 0001,左移0位仍是0000 0001.那么这样便是榜首个LED点亮了。

第二句:if(++i>=8)i=0;

这儿用的是一个if句子,这句话的意思便是假如i的值大于等于8了,那么将其清0;假如没有i便是其自身的值。

这儿一个要要点留意的当地便是++i,而不是i++。这两个的差异便是是先加再履行,仍是履行了再加。这是有不同的,咱们能够试着改一下,体会下这两个的不相同。

第三句便是延时了没有什么好说的。

现在咱们再从头的回忆下这个while(1)句子的一个履行进程。首要0x01左移0位,将0x01赋给PA口,点亮榜首个LED。再对i进行自加0+1=1,1〈 8则不对其进行清0操作,最终是延时一会。

第2次履行PORTA=0x01<

如此循环下去,当循环8次后i被清0,再从榜首个LED亮起。

这样流水灯的作用就出来了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/262341.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部