今天就写几个demo代码,来更加深入的了解avr单片机的io口的操作。
1.流水灯的实现
方法一:(这是写的第一个demo,就写全一点,后面的demo代码就只写主要的部分了。)
简单的说明一下程序:
注意我这个8个灯均是低电平点亮,这个程序是一个典型的操控总线的程序
首先,定义一个数组,注意数组的取值,其实就是8个灯的循环。
在操作io前,一定要初始化端口,这个在教程1中有详细的讲解。
直接用for循环,去操作数组里面的数,就可以实现流水灯了,是不是特别的简单呢。
方法二:
也简单的说明一下程序吧:
BIT()这个函数,可用来对位(bit)的操作。这个函数在头文件#include
在for循环里面,首先使用按位取反,其实就是清位,第一位就亮了
延迟一段时间后,按位或,其实就是置位,将电平拉高,灯其实就灭了。
就这样其实就循环起来了。
方法三:
简答的说明一下:
按位异或,其实就可以翻转电平,两个翻转不就实现一次亮灭了吗。
方法四:
这个其实也没啥说明了,和方法三本质上一样。
在说一个吧,语句DDRA |= BIT(DDRA3),这个语句是正确的
DDRA |= BIT(DDRAi) 这个就是错误的了,这个有很多人在循环那弄错。
2.读端口电平就不多说了,假如 a = PINA , 这就把A口的数据读到a里面了。
好了,io口的操作就说这么多了。
閱讀更多 小5嵌入式 的文章