微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > MCU 中输入/输出口的使用

MCU 中输入/输出口的使用

时间:09-13 来源:互联网 点击:
简介:

在HT49C30-1/HT49R30A-1 中有8 个双向的输入/输出口(PA 口,8 位),6 个输入口(PB 口);HT49C50-1/HT49R50A-1 中有12 个双向的输入/输出口(PA 口,8 位;PC 口,4 位),8 个输入口(PB 口);HT49C70-1/HT49R70A-1 中有16 个双向的输入/输出口(PA 口,8 位;PC 口,8 位),8 个输入口(PB 口)PA、PB、PC 分别对应RAM 中地址[12H] 、[14H] 、[16H] 。掩膜时可选择PA、PC 口的结构(NMOS 或CMOS),及该口是否具有上拉电阻(具体介绍看使用手册)。

若PA、PC 口结构NMOS 时,在读取数据之前,必须向相关位写“1”以关闭场效应管NMOS 使其作为一个输入口。也就是说,要先执行指令SET [m].i 以关闭相关的NMOS,然后才能用MOV A,[m] 来读取稳定的数据。



图1 输入输出口  

一些指令称为读-修改-写指令,该指令先读取引脚的值,而且是将八位引脚的状态全部读取,进行相应的位操作后,重写回锁存器中。这样,有些位的锁存器会因为该操作而改变原来的状态,致使再次输出时产生错误。例如,指令“SET [m].i”、“CLR [m].i”、“CPL[m]”、“CPLA[m] ”就是先将数据读取至CPU 中,然后进行定义的操作(位操作)后,再将结果写回锁存器或是累加器中。所以口在输入状态时执行此类指令,可能会使内部锁存的状态改变,需要加以注意。

输入输出口应用程序举例

1.掩膜选择:pa.0"pa.3 选择CMOS 结构,带上拉电阻;
硬件要求:pa.0"pa.3 接LED;pa.4"pa.7 接开关

电路图:



图2 电路图

程序说明:

如上图所示,pa.0"pa.3 作为输出,pa.4"pa.7 作为输入,利用程序将pa.4"pa.7 口上的开关数读入单片机,经过高4 位与低4 位互换,再向pa.0"pa.3 输出pa.4"pa.7 的开关状态,使LED 的发光次序与pa.4"pa.7 上的开关设置相符。  



2.掩膜选择:PC口选为CMOS并带上拉电阻

硬件连接:PA.7与PA.0口相连接程序说明:本程序的目的要说明在执行读-修改-写指令时发生的特殊情况。



程序说明:

执行以上程序,我们会发现PA.0和PA.7引脚的值始终为0,但实际上PA.0和PA.7 内部锁存器的值是变化的,参见程序注释。

如果用单步调试,我们就能观察到“Read—Modify—Write”的过程。当程序执行完(2)时,将连接PA.0和PA.7的导线断开,则执行完下一条语句后PA.0引脚的值会变为1。

加上(3)语句,如果在执行完(2)时断开连接,则最后结果为PA.0=1、PA.7=1;如果在执行完(3)时断开连接,则最后结果为PA.0=0、Pa.7=1。在使用过程中因注意以上区别所以某个口当为NMOS结构,要作为输入口时,一定要先向该口写“1”,再读入该口的输入状态,

并且读口状态的操作一定要紧接在写“1”操作之后,避免因执行“Read—Modify—Write”指令而发生错误。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top