首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 常用文档 > MCS-51单片机I/O端口的存取设计

MCS-51单片机I/O端口的存取设计

资料介绍
单片机资料

   MCS-51单片机通常有4个8位I/O端口,
向各端口的写数据均写入到对应端口的锁存器中,
但对各端口的读操作却有两个方式:读锁存器和读引脚
 
1 读-修改-写操作

   
Pn(指P0,P1,P2,P3)在51汇编语言中是特殊的标识符,既代表Pn端口引脚,又代表Pn锁存器
(Pn SFR)。在MCS-51指令系统中有些指令读锁存器的值,
有些指令则读引脚上的值。读锁存器指令是从锁存器中读取一个值并进行处理,
把处理后的值(原值或已修改后的值)重新写入锁存器中。这类指令称为读-修改-
写指令, 表1列举了有该功能的指令 当目的操作数是Pn端口或Pn端口的某一位时.
该指令读取锁存器的值.

[pic] 

    这些指令的一个共同特点,
就是要先并行读入Pn锁存器(非Pn端口引脚)中的值,作一定的修改,然后再写入谚端口的
锁存器。表1中晶后三条指令读-修改-
写关系不够明显。实际上它们的执行过程序是:先将Pn的8位锁存器内容一起读人,再对
指定位进行修改, 然后又 8位一起写入锁存器。

    对于读-修改-写指令。直接读锁存器而不是读端口引脚,
是因为从引脚上读出的数据不一定能真正反映锁存器的状态
例如:若用Pn的某一位引脚直接驱动一个NPN三极管的基极,当向此端口写“1” 时,
三极管导通并把端口引脚的电平钳位约0.7 V (对于硅管)
这时,CPU若从此引脚读取数据. 会把该数据(应为1)错读为0;若直接从锁存器读取,
则读出正确的数据。

    理解了Pn的特殊性及读-修改-写指令后, 就不难理解指令PUSH
Pn的含义了。它的执行过程是:读Pn引脚(非读Pn锁存器)的值,
然后将此数值压入堆栈 以下是一段测试程序:

ORG 1000H
1000 75A07F MOV P2,#7FH
1003 7900   MOV R1,#00H
1005 74……
MCS-51单片机I/O端口的存取设计
本地下载

评论

tjuljm· 2009-12-02 13:43:44
ding
tjuljm· 2009-12-02 13:43:05
aho