编辑: 贾雷坪皮 | 2019-07-02 |
0、PxCR 中数据复位为 0) .为 了避免单片机复位时,端口的不确定状态对外部电路的工作状态产生影响,对处 于输入悬空状态的端口,可以通过在外部加上拉/下拉电阻加以解决,使在系统复 位开始到端口被重新设置期间,外部电路都能保持在正确的工作状态. 不使用的 I/O 端口不可以处于悬空输入状态.建议设置为输入,同时使用内 部或外部上拉或下拉电阻,或设置为输出低电平. 相关寄存器介绍: 端口数据寄存器 地址 第3位第2位第1位第0位读/写 说明 $08 PA.3 PA.2 PA.1 PA.0 读/写 端口 A 数据寄存器 此寄存器除了可直接控制输出
0 或
1 于端口外,在大部分产品中还可 以用于控制各个端口上拉或下拉电阻的开与关. 端口模式控制寄存器 地址 第3位第2位第1位第0位读/写 说明 $16 PACR.3 PACR.2 PACR.1 PACR.0 读/写 端口 A 控制寄存器 写入 0:设置为输入端口 写入 1:设置为输出端口 这个寄存器用于控制端口的输入或输出,每个 bit 都可独立地设为输入或输 出. 上拉/下拉电阻控制寄存器 地址 第3位第2位第1位第0位读/写 说明 $13 PULLEN PH/PL X X 读/写 端口上拉/下拉电阻控制 PULLEN=0:关闭上拉/下拉电 阻功能 PULLEN=1:开启上拉/下拉电 阻功能 PH/PL=0:选择下拉电阻 PH/PL=1:选择上拉电阻 此寄存器与端口数据寄存器配合控制上拉电阻的开与关. 下面以实例来说明 I/O 端口的设定. 用户可根据不同的应用选择开启上拉电阻或下拉电阻,下面以选择 PORT A 为 例说明上下拉电阻的设定. 设PORT A 为输入打开下拉 步骤
一、对端口模式寄存器 PA3OUT 写
0 把端口设为输入 步骤
二、对上下拉电阻控制寄存器 PULLEN 和PH/PL 分别写
1 和
0 步骤
三、对端口数据寄存器写
0 例2-1:PORTA 设值 PORTA EQU 08H ;
端口数据寄存器 PULLCTL EQU 15H ;
上(下)拉电阻控制寄存器 PACR EQU 13H ;
端口模式寄存器 : : LDI PACR ,00H ;
设端口 A 为输入 LDI PULLCTL ,08H ;
LDI PORTA ,00H ;
打开端口 A 的下拉电阻 端口的读写操作 每个端口都有独立的端口数据寄存器(Px) .其中 x 对应 A,B,C,D 等不同 端口. 当端口为输入状态时,对端口数据寄存器(Px)进行读操作可以直接获得引 脚上的外部电平状态,对端口数据寄存器(Px)进行写操作则只会改写数据寄存 器的内容而不会影响引脚的外部电平状态. 当端口为输出状态时,对端口数据寄存器(Px)进行写操作则会改写数据寄 存器的内容,同时在引脚上加以输出.对端口数据寄存器(Px)进行读操作则分 为两种: 1) 对于如 CMOS I/O 结构
3 中所示的端口,在输出状态下执行读操作时, 读入的数据是数据寄存器(Px)中保存的数据,而非引脚上的电平状态. 2) 对于如 CMOS I/O 结构
1 ,2 中所示的端口,在输出状态下执行读操作 时, 读入的数据是引脚上的外部电平状态,而非数据寄存器(Px)内数据. 针对上述状况(在输出状态下的读操作的数据来源存在差异),程序中直接对 I/O 端口进行逻辑指令操作需要慎重处理, 因为 I/O 逻辑操作指令的执行过程 是先执行读操作,再执行逻辑运算,最后执行写操作,也称为 Read-Modify-Write 指令. 端口的输出驱动能力 每个端口的输出驱动能力由组成 I/O 结构的 P 沟道和 N 沟道场效应管决定. 在输出为空负载时,输出高电平接近 VDD,输出低电平接近 0V.依不同型号,其 驱动能力从几毫安至上百毫安不等(请参考具体型号单片机规格书) . 在一些低功耗设计的应用场合中,具备较强输出驱动能力的端口在电路中可以作 为部分外围器件的电源使用,输出