单片机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
不就相当于没有赋值吗? 展开
我的单片机电路图上画的是 P1口与矩阵键盘相连 矩阵键盘是 4*4的
请问在进行矩阵键盘扫描的时候 P1口这时候是作为输入口使用的吗?
我看到例子程序里面并没有事先往P1口写1啊
而是是为了进行矩阵键盘扫描 分别给矩阵键盘赋值了 0xfe; 0xfd; 0xfb; 0xf7;
赋值这些值我理解
就是不明白 P1口作为输入口为什么要事先往里写1?
在矩阵键盘扫描这个程序 P1口是作为输入口吗?
如果要进行写1的话 就算写了 后面的 又赋值了 0xfe 0xfd 0xfb 0xf7
不就相当于没有赋值吗? 展开
展开全部
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就行。
展开全部
这是由于P1~P3口的结构决定的。单片机执行读引脚操作时,如果锁存器原来寄存的数据Q=0,那么由于非Q=1将使V导通,引脚P1.n会被钳位在低电平,此时即使P1.n外部电路的电平为1,读引脚的结果也是0.
因此P0~P3口作为输入口时要先写1
因此P0~P3口作为输入口时要先写1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按键有两种触发,一种是低电平触发,一种是边沿触发,这两种触发都在高电平的前提下,所以要赋值为1。这个1并不是你所想的赋值,只是构成一种触发条件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询