小5带你飞(2)—AVR单片机IO口位操作的方法(2)

今天就写几个demo代码,来更加深入的了解avr单片机的io口的操作。

1.流水灯的实现

方法一:(这是写的第一个demo,就写全一点,后面的demo代码就只写主要的部分了。)

小5带你飞(2)—AVR单片机IO口位操作的方法(2)

简单的说明一下程序:

注意我这个8个灯均是低电平点亮,这个程序是一个典型的操控总线的程序

首先,定义一个数组,注意数组的取值,其实就是8个灯的循环。

在操作io前,一定要初始化端口,这个在教程1中有详细的讲解。

直接用for循环,去操作数组里面的数,就可以实现流水灯了,是不是特别的简单呢。

方法二:

小5带你飞(2)—AVR单片机IO口位操作的方法(2)

也简单的说明一下程序吧:

BIT()这个函数,可用来对位(bit)的操作。这个函数在头文件#include里面

在for循环里面,首先使用按位取反,其实就是清位,第一位就亮了

延迟一段时间后,按位或,其实就是置位,将电平拉高,灯其实就灭了。

就这样其实就循环起来了。

方法三:

小5带你飞(2)—AVR单片机IO口位操作的方法(2)

简答的说明一下:

按位异或,其实就可以翻转电平,两个翻转不就实现一次亮灭了吗。

方法四:

小5带你飞(2)—AVR单片机IO口位操作的方法(2)

这个其实也没啥说明了,和方法三本质上一样。

在说一个吧,语句DDRA |= BIT(DDRA3),这个语句是正确的

DDRA |= BIT(DDRAi) 这个就是错误的了,这个有很多人在循环那弄错。

2.读端口电平就不多说了,假如 a = PINA , 这就把A口的数据读到a里面了。

好了,io口的操作就说这么多了。


分享到:


相關文章: