单片机一个简单的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:25:03
在单片机(c51)端口输出0(端口接高电平),读回一个数据会是多少?例如MOV P1,#00H MOV A,P1 那么A会是多少(注意P1是接高电平的)?请知道的详细讲下,谢谢!
端口有接上拉电阻的 ,为什么会得到FF???我就想知道为什么不是00,谢谢!

首先,P1口有内部上拉电阻
对端口的读有读端口和读引脚两种,CPU根据不同的指令发出“读端口”还是“读引脚”。
从外部读入数据是“读引脚”,要先把端口写1,然后才能读。你往端口写0,这时端口对地低阻,但端口锁存器是1,MOV A,P1 读的是端口锁存器,当然是1.

如果P1接高电平,那么MOV P1,#00H指令会损坏单片机。

你用错了,如果把端口设为输出,该端口是不能直接接高电平的,要通过上拉电阻接高电平。不然的话如果你输出0,同时又接高电平,等于高低电平短路,单片机就会发烫甚至会烧坏。
如果你端口电路正确了,P1口都是输出0的话那A=0X00=0.如果你把P1端口都接高电平同时把P1口用来输入,那么A=0XFF=255。

因为端口电平受外部电路影响,如果电路没问题,应该是读回来:#00H

看现象好像电路有问题。

是高电平。虽然你输出了0,但是你的P口接的是高电平,输出以后变成了低电平,之后立马就变成了高电平。