论坛风格切换切换到宽版
  • 6177阅读
  • 25回复

质疑:空的单片机的4个P口真的是输出高电平的吗? [复制链接]

上一主题 下一主题
离线BG4ABM
 
发帖
1139
只看楼主 倒序阅读 0楼 发表于: 2005-07-30
前一阵做过一个试验,就是把一片空的89c51放入最小系统(仅振荡电路、复位电路、31脚接vcc),测量
后发现p1、p2、p3口全是直流5v,p0口是0.6v左右,当时我发过一个帖子,热心的朋友告诉我p0口电压低是因为没接上拉电
阻,我去翻了书,书上也说p0口要接上拉电阻,所以我对空的单片机p口全部输出高电平的结论深信不疑。
  这两天正好有空,我就把p0口全部接上了300k的电阻(后来又试过8.2k的电阻),并连接正电源,试验的结果令我非常困
惑,我换了两块空的89c51,结果都是如此:从p0.7到p0.0是周期逐渐减小的5v方波,从p2.7到p2.0也是周期逐渐减小的5v方
波,而p1口和p3口全都是直流5v。这种方波如果用直流电压表来测,肯定要大大低于5v,那么这个结果不是和空的单片机p口
全部输出高电平的结论有矛盾了吗?结果难以令人置信,但事实就是如此,不容怀疑!这种方波绝不是外界干扰,究竟是怎样
产生的呢?
  后来我发现,要使4个p口全部都输出直流高电平,除了必须在p0口接上拉电阻,还必须在单片机中写入这么一句话:
ljmp $   end,就是让pc
指针动起来,不过这样的话,似乎就不能称为空的单片机了。
离线BG9FU
发帖
1137
只看该作者 1楼 发表于: 2005-07-30
p0口与其他口不同。没有内置电阻,不要用它作输入。
离线BG4ABM
发帖
1139
只看该作者 2楼 发表于: 2005-07-30
'
p0口与其他口不同。没有内置电阻,不要用它作输入。
'
我没把p0口作输入啊,我只是在p0口接了上拉电阻口后,观察它的波形
离线BG7TBL
发帖
2965
只看该作者 3楼 发表于: 2005-07-30
把电路图贴上来看看,单片机ea脚怎么接,空的单片机是指内部程序都是0ffh吗!
“空的单片机的4个p口真的是输出高电平”怎么我在书上从来没有看到过!!!!
离线BG4ABM
发帖
1139
只看该作者 4楼 发表于: 2005-07-30
'
把电路图贴上来看看,单片机ea脚怎么接,空的单片机是指内部程序都是0ffh吗!
“空的单片机的4个p口真的是输出高电平”怎么我在书上从来没有看到过!!!!
'
我帖子中已说明了是什么电路,内部程序用编程器擦除了,当然是0ffh
离线BA5RW
发帖
48263
只看该作者 5楼 发表于: 2005-07-30
如果EA脚没拉电平,那些口就会在CPU的指挥下拼命往外面读程序指令当然就会观察到波形了吧。
离线BG4ABM
发帖
1139
只看该作者 6楼 发表于: 2005-07-30
'
如果EA脚没拉电平,那些口就会在CPU的指挥下拼命往外面读程序指令当然就会观察到波形了吧。
'
哎,你们都没仔细看我的帖子,我写得清请楚楚:31脚接vcc
离线BD6KF
发帖
1126
只看该作者 7楼 发表于: 2005-07-30
很正常的,你加的电阻特大了,2k试试
离线BD6KF
发帖
1126
只看该作者 8楼 发表于: 2005-07-30
如果是stc89c51他的内部带引导程序,在p0口有 ~~~~~
离线BG4ABM
发帖
1139
只看该作者 9楼 发表于: 2005-07-30
8.2k的电阻算大?我用的是at89c51
离线BG7TBL
发帖
2965
只看该作者 10楼 发表于: 2005-07-30
一片空的at89c51,内部程序区全部是0ffh,等于一直在执行mov r7,a指令,
当程序超过4k,开始执行外部rom的指令,这时候,p0口分时复用,p2口是地址的高8位,也就是有波形了。如果用一片容量是64k的单片机应该没有楼主说的这种现象。
离线BG4ABM
发帖
1139
只看该作者 11楼 发表于: 2005-07-30
tbl:能否说得详细点,为什么0ffh就等于在执行mov r7,a?
离线BD6KF
发帖
1126
只看该作者 12楼 发表于: 2005-07-30
你的测量应该是对的,89c51的p0端口不同于其他的端口,只有程序访问p0时才能激发内部的上拉电阻,这与其他的端口不同,又因为他是时分多路转发的,你看到的波形应该是时间转换
8。2k我用是大了点,如他不能使端口可靠底电位。
离线BD6KF
发帖
1126
只看该作者 13楼 发表于: 2005-07-30
不过他不影程序的正常执行,老朋友想搞什么发明,
离线1a2b3c
发帖
204
只看该作者 14楼 发表于: 2005-07-31
非常正确
'
一片空的at89c51,内部程序区全部是0ffh,等于一直在执行mov r7,a指令,
当程序超过4k,开始执行外部rom的指令,这时候,p0口分时复用,p2口是地址的高8位,也就是有波形了。如果用一片容量是64k的单片机应该没有楼主说的这种现象。
'


一楼发帖的人没有很好的理解51,你说写了一句本地跳转的话就对了,那是因为就是为了不使程序超出你使用的51的rom空间范围,也就不会有读取外部程序的动作了,所以就不会使p0,p2口出现变动了
所以最好多先研究研究,看书看的联贯起来,不要只看一个地方,呵呵
另外off就是mov r7,a的编译后的意思,这个自己去翻书。
离线BG7TBL
发帖
2965
只看该作者 15楼 发表于: 2005-07-31
'
[表情]
一楼发帖的人没有很好的理解51,你说写了一句本地跳转的话就对了,那是因为就是为了不使程序超出你使用的51的rom空间范围,也就不会有读取外部程序的动作了,所以就不会使p0,p2口出现变动了
所以最好多先研究研究,看书看的联贯起来,不要只看一个地方,呵呵
另外off就是mov r7,a的编译后的意思,这个自己去翻书。
'
多谢帮忙解释!!!
离线BG4ABM
发帖
1139
只看该作者 16楼 发表于: 2005-07-31
非常感谢各位的解释,现在总算明白了。我刚开始学单片机,肯定还会碰到许多问题,到时候再向大家请教。
离线BA5AG
发帖
4257
只看该作者 17楼 发表于: 2005-07-31
搂主特认真,绝对值得肯定
搂主肯定是业余的吧,这年头,有个规律,越是业余的越认真
离线BG4ABM
发帖
1139
只看该作者 18楼 发表于: 2005-07-31
工作中用到的单片机都是别人编好程的,不学也可工作,但总是跟在别人屁股后面,有点不服气,所以想自己学学
离线BG7IGJ
发帖
1998
只看该作者 19楼 发表于: 2005-07-31
书里好象是说单片机复位后,p口都为高,对于复位来说,有程序在里面才算复位,而你用的是 空 芯片,书里从没说过 空芯片 的 p口 都为高,楼主,你是从那里听来的??