文档详情

如何对IO口编程.pdf

发布:2017-07-03约1.23千字共3页下载文档
文本预览下载声明
哈工大嵌入式开发 相关知识讲解: 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 灭*/ 好啦,快去试试吧,这样就算和飞思卡尔的单片机打过招呼啦~~
显示全部
相似文档