关于单片机P1口读所存器与读引脚!

书上说MCS-51的4个I/O端口共有三种操作方式:输出数据方式、读端口数据方式和读端口引脚方式。
读端口数据方式是一种仅对端口锁存器中数据进行读入的操作方式。CPU读入的这个数据并非端口引脚的数据。例如:MOV A,P1(P1锁存器中数据送A)
读引脚方式可从端口引脚上读入信息。先将对应锁存器置1,然后读入引脚数据。例如:MOV P1,#0FH(使P1口低4位锁存器置1)MOV A,P1(读P1口低四位引脚信号)

问题:读端口数据方式(读锁存器)是MOV A,P1;读引脚也有MOV A,P1。那么系统是如何判断是读锁存器还是读引脚呢?
假如读锁存器之前,锁存器中有几位已经置1了,那执行MOV A,P1命令不是读引脚了吗?
p1口电路逻辑图:http://xd.sdibt.edu.cn/mcu/pic/dianzijiaoan3-4.htm
感觉1L的说得有道理啊,书是我们学校自己出的。 怎么没人回答了呢?

第1个回答  2009-12-13
楼主没有弄清楚,标准51单片机IO脚采用准双向口,引脚输入是没有锁存的,只有输出是带锁存器,在设置P1口为高电平时,P1实际上既可以作为高电平输出,也可以作为输入(这要求外部源有足够的驱动能力,至少能够吸收1mA电流),所以MOV A,P1就是一次读8个引脚, maxiurui说的逻辑指令可以一次读一个引脚。若设置设置P1口为低电平时,MOV A,P1读锁存器。

需要注意的是,一些新型51单片机设置了专用的引脚功能选择寄存器,这时MOV A,P1读的是输出寄存器还是引脚就需要考虑专用的引脚功能选择寄存器的设置了。
第2个回答  2009-12-12
你这是教材吗?资料好像有问题啊,读锁存器用的不是mov,应该是ANL(相与),ORL(相或)等这样的语句
按照这个资料的话确实没办法区分了本回答被提问者采纳

关于单片机P1口读所存器与读引脚!
楼主没有弄清楚,标准51单片机IO脚采用准双向口,引脚输入是没有锁存的,只有输出是带锁存器,在设置P1口为高电平时,P1实际上既可以作为高电平输出,也可以作为输入(这要求外部源有足够的驱动能力,至少能够吸收1mA电流),所以MOV A,P1就是一次读8个引脚, maxiurui说的逻辑指令可以一次读一个引脚...

51单片机读引脚与读锁存器的问题
51单片机的P1读的是引脚上的电平 即使你把io口置位 也可能被外部电路拉低 所以有没有外设读到的电平可能会不一样 因为51单片机io口没有三态 所以读io口时要先将io口置位

有关单片机读端口、读引脚的问题
80C51单片机有P0-P3四个P口,以P0为例说明:要搞清这个问题,就要明白p0口的内部结构。P0口是由锁存器经两个驱动场效应管和外部引脚相连的。读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位。两者不同。一般来说,读取P0的数据,都是读引脚,目的是获取与P0相连...

51单片机C语言里有读引脚和读锁存器之分吗?这个P1 = P1 || 5; 请问...
1.读引脚是通过读锁存器的值来读取的 2.这不是读语句,是改变P1口的状态(P1=1),使P1.0输出高电平。3.需要写1的,C编程不会自动写1是复位后,I\/O自动被置位高电平。4.分辨一个端口是输入或者输出,是根据读这个端口(作为输入),或这写这个端口(输出口)来区分的。如P1=0x08;P1做...

51单片机 读引脚与读锁存器的问题
P1口有上拉,读的时候就会直接读到上拉的点,接了外设,由于外设的原因造成端口被拉低,读取的时候就会读到低电平。如果外设的接口也是高电平,那就是高电平。

在单片机中,当P0口作为输入口使用时,为什么要区分" 读引脚" 和"读...
不光是P0口,标准51单片机的所有IO口都有“读引脚”和“读锁存器”的问题。其实这类问题也很好解释,自己去看看51单片机的IO脚框图就豁然开朗了。读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位。一般来说,读取P0的数据,都是读引脚,目的是...

单片机问题,锁存器与引脚的使用冲突.
这个问有点问题,P1是8位的寄存器(不叫锁存器,锁存器一般是在外部的),是不能存入16数的,只能存8位,即是0xFE。有一个问题你没有搞清楚,所以,才这么问,其实问题很简单,就是向P1口写数据,即是存入数据是写到寄存器P1中,至于是不是像个内存单元都不重要。而读P1口是读引脚,并不是...

89C51单片机中度端口锁存器和“读引脚”有何不同?各使用那种指令?_百度...
单片机的引脚,输出了数据后,其电压,受到外接电路的影响,会发生改变。读引脚,和读锁存器,数值,就不一定相同。读引脚:MOV A, P1 读锁存:ORL P1, #0FH. 这是"读改写"指令。

在单片机中,什么叫读引脚,什么叫读端口,它们有什么区别?
读引脚:将引脚作为输入,从真正的外部引脚读进输入的值 读端口:这是引脚作为输出端使用时采用的工作方式,单片机的一些指令,如取反指令,这一类指令的最终结果虽然是把并行口作为输出来使用 但在执行它的过程中却要先“读”,这里的引号指读的是锁存器,而不是真正的引脚值。为什么要读锁存器而不...

单片机中的“读-修改-写”和“读引脚”有何不同
在pic单片机中“读-修改-写”是单片机内部自己执行的,它发生在写IO口的时候,当写IO口的时候它先把IO的当前状态读回来,根据要写的数据修改读回来的数据,再写到IO口;读引脚是直接读引脚的当前状态,当前引脚是高电平,读回来的就是高电平,低电平时读回来的就是低电平 ...

相似回答