找回密码
 注册
关于网站域名变更的通知
查看: 166|回复: 3
打印 上一主题 下一主题

单片机教程6并行口结构

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-7-15 10:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
上两次我们做过两个实验,都是让P1.0这个管脚使灯亮,我们能设想:既然P1.0能让灯亮,那么其它的管脚可不能呢?看一下图1,它是8031单片机管脚的说明,在P1.0旁边有P1.1,P1.2….P1.7,它们是否都能让灯亮呢?除了以P1开头的外,还有以P0,P2,P3开头的,数一下,一共是32个管脚,前面我们以学过7个管脚,加上这32个这39个了。它们都以P字开头,只是后面的数字不一样,它们是否有什么联系呢?它们能不能都让灯亮呢?在我们的实验板上,除了P10之外,还有P11 -> P17都与LED相连,下面让我们来做一个实验,程序如下:
' r( [; [+ T' v+ v! H0 T* VMAIN: MOV P1,#0FFH
& |. H6 o( ]' L4 F  tLCALL DELAY
, U  F" Z; P; \  k* IMOV P1,#00H
* `, L. N; N3 S- CLCALL DELAY, z1 G7 E7 r7 l0 G* C0 d! [. {
LJMP MAIN
, {! F* P% K% u! ODELAY:MOV R7,#250
! ~4 L+ J2 \  A* K8 Q6 D( \D1: MOV R6,#250' D1 x3 [4 F+ b7 b
D2: DJNZ R6,D2
) O/ o7 k; z" P% E% a/ yDJNZ R7,D1
& g: A4 E# u0 g6 f6 k! YRET
  G7 v/ f) L. p: g2 c+ K( [END  2 V4 N* m' T6 }% Q4 c* u7 T- h

5 ^  u$ \+ s) E; L2 W2 ~将这段程序烧写到单片机中,结果如何?通电以后我们能看到8只LED全部在闪动。因此,P10->P17是全部能点亮灯的。事实上,凡以P开头的这32个管脚都是能点亮灯的,也就是说:这32个管脚都能作为输出使用,如果不用来点亮LED,能用来控制继电器,能用来控制其它的执行机构。
" D; @+ B* ]" Z' T- B
/ h2 Q9 H% O% g- j& \* ]程序分析:这段程序和前面做过的程序比较,只有两处不一样:第一句:原来是SETB P1.0,现在改为MOV P1,#0FFH,第三句:原来是CLR P1.0,现在改为MOV P1.0,#00H。从中能看出,P1是P1.0->P1.7的全体的代表,一个P1就表示了所有的这八个管脚了。当然用的指令也不一样了,是用mov指令。为什么用这条指令?看图2,我们把P1作为一个整体,就把它当作是一个存储器的单元,对一个单元送进一个数能用MOV指令。8 J, S+ z6 I) @" @8 ^' T7 Q5 `

& d0 `9 c2 V& w$ _二、第四个实验" r  C% E# Y9 q& u
6 o- Q+ R3 K1 @2 Q" V
除了能作为输出外,这32个管脚还能做什么呢?下面再来做一个单片机实验,源程序如下:8 k, n3 k" h- i0 R. T4 v& n
MAIN: MOV P3,6 A2 y, }9 p; \' M/ ], n) w
#0FFHLOOP: MOV A,
2 [2 a0 o7 O5 A0 K3 n4 wP3MOV P1,7 ~* a) x% {( Y* s  a6 P
ALJMP LOOP  
( `* L/ }% ~- U, a4 m" c; P, H7 B先看一下这个实验的结果:所有灯全部不亮,然后我按下一个按钮,第(1)个灯亮了,再按下另一个按钮,第(2)个灯亮了,松开按钮灯就灭了。从这个实验现象结合电路来分析一下程序。  
/ o& L0 t9 b7 q( e1 a5 N+ u2 V3 N2 m8 l5 J
+ v* ]- a# I- K( x从硬件电路的连线能看出,有四个按钮被接入到P3口的P32,P33,P34,P35。第一条指令的用途我们能猜到:使P3口全部为高电平。第二条指令是MOV A,P3,其中 MOV已经知道,是送数的意思,这条指令的意思就是将P3口的数送到A中去,我们能把A当成是一个中间单元(看图3),第三句话是将A中的数又送到P1口去,第四句话是循环,就是持续地重复这个过程,这我们已见过。当我们按下第一个按钮时,第(3)只灯亮了,所以P12口应当输出是低电平,为什么P12口会输出低电平呢?我们看一下有什么被送到了P1口,只有从P3口进来的数送到A,又被送到了P1口,所以,肯定是P3口进来的数使得P12位输出电平的。P3口的P32位的按钮被按下,使得P32位的电平为低,通过程序,又使P12口输出低电平,所以P3口起来了一个输入的作用。验证:按第二、三、四个按钮,同时按下2个、3个、4个按钮都能得到同样的结论,所以P3口确实起到了输入作用,这样,我们能看到,以P字开头的管脚,不仅能用作输出,还能用作输入,其它的管脚是否能呢?是的,都能。这32个管脚就称之为并行口,下面我们就对并行口的结构作一个分析,看一下它是怎样实现输入和输出的。# _! G: I' C8 E* F  _; x

' X1 a4 O  x6 D, Q, m2 |并行口结构分析:
; T5 U7 p5 n  C- V1、输出结构
+ ?3 w. ^! j. K/ o: |- ~7 ?
. d& k2 ?  Z" q' a, i4 Q9 H
<并行口结构图>  
. l9 W' `  N$ T8 E% _5 }
先看P1口的一位的结构示意图(只画出了输出部份):从图中能看出,开关的打开和合上代表了管脚输出的高和低,如果开关合上了,则管脚输出就是低,如果开关打开了,则输出高电平,这个开关是由一根线来控制的,这根数据总线是出自于CPU,让我们回想一下,数据总线是一根大家公用的线,很多的器件和它连在一起,在不一样的时候,不一样的器件当然需要不一样的信号,如某一时刻我们让这个管脚输出高电平,并要求保持若干时间,在这段时间里,计算机当然在忙个不停,在与其它器件进行联络,这根控制线上的电平未必能保持原来的值不变,输出就会发生变化了。怎么解决这个问题呢?我们在存储器一节中学过,存储器中是能存放电荷的,我们不妨也加一个小的存储器的单元,并在它的前面加一个开关,要让这一位输出时,就把开关打开,信号就进入存储器的单元,然后马上关闭开关,这样这一位的状态就被保存下来,直到下一次命令让它把开关再打开为止。这样就能使这一位的状态与别的器件无关了,这么一个小单元,我们给它一个很形象的名字,称之为“锁存器”。/ s- V, U& t3 B4 C; X
5 d  G2 c8 \5 D/ u3 S& B( P
2、输入结构  
+ }5 h# w7 R2 S  ?0 g这是并行口的一位的输出结构示意图,再看,除了输出之外,还有两根线,一根从外部管脚接入,另一根从锁存器的输出接出,分别标明读管脚和读锁存器。这两根线是用于从外部接收信号的,为什么要两根呢?原来,在51单片机中输入有两种方式,分别称为‘读管脚’和‘读锁存器’,第一种方式是将管脚作为输入,那是真正地从外部管脚读进输入的值,第二种方式是该管脚处于输出状态时,有时需要改变这一位的状态,则并不需要真正地读管脚状态,而只是读入锁存器的状态,然后作某种变换后再输出。  : Q/ v5 S. g# B, t; U5 ]' Z0 i

! ~0 S8 g8 M: {. O( T9 R请注意输入结构图,如果将这一根引线作为输入口使用,我们并不能保证在任何时刻都能得到正确的结果(为什么?)参考图2输入示意图。接在外部的开关如果打开,则应当是输入1,而如果闭合开关,则输入0,但是,如果单片机内部的开关是闭合的,那么不管外部的开关是开还是闭,单片机接受到的数据都是0。可见,要让这一端口作为输入使用,要先做一个‘准备工作’,就是先让内部的开关断开,也就是让端口输出‘1’才行。正因为要先做这么一个准备工作,所以我们称之为“准双向I/O口”。  
- N/ q3 E, L% x! }$ W" b: y# i  ^7 o6 v; y8 s+ p  ^
以上是P1口的一位的结构,P1口其它各位的结构与之相同,而其它三个口:P0、P2、P3则除入作为输入输出口之外还有其它用途,所以结构要稍复杂一些,但其用于输入、输出的结构是相同的。看图()。对我们来说,这些附加的功能不必由我们来控制,所以我们就不去关心它了。- D) C3 `& {7 E
( @* Q! T- Q) {3 k

该用户从未签到

2#
发表于 2022-7-15 10:44 | 只看该作者
有价值的学习资料,多一些支持。。。

该用户从未签到

3#
发表于 2022-7-15 13:37 | 只看该作者
支持楼主,多发一些,O(∩_∩)O哈哈~。。。

该用户从未签到

4#
发表于 2022-7-15 16:26 | 只看该作者
多发一些,O(∩_∩)O哈哈~。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-20 21:36 , Processed in 0.093750 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表