单片机P1——P3口作为输入口的时候 为什么要先向该口写1呢?
答案:4 悬赏:60 手机版
解决时间 2021-03-24 08:31
- 提问者网友:咪咪
- 2021-03-24 04:28
单片机P1——P3口作为输入口的时候 为什么要先向该口写1呢?
最佳答案
- 五星知识达人网友:拜訪者
- 2021-03-24 05:42
问题很简单,要说清不容易,原因是P0~P3都是准双向口,为什么呢?这要看四个并口的口结构图就明白了。
什么叫准双向,就是说P0~P3输出没问题,输入就不然了。就象我们常见的门,朝外开,没有拉锁,用一节弹簧拉着。出去是一顶门就开了,进来的时候,无论如何要伸手拉一下门。
这个拉门的动作就是向Px口先写1。
目的是使场效应管被钳位在低电平的漏极与源极截断。使输入的电平信号能正确的被单片机读出。
什么叫准双向,就是说P0~P3输出没问题,输入就不然了。就象我们常见的门,朝外开,没有拉锁,用一节弹簧拉着。出去是一顶门就开了,进来的时候,无论如何要伸手拉一下门。
这个拉门的动作就是向Px口先写1。
目的是使场效应管被钳位在低电平的漏极与源极截断。使输入的电平信号能正确的被单片机读出。
全部回答
- 1楼网友:梦中风几里
- 2021-03-24 06:49
按键有两种触发,一种是低电平触发,一种是边沿触发,这两种触发都在高电平的前提下,所以要赋值为1。这个1并不是你所想的赋值,只是构成一种触发条件。
- 2楼网友:三千妖杀
- 2021-03-24 06:31
这是由于P1~P3口的结构决定的。单片机执行读引脚操作时,如果锁存器原来寄存的数据Q=0,那么由于非Q=1将使V导通,引脚P1.n会被钳位在低电平,此时即使P1.n外部电路的电平为1,读引脚的结果也是0.
因此P0~P3口作为输入口时要先写1
因此P0~P3口作为输入口时要先写1
- 3楼网友:由着我着迷
- 2021-03-24 05:57
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就行。
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就行。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯