单片机8051 p0~p3接口的问题

看单片机的教材上说:当p0口作为输入接口使用时,应先对该口写入1,才能正确的读入数据,这里的读入是什么意思,JB P1.0 $ 这条指令算是p0口用为输入接口吗
还有书上说当p0口作为I/O口使用时要外接上拉电阻。这里的I/O口是什么意思,和上面说的输入接口有什么区别啊
还有p3口作为输入接口时要先写个1进去吗

呵呵,傻傻的问题就傻傻地来答吧。
输入:就是把它的值拿来用;又叫读出;
输出:就是把一个值拿去给它用;又叫写入。
这样说够直白吧?

没错,JB P1.0 就是拿P1.0口作为输入用,当然你的原话“JB P1.0 $ 这条指令算是p0口用为输入接口吗”就有点驴唇对马嘴了。就像“她很漂亮,所以他是个帅哥”一样让人头晕晕。

先写入1,跟IO口内部结构有关,这个坦白说我也不知道具体原理,我对电子电路是个外行,理解不深,就强记吧。读前不写入1,程序也不一定会出错,具体看该口原先锁存器内的值,但写入1,保准不会错了。所以在诸如JB P1.0等等当作输入口用时,前面最好加个MOV P1,0FFH之类的写1指令。这个道理跟新手只用LJMP无视AJMP和SJMP一个道理!保险!安全第一,反正新手也写不完一整个ROM。

I/O口你都没听说过么?这个……就是输入输出口啦,妈咪跟老娘指的是同一个母亲,ok?
input,output,咱虽不懂鸟文,但这两个英语单词还是应该知道的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-19
读入就是读取p0口当前的输入状态
JB P1.0 $ 这条指令算是p0口用为输入接口吗?不算
P0是多功能口 既能做数据总线低8位,又可以用作普通输入输出口 I/O=输入/输出
p3口作为输入接口时要先写个1进去,每个口用作输入都要的写1
第2个回答  2011-05-19
我们的外部地址线对应的是P2和P0口 高八位是P2 低八位是P0
这个7FF8表示 但执行MOVX 指令时 在地址选通时P2口输出7FH,P0口输出为F8H

为什么要这么接呢,这个就与ADC0809的CS,A0,A1,A2与单片机的连接方式相关

比如P2.7接ADC0809的CS,P2.6接A0,P2.5接A1,P2.4接A2,P3.6接WR,P3.7接RD
那么当我们要选通第7通道进行转换时,CS=0,A0=1,A1=1,A2=1,所以P2口的高4为应该是7,其他的管脚电平随便什么都可以,你可以是7FH,也可以是70H。习惯上我们喜欢吧没有用的脚置高,这样可以省电,^_^
MOV DPTR,#7FF8H
MOVX @DPTR,A

就等效于
MOV P0,#F8H
MOV P2,#7FH;
;SETB ....如果你接了外部锁存器的话,此时将锁存器的OE置高
MOV P0,#F8H
CLR P3.6
SETB P3.6

这样就把00的数据写到了ADC0809的数据通道了
第3个回答  2011-05-19
读入是什么意思==》当外接的电平发生变化时,单片机能检测到并识别出来。
其他的不想回答了!
相似回答