NuMicro M051微控制器共有40个通用I/O口,并可复用为特殊功能引脚,如串行口输入输出接口、外部中断触发、PWM输出等功能。这40个引脚分别分配在P0、P1、P2、P3、P4这五个端口上,每个端口最多有8个引脚,且各引脚之间都是相互独立的,可通过相应的寄存器来控制引脚的工作模式和读取当前引脚的数据。
每个I/O引脚上的I/O类型都能够通过软件独立地配置为输入、输出、开漏或准双向模式。当MCU复位时,端口数据寄存器Px_DOUT[7:0]的值为0x000_00FF。每个I/O引脚配有110K欧~300K欧的非常弱的上拉电阻到输入电源(VDD)上,输入电源可为5V~2.5V。
8.1 通用I/O模式的设置
通用I/O工作模式可分为输入模式、输出模式、开漏模式、准双向模式这四种模式,模式的选择需要对I/O模式控制寄存器Px_PMD[1:0]进行编程,当P0/1/2/3/4被设置为推挽模式或准双向模式时,源电流和灌电流的参数如下表8.1-1、8.1-2。
表8.1-1 源电流参数
参数 |
最小值 |
典型值 |
最大值 |
单位 |
测试条件 |
P0/1/2/3/4 源电流(推挽模式) |
-20 |
-24 |
-28 |
mA |
VDD = 4.5V, VSS = 2.4V |
-4 |
-6 |
-8 |
mA |
VDD = 2.7V, VSS = 2.2V |
|
-3 |
-5 |
-7 |
mA |
VDD = 2.5V, VSS = 2.0V |
表8.1-2 灌电流参数
参数 |
最小值 |
典型值 |
最大值 |
单位 |
测试条件 |
P0/1/2/3/4 灌电流(准双向模式和推挽模式) |
10 |
16 |
20 |
mA |
VDD = 4.5V, VSS = 0.45V |
7 |
10 |
13 |
mA |
VDD = 2.7V, VSS = 0.45V |
|
6 |
9 |
12 |
mA |
VDD = 2.5V, VSS = 0.45V |
注:P0/1/2/3/4管脚被外部由1驱动到0时, 可作来输出电流的源端,在VDD=5.5V时, 当输入电压范围接近2V时,输出电流达到最大值。
l 输入模式
设置 Px_PMD(PMDn[1:0])为00b,Px[n]为输入模式,I/O引脚为三态(高阻态),没有输出驱动能力。Px_PIN的值反映相应端口引脚的状态。
l 输出模式
设置Px_PMD(PMDn[1:0])为0x01,Px[n]为输出模式,I/O引脚支持数字输出功能,有拉电流/灌电流能力。Px_DOUT[0:7]相应位的值被送到相应引脚上。
图8.2-1 推挽输出
l 开漏模式
设置Px_PMD(PMDn [1:0])为 2’b10,Px[n]为开漏模式,I/O支持数字输出功能,但仅有灌电流能力,为了把I/O引脚拉到高电平状态,需要外接一颗上拉电阻。如果Px_DOUT相应位bit [n]的值为“0”,引脚上输出低电平。如果Px_DOUT相应位bit [n]的值为“1”,该引脚输出为高电平,由内部上拉电阻或外部上拉电阻控制。
图8.2-2 开漏模式
l 准双向模式
设置Px_PMD(PMDn[1:0]) 为 2’b11,Px[n]引脚为准双向模式,I/O同时支持数字输出和输入功能,但拉电流仅达数百uA.。要实现数字输入,需要先将Px_DOUT 相应位置1。准双向输出是80C51及其派生产品所共有的模式。若Px_DOUT相应位bit[n]为”0”, 引脚上输出为“低电平”。若Px_DOUT相应位bit[n]为”1”, 该引脚将核对引脚值. 若引脚值为高,没有任何动作,若引脚值为低,该引脚置为强高2个时钟周期,然后禁用强输出驱动,引脚状态由内部上拉电阻控制。
注: 准双向模式的拉电流能力仅有200uA到30uA(相应 VDD的电压从5.0V到2.5V)。
图8.2-3 准双向I/O模式
书籍下载地址(复制到下载工具进行下载):
http://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part1.rar
http://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part2.rar
注:书籍内容会不定期进行更新!
来源:https://www.cnblogs.com/wenziqi/archive/2012/02/18/2357218.html