89C51单片机的P0~P3端口进行输入时为什么要设置为1?

发布者:CrystalDawn最新更新时间:2016-11-24 来源: eefocus关键字:89C51  单片机  端口 手机看文章 扫描二维码
随时随地手机看文章

89C51单片机的P0~P3口不是标准意义的双向口 ,他只是准双向口,

你可以对照着P0口的结构图看这段话,向端口写1,就是向锁存器写1,

也就是让其口输出FF,为什么,是这样的,给锁存器写1,那么锁存器

的反向端就输出0,那么和它相接的MOS管也就在截止状态,也就是呈高

阻态,这样P0口上数据就会从读引脚的三态缓冲器上正确的输入,如果

不写1,那么锁存器上次锁存的可能为0,那么反向端有可能出现1,这样

和反向端相接的MOS管就倒通,也就是直接拉到地,那么不管你P0口上输

入什么信号都会拉成低电平,输入就错了

双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需

要对其置1,否则若前一位为低电平,后一位输入的电平为高则MOS管拉不起来

导致出错。而双向口则不需要做此动作,因为双向口有悬浮态。

准双向口只能有效的读取0,而对1则是采用读取非零的方式,就是读入的

时候要先向接口上写1,然后再读。

真正的双向口正如其名,就是真正的双向io不需要任何预操作可直接读入读出



转自:http://wenwen.soso.com/z/q184033008.htm

对照MCS-51的各通道结构:

  

 

 

I/O口有三种操作方式:输出数据方式,读端口数据方式,读端口引脚方式

输出数据方式:  

     只要一条数据操作指令就可以把输出数据写入P0~3的端口锁存器,然后通过输出驱动器送到端口引脚。

     eg.        MOV   P0, A

                  MOV   P0, #data

读端口数据方式:

    是一种仅对锁存器中数据进行读入的操作方式,读入的这个数据并非端口引脚输入的数据。CPU只要一条传送指令就可以把端口锁存器中的数绝读入累加器A或内部RAM中。

    eg.        MOV   A, P1

                 MOV   R1, P1

读端口引脚方式:

   从端口引脚线上读入信息。CPU首先必须将欲读端口引脚所对应的锁存器置位,以便驱动T2管(其他端口的T管)截止;然后打开输入三态缓冲器,使相应端口引脚上的信号输入MCS-51内部数据总线。所以,要用两条指令来完成读端口引脚。

    eg.       MOV     P1, #0FH

                MOV     A, P1                        ;   先使P1口低四位置位,然后读P1端口第四位引脚线信号送往A。 


关键字:89C51  单片机  端口 引用地址:89C51单片机的P0~P3端口进行输入时为什么要设置为1?

上一篇:C51的日历时钟程序
下一篇:C51结构、联合和枚举的使用

推荐阅读最新更新时间:2024-03-16 15:22

ATMEGA16 IO端口相关总结
ATMEGA16 IO端口相关的寄存器总共有三个DDRX、PORTX和PINX。如果要对IO操作基本上就是对这三个寄存器进行相关的操纵。DDRX也称为数据方向寄存器、PORTX称为数据寄存器、PINX称为端口输入引脚。 DDRX的作用: 当DDRX = 0时,表示的是某端口的引脚为输入;当DDRX = 0xff时表示某端口的引脚为输出。 引脚的状态:输入或者输出是根据什么定义的呢? 是根据高低电平是输入单片机还是从单片机输出。输入是指:不属于单片机的外部的电平输入到单片机;输出是指:单片机的电平输出到单片机的外部。 PORTX的作用: 当DDRX = 0时,若把PORTX置位则表示启动了上拉电阻;若PORTX为0,
[单片机]
ATMEGA16 IO<font color='red'>端口</font>相关总结
用51单片机做一个电子钟
学了一个多月51了,终于整了个电子钟出来,个人感觉还是比较有趣的。 需要注意的是我用的是普中的板子,板子类型不同,io口的功能可能会有所差异。然后我这个k1开关和k2开关是接反了的,原本k1应该是接P3^0,k2接P3^1的,结果我一测试才知道k1接到了P3^1,k2接到P3^0了,不过这不要紧,用sbit定义位变量时注意换一下就可以了。然后大概讲讲功能,用8个数码管显示目前时间和闹铃时间,然后用4个独立按键对目前时间和闹铃时间进行调整(k2是加,k3是减 ,k4是用来停止闹铃的),第一次按k1是对目前时间秒数调整,第2次按k1是对目前时间分钟数调整,第三次按k1是对目前时间小时数调整,第4次按k1是对闹铃秒数调整,第5次按k
[单片机]
单片机在智能电饭煲中的应用
1 引言 目前,市场上的电饭煲大部分采用机械式或者是采用固定功率的方式加热,能源利用率低,功能单一,难以满足人们日益增长的生活需求。因此,开发功能齐全,安全可靠的微电脑电饭煲是非常用必要的。电饭煲从机械式原理到现在的智能电饭煲,期间经历了许多的阶段。电饭煲发挥高新技术优势,以美味炊煮为主导,使产品更加丰富与时尚化,现已形成微电脑、电脑与机械三大类型、十大不同款式。机械电饭煲虽然价格方面体现它的优势之外,其他方面就很难满足人们对现代生活高品质的需求。微电脑或电脑控制的智能电饭煲符合现代人的要求,人性化的界面设计,使得人们一眼看出当前工作状态,让您更安心,各种烹调过程全部由电脑自动控制,并且大多的智能电饭煲采用太空“黑晶”
[单片机]
MCU串口通讯的尝试
我尝试了一下。我使用的14.7456的晶振,想采用9600 8 1 n的方式通讯,其实是与另外的一个板子(s3c6410)那么单片机的串口设置就的有一定的值。计算公式是这样的: F = 14.7456 Baud = 9600(12T模式) BELOAD = 256 - INT(14745600/9600/32/12 + 0.5) = 256 - INT(5.5) = 256 - 4 = 251 Baud = 14745600 /(256 - 254)/ 32 / 12 = 9600 没有任何的误差 我试验过另外的一个,38400,8,N,1的格式此时 BELOAD =
[单片机]
基于51单片机的智能加湿器(DHT11源程序)
继电器&&加湿器模块DXP原理图 加湿器模块实物 proteus仿真图 1、硬件连接 //DHT11 io = P1^0; //DHT11 DATA端口 //蜂鸣器和LED sbit Beep = P2^0; //蜂鸣器 sbit Led = P2^1; //LED sbit Led_SF = P2^2; //喷雾LED sbit Led_DJ = P2^3; //待机LED //按键 sbit Key_Wake = P2^4; //按键接地 sbit Key_Set = P1^2; //设置按键 //Version:2.0 sbit Key_Sel = P1^3; //上下限选择 sbit Key_
[单片机]
基于51<font color='red'>单片机</font>的智能加湿器(DHT11源程序)
基于Microchip单片机及收发器实现的低成本LIN总线
  随着汽车总线应用的日益普及以及对汽车成本的要求越来越严格,LIN总线的市场占有率越来越高。本文从低成本的角度来实现LIN总线的节点,具有非常高的实用价值。   1 LIN的基本知识与发展   1.1 LIN的基本知识   局域互连网络LIN(Local IntercONnect Network)是低成本的串行通信网络,用于实现汽车中的分布式电子系统控制,是现有多种汽车网络在功能上的补充;同时它也是一个开放的标准,作为CAN总线的子总线,能缓解CAN总线数据拥挤的现状。   由于LIN总线是可靠、低成本、开放标准的网络解决方案,它可以简化现存的多点解决方案,并且能降低在汽车电子领域中的开发、生产、服务和后勤成本。
[嵌入式]
基于单片机的高压驱动电源设计
引言 压电陶瓷作为一种微位移器件,在精密工程应用领域里有着广泛的应用前景。压电陶瓷材料的工作特性很大程度上取决于驱动电源的性能,驱动电源必须输出稳定性好的高幅值电压,并具有较好的动态性能,可适应外界条件的突变。传统的高压驱动电源通常以模拟脉宽调制芯片为核心控制开关电路、整流电路等完成稳定电压输出。随着数字控制技术的发展,单片机、数字信号处理器等数字芯片也逐渐参与到开关电源的设计,带来了可编程性、高集成度、高扩展性等优点 。本文提出了一种基于MC68HC9O8JK3芯片的高压开关电源,在低压(9~18 V)输入下能输出高精度频率可调输出电压,可满足压电陶瓷驱动电源的应用需求。 1 高压开关电源的设计 高压电源输入9~18 V,
[单片机]
基于<font color='red'>单片机</font>的高压驱动电源设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved