如何对IO口编程.pdf
文本预览下载声明
哈工大嵌入式开发
相关知识讲解:
IO 口能做什么呢? IO 口是单片机中最基本的单元了,通过对IO 口寄存器的控制,
可以让它作为输出管脚或者是输入管脚。作为输出管脚时,可以输出高电平(5V )或者是
低电平(0V ),这个通过给数据寄存器赋值实现。作为输入脚时,可以检测到外部电平变化。
在芯片手册中我们可以看到,对 IO 口的操作主要由两个寄存器实现,一个是数据方
向寄存器DDR* (*代表A 、B 、C…),一个是数据寄存器PORT* 。
以DDRA 为例,我们可以看到一个寄存器,控制8 个IO 管脚,当相应位置1 时,相
应管脚被配置成输出模式,当置0 时,相应管脚被配置成输入模式。
当一个管脚被配置成输出模式,那么到底输出高电平还是低电平由谁决定呢,这时就
需要数据寄存器PORTA 了,当数据方向寄存器指定了某一管脚是输出时,输出的具体电平
由PORT*决定。
哈工大嵌入式开发
举例:
我想让PA7 管脚输出高电平,怎么写程序呢?很简单
DDRA |=0x80;
PORTA |=0x80;
0x 指后面数据为16 进制,0x80=1000 0000B ,|=运算就是DDRA =DDRA | 0x80 ,也
就是将第7 位置 1,且不改变别的位的状态。假如你写DDRA=0x80 ,那么这就意味着第7
位被置 1,其他位都被置0 。
实际应用:
在我们的开发板中led2 和led3 分别有PE5 和PE6 控制,当PE5 ,PE6 为低电平时led
中有5mA 电流流过,led 亮,当PE5 ,PE6 为高电平时,led 中无电流流过,led 灭。
让led 亮程序
DDRE |=0x60; /*0xC0=0110 0000,即将PE5 、PE6 设置成输出模式*/
PORTE =0x9F;/*0x9F=1001 1111 这时按位与操作,将PE5 、PE6 设置成低电平*/
哈工大嵌入式开发
让led 灭程序
DDRE |=0x60; /*0xC0=0110 0000, 即将PE5 、PE6 设置成输出模式*/
PORTE |=0x60;/*0x60=0110 0000 将PE5 、PE6 设置成高电平,led 灭*/
好啦,快去试试吧,这样就算和飞思卡尔的单片机打过招呼啦~~
显示全部