为什么51单片机读取端口时, 读取前必须先置1?
51单片机读取一组端口的状态时, 读取前必须先置1: P1 = 0xFF; 然后才能读取: port_status = P1; 这是因为51单片机采用准双向1/O结构,直接读取可能得到错误结果或损坏器件。准双向的结构原因,,你可以分析分析手册里面关于IO 的那部分看看
准双向是弱上拉强下拉,置0只能输出不能输入,置0并强行输入高电平可能导致IO烧毁
仅做输入可以设置为高阻,无上下拉,端口寄存器无影响
传统51的IO只有准双向和开漏两种,意味着只要对IO赋值0必然输出低电平,对外部输入信号变化置若罔闻,所以要接收外部信号必须对IO赋值1,
只有增强型51支持将IO配置为高阻输入模式,此时输出寄存器的值不会控制IO电平,也就不会影响IO正常输入信号了。 知道了单片机原理才能更好的运用
页:
[1]