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

书上说P1——P3口在作为输入使用前,要先向该口进行写1的操作,然后单片机内部才可正确读出外部信号我的单片机电路图上画的是P1口与矩阵键盘相连矩阵键盘是4*4的请问在进行... 书上说 P1——P3口在作为输入使用前, 要先向该口进行写1的操作, 然后单片机内部才可正确读出外部信号
我的单片机电路图上画的是 P1口与矩阵键盘相连 矩阵键盘是 4*4的
请问在进行矩阵键盘扫描的时候 P1口这时候是作为输入口使用的吗?
我看到例子程序里面并没有事先往P1口写1啊
而是是为了进行矩阵键盘扫描 分别给矩阵键盘赋值了 0xfe; 0xfd; 0xfb; 0xf7;
赋值这些值我理解
就是不明白 P1口作为输入口为什么要事先往里写1?
在矩阵键盘扫描这个程序 P1口是作为输入口吗?
如果要进行写1的话 就算写了 后面的 又赋值了 0xfe 0xfd 0xfb 0xf7
不就相当于没有赋值吗?
展开
 我来答
德昂当
推荐于2017-09-22 · TA获得超过2842个赞
知道大有可为答主
回答量:1074
采纳率:100%
帮助的人:741万
展开全部
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就行。
huang984894725
2011-05-10 · TA获得超过2134个赞
知道小有建树答主
回答量:454
采纳率:0%
帮助的人:187万
展开全部
这是由于P1~P3口的结构决定的。单片机执行读引脚操作时,如果锁存器原来寄存的数据Q=0,那么由于非Q=1将使V导通,引脚P1.n会被钳位在低电平,此时即使P1.n外部电路的电平为1,读引脚的结果也是0.
因此P0~P3口作为输入口时要先写1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友07dc3b8
推荐于2018-01-02 · TA获得超过681个赞
知道小有建树答主
回答量:518
采纳率:100%
帮助的人:378万
展开全部
问题很简单,要说清不容易,原因是P0~P3都是准双向口,为什么呢?这要看四个并口的口结构图就明白了。
什么叫准双向,就是说P0~P3输出没问题,输入就不然了。就象我们常见的门,朝外开,没有拉锁,用一节弹簧拉着。出去是一顶门就开了,进来的时候,无论如何要伸手拉一下门。
这个拉门的动作就是向Px口先写1。
目的是使场效应管被钳位在低电平的漏极与源极截断。使输入的电平信号能正确的被单片机读出。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一只小白兔啦
2011-05-11
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
按键有两种触发,一种是低电平触发,一种是边沿触发,这两种触发都在高电平的前提下,所以要赋值为1。这个1并不是你所想的赋值,只是构成一种触发条件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式