为什么C51准双向IO口做输入时需要写1?不写1不行么?写1是指例如:P1=1,还是P1=0xff;?谢谢

作者&投稿:席娥 (若有异议请与网页底部的电邮联系)
51 AD转换,用ADC0804,数据接P1.0-1.7,例子要求读取数据前先用P1=0Xff将P1口写1,什么原因?为何不写0?~

51的P1口可输入可输出。
那么哪条指令让它作为输入口,怎么样才能让它作为输入口呢?
每个口上都有一个锁存器,锁住之前写的值。
比如,口上只是接一个上拉电阻,这个口作为输入应该是高电平吧。
那你往口里写一个0,口会输出0,这个口就成了低电平了。此时,你读这个IO口,也会是低电平。
如果不改写为1,锁存器内就一直是0,也就是输出0 ,程序读这个口上的电平也是0。
改写为1后,这个口上的电平才会1,或者说,不会把这个口拉低。
作为输入口时,要事先写1,也可以不用每次都写,只要里面不是0就成。


简单的来说就是:因为单片机的构造(上拉了电阻),需要将P1口写1,使之成为高电平,能够作为输入口。

你这个程序中是连续两行写P1口,那每一行就是多余的啦。第一行不管写什么,到了第二行就重新写了,所以,第一行删掉了一点影响都没有啊。
P1=0xff; //先向P1口写1;端口读状态
P1=0xf0;//重新写了,第一行就没有用了。
在需要读的时候,在读之前要对输入线写1,你这程序中就有两处吗:
P1=0xf0;
temp=P1; 这前面的写P1口就是必须的。

P1=0xfe;
temp=P1;这前面的写P1口也是必须的。

不写一不行,时输入就得写一,这是他的硬件电路决定的,P0口还要加上上电阻。51单片机准双向IO口有四组,每组有0到7个口,也是Px^0-Px^7。那么例如你说的要取P1一组的话就要先写P1=0xff;,只要对P0^0一个口取数据的话就写P0^0=1;


在C51编程中P1到底是什么,又控制灯亮,又控制蜂鸣器
P1是51系列单片机的一个8位端口,根据你的电路决定这8位能干什么,如:几位输入,几位输出,灯和蜂鸣器都是输出,输出又有高有效还是低有效,例如LED负极经过1K电阻到P1_1,LED正极接VCC,那么P1_1输出低时,LED就会亮。蜂鸣器要响可能还需要一个三极管驱动。如果P1的几位作输入,则可以识别键盘的几...

51单片机可以用reg52.h的头文件吗
\/\/高8位地址总线,一般也作普通I\/O用sfr P3 = 0xB0; \/\/双功能\/\/1.准双向 IO口 P3口\/\/2. P30 RXD串行数据接受\/\/ P31 TXD串行数据发送\/\/ P32 外部中断0 信号申请\/\/ P33 外部中断1 信号申请\/\/ P34 定时\/计数器T0 外部计数脉冲输入\/\/ P35 定时\/计数器T1 外部计数脉冲输入\/\/ P36 WR 片外RAM写...

这是AT89C2051什么型号的说具体点谢谢哈
P3.0~P3.6共7脚,准双向端口,并且保留了全部的P3的第二功能,如P3.0、P3..1的串行通讯功能,P3.2、P3..3的中断输入功能,P3.4、P3.5的定时器输入功能。在引脚的驱动能力上面,89C2051具有很强的下拉能力,P1,P3口的下拉能力均可达到20mA.相比之下,89C51\/87C51的端口下拉能力每脚最...

谁能给个51系列MCU详细信息列表?
准双向口,内部设有上拉电阻。 输出数据:写 0 , T 管饱和导通,输出为低 写1 , T 管截止,输出上拉为高 输入数据:读锁存器 读引脚:读入前,先向输出锁存器写高电平使输出管截止 二、 P3 口的结构P3 口作为一般的 I\/O 口使用:类 P1 口用作 I\/O 口,输出时第二输出功能信号 W=1 P3 口作为第二...

单片机的 分类
从应用的角度,单片机大致可分为四种。(1)通用型\/专用型。(2)总线型\/非总线型。(3)CISC/RISC指令结卡构。(4)OTPROM型\/EPROM型\/FLash ROM型 硬件特征 (1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。(2)单片机有着较高的集成...

8031和8051主要有什么区别?各有什么特点?
①P0口(39脚至32脚):是双向8位三态I\/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。②P1口(1脚至8脚):是准双向8位I\/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I\/O口。P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对...

keil4 如何加载头文件
\/* 0 0 传统51准双向口模式 *\/\/* 0 1 推挽输出,上拉20mA *\/\/* 1 0 高阻单向输入,AD必须。 *\/\/* 1 1 开漏输出,AD也可以选择 *\/sfr P3 =0xB0; \/* P3口地址 *\/sfr P3M0=0xB1; \/* P3口方向0 *\/sfr P3M1=0xB2; \/* P3口方向1 *\/\/*--- IAP\/IAP 功能寄存器 --- *\/sfr ISP_DATA ...

89C51RC的引脚功能
④可编程输入\/输出引脚(32根)STC89C52单片机有4组8位的可编程I\/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。  PO 口(Pin39~Pin32):8位双向I\/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8):8位准双向I\/O口线,名称为P1.0~...

STC89C52和AT89C51有什么区别?
1、生产的公司不同 AT89C52是Atmel公司生产;STC89C52是宏晶公司生产。2、RAM和ROM不同 AT89C52是128byteRAM,4KROM;STC89C52是256Byte,8KROM。3、定时器数量不同 AT89C52有T0、T1两个16位定时器;STC89C52有T0、T1、T2三个16位定时器。

求助:C51单片机P0口和P1口实际应用的区别
为了解决用户可能碰到关于"求助:C51单片机P0口和P1口实际应用的区别"相关的问题,志乐园经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"求助:C51单片机P0口和P1口实际应用的区别"相关的详细问题如下:p0口是漏级开路,必须加上拉...

左云县19217719298: 为什么C51准双向IO口做输入时需要写1?不写1不行么?写1是指例如:P1=1,还是P1=0xff;?谢谢 -
解歪盐酸: 不写一不行,时输入就得写一,这是他的硬件电路决定的,P0口还要加上上电阻.51单片机准双向IO口有四组,每组有0到7个口,也是Px^0-Px^7.那么例如你说的要取P1一组的话就要先写P1=0xff;,只要对P0^0一个口取数据的话就写P0^0=1;

左云县19217719298: 51单片机为准双向口,读入前先写1,为什么有 -
解歪盐酸: 因为51准双向口的结构是对地有一个mos管,对Vcc有一个上拉电阻,如果写0mos管导通这样IO口就被拉到低电平了,无论外接电路如何读都是0,如果先写1那么对地mos管截止,IO口被上拉电阻拉到高电平了,这时有低电平输入也会被拉低,希望对你有帮助

左云县19217719298: 单片机中:什么是准双向输入输出? -
解歪盐酸: P0口作为输入的时候需要先向端口写1,然后再输入,具体如下: P0口的结构图中,向端口写1,就是向锁存器写1,那么锁存器的反向端就输出0,那么和它相接的MOS管也就在截止状态,也就是呈高阻态,这样P0口上数据就会从读引脚的三态缓冲器上正确的输入,如果不写1,那么锁存器上次锁存的可能为0,那么反向端有可能出现1,这样和反向端相接的MOS管就倒通,也就是直接拉到地,那么不管你P0口上输入什么信号都会拉成低电平,输入就错了准双向口就是做输入用的时候要有向锁存器写1的这个准备动作,所以叫准双向口. 双向口是可以直接输入和输出,不需要做什么准备工作的.

左云县19217719298: 单片机的四个并行口可以做准双向IO使用,作为输入口为什么必须输入高电平
解歪盐酸: 不是一定的 你说的那种I/O是开漏的,如果输入低电平,该口无论输入高低电平都会被拉至低电平,也就无法正确识别输入电平 还有其它不同的I/O类型,另说

左云县19217719298: 51单片机io口做输入时候要先置1才能检测外部的输入,但是检测到了低电平后还能在检测高电平了么?? -
解歪盐酸: 只 io口做输入时候要先置1就行,检测到了低电平,是因为外部电路输入 是低电平,当外部输入高电平时,就会检测到高电平的,这是由外部电路决定的,放心好了.

左云县19217719298: 89C51单片机的P0~P3端口进行输入时为什么要设置为1? -
解歪盐酸: 89C51单片机的P0~P3口不是标准意义的双向口 ,他只是准双向口 你可以对照着P0口的结构图看这段话,向端口写1,就是向锁存器写1, 也就是让其口输出FF,为什么,是这样的,给锁存器写1,那么锁存器 的反向端就输出0,那么和它相接...

左云县19217719298: 51单片机的准双向I/O口在使用前必须进行写1操作,但上电时,单片机默认为高电平,即还需要进行写1操作不? -
解歪盐酸: 51单片机的准双向I/O口在使用前必须进行写1操作, --只是在《读》IO口之前,需要写1.但上电时,单片机默认为高电平,即还需要进行写1操作不? --不用了.只是当做输入接口来用,才有写 1 这个说法. 写过一次 1 (或复位后自动置 1),就可以正确输入数据了.但是,如果写了 0,那么,接着输入的数据,将有可能是不准确的. 所以,应该强调的是:《千万不要写 0.》!!!写 1,完全没有必要这么重视. 因为开机时,自动就写了1.

左云县19217719298: 单片机P1—P3口作为输入口的时候,为什么要先向该口写1呢? -
解歪盐酸: 问题很简单,要说清不容易,原因是P0~P3都是准双向口,为什么呢?这要看四个并口的口结构图就明白了. 什么叫准双向,就是说P0~P3输出没问题,输入就不然了.就象我们常见的门,朝外开,没有拉锁,用一节弹簧拉着.出去是一顶门就开了,进来的时候,无论如何要伸手拉一下门. 这个拉门的动作就是向Px口先写1. 目的是使场效应管被钳位在低电平的漏极与源极截断.使输入的电平信号能正确的被单片机读出.

左云县19217719298: C51单片机的P1,P2,P3口为准双向口,它们作为输入口和输出口时在操作上有什么不同 -
解歪盐酸: AT类51单片机做输入时最好加1个上拉10K电阻 做输出时也加上4.7K电阻做上拉比较好的

左云县19217719298: 51单片机P0口输入输出的设置及准双向口怎么理解 -
解歪盐酸: 你可以对照着P0口的结构图看这段话,向端口写1,就是向锁存器写1,也就是让其口输出FF,为什么,是这样的,给锁存器写1,那么锁存器的反向端就输出0,那么和它相接的MOS管也就在截止状态,也就是呈高阻态,这样P0口上数据就会从读引脚的三态缓冲器上正确的输入,如果不写1,那么锁存器上次锁存的可能为0,那么反向端有可能出现1,这样和反向端相接的MOS管就倒通,也就是直接拉到地,那么不管你P0口上输入什么信号都会拉成低电平,输入就错了 准双向口你可以这样理解,准爸爸,准妈妈这一类的词语你应该理解,那么准双向口也是这个意思,就是做输入用的时候要有向锁存器写1的这个准备动作,所以叫准双向口.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网