单片机P1——P3口作为输入口的时候 为什么要先向该口写1呢?

2025-01-05 05:51:16
推荐回答(4个)
回答1:

P1口可输入可输出。
P1口作为输入口, 怎么作为?
哪条指令让它作为输入口,怎么样才能让它作为输入口,光靠我们想像行吗?
有的单片机,会有个寄存器,设置IO口是输入还是输出,但这个没有。
那这个怎么让它成为输入或者输出呢。
每个口上都有一个锁存器,锁住之前写的值。
比如,口上只是接一个上拉电阻,这个口作为输入应该是高电平吧。
那你往口里写一个0,口会输出0,这个口就成了低电平了。
此时,你读这个IO口,也会是低电平。
如果不改写为1,锁存器内就一直是0,也就是输出0 ,程序读这个口上的电平也是0。
改写为1后,这个口上的电平才会1,或者说,不会把这个口拉低。
作为输入口时,要事先写1,也可以不用每次都写,只要里面不是0就成。
那个扫描键盘的,赋值,0xfe就相当于,把P1口的高7位都写了1,最低位写0,
也就是P10输出0,然后读高4位,看有没有按键。接下来,0xfd是P11输出0,也是读高4位,看P11那一排的有没有按键。
这都写了1的,不是P17=1才叫写1,P1=0xfe 整体赋值也是写1。往你想读的口写1就行。

回答2:

这是由于P1~P3口的结构决定的。单片机执行读引脚操作时,如果锁存器原来寄存的数据Q=0,那么由于非Q=1将使V导通,引脚P1.n会被钳位在低电平,此时即使P1.n外部电路的电平为1,读引脚的结果也是0.
因此P0~P3口作为输入口时要先写1

回答3:

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

回答4:

按键有两种触发,一种是低电平触发,一种是边沿触发,这两种触发都在高电平的前提下,所以要赋值为1。这个1并不是你所想的赋值,只是构成一种触发条件。