续上一篇文章,继续介绍I/O口的硬件结构
仅作普通I/0口,是准双向口,数字输入输出,字节地址为90H,位地址为 90H~97H。
位电路结构如图
?这个电路相当于把P0口简化,没有总线口。
工作过程:
当做输入口时,先写1然后Q一把为0,场效应管截止,数据从PI.X口进来,如果要读引脚,则通过下面的电路进入片内。读引脚把三态管打开是由指令来决定的。读锁存器,就从上面的电路进入。
注:
P1口无三态,它的电路结构,就是在上面那个地方用上拉电阻替换了场效应管
读锁存器还是读引脚要看指令
输出:CPU发出一个脉冲,锁存器就写入一个脉冲(C1),数据就进入(1D)Q为1,Q一把为0,则场效应管截止,由于由上拉电阻,输出就为1(高电平)。
也是双功能的,既可以做通用的I/O口,也可以做高8位地址口。
结构图如下:
?工作过程:
当做高8位地址总线的时候,由控制信号控制,开关打向地址那一端,发出的地址为1,则其为0,场效应管截止,又由于P2.X有一个上拉电阻,输出就是高电平,为1。当它输出为0时,场效应管导通,引脚接地址线,那么输出就是地址线里面的电瓶。
做数据口,控制信号控制开关打向锁存器,输入时,先写1,后面的电路为0,管子截止,引脚接通,通过读引脚或者锁存器进入片内。做输出CPU发出一个脉冲,写1,使Q为1,后面电路为0,使管子截止,由于上面接上拉电阻,输出为1。
注:
当单片机复位的时候,自动写1
程序运行过程中,已经改为输出了,再改为输入要先写个1。
总结:
作为地址输出线时,P2输出高8位地址,P0输出低8位地址,寻址64KB地址空间。
作为通用1/0口时,P2口为准双向口。功能与P1口一样。一般情况下,P2口大多作为高8位地址总线口使用,这时就不能再作为通用I/0口使用。
也是通用I/O口,但是具有双重功能
(1)通用I/O功能
(2)第二输入、输出功能
结构图:
?工作过程:
第二输出功能一定要先写入1,则与门1端为1、1端为0,与门为0,管子截止,由于存在上拉电阻输出为高电平。输出就是1。如果第二输出时0的话,那么与门输出还为0,管子导通,输出就为0.
第一功能:用作通用的I/O口
当CPU写入0时,场效应管截止,由于上面有一个上拉电阻,为高电平,输出为1。当CPU写入1时,与门打开,场效应管导通,输出为0
注:、
画等效电路,要把上拉电阻折下来,与场效应管另一端相连。
P0做I/O口,不做总线口,那么它一定要外接上拉电阻和正负电源,否则输出不了高电平
注:上述几个口也是特殊功能寄存器
问题:P0口是双向口,其他口都是准双向口
这句话不全面,当P0做通用I/O也是准双向口,只是一般把P0作为总线口来用。
问题:特殊功能是位于哪里,是位于RAM里还是CPU里?
特殊功能寄存器实际上是占用内部RAM里面80H~FH的地址,实际上是一个独立的地址,我们可以认为它在RAM区,只不过每一个RAM有固定的用途,所以说特殊功能寄存器是CPU的一部分,是指在功能上的一部分,而不是在物理上的一部分。