270 likes | 459 Views
第 9 章 MCS-51 扩展 I/O 接口的设计. 一、复习 8255A 的应用. 二、 MCS-51 单片机与 8155H 的接口. 8155H 芯片介绍. 8155H 的命令字与状态字. 8155H 的三种工作方式. MCS-51 单片机和 8155H 的接口及编程. 三、用 74LSTTL 电路扩展并行 I/O 口. 来自 8031. a. 8255A. f. b. PC. PA. g. PB. e. c. ●. d. dp. ·. ·. ·.
E N D
第9章 MCS-51扩展I/O接口的设计 一、复习8255A的应用 二、MCS-51单片机与8155H的接口 8155H芯片介绍 8155H的命令字与状态字 8155H的三种工作方式 MCS-51单片机和8155H的接口及编程 三、用74LSTTL电路扩展并行I/O口
来自8031 a 8255A f b PC PA g PB e c ● d dp · · · 下图为某MCS-51应用系统的3位LED 8段共阴极静态显示器的接口电路(1)写出显示字符“8.”、“5”、“3”的七段码,注意:段码的最低位为“a” 段,段码的最高位为“dp” 段。 (2)已知8255A的PA口、PB口和PC口的地址分别为7FFCH、7FFDH、7FFEH,画出8255A与8031间的连线;编写程序,首先初始化8255A为方式0输出,然后使3位LED共阴极显示器从左至右显示“8.53”。
ABC: MOV DPTR, #7FFFH ;指针指向控制口 MOV A,#80H ;控制字10000000B MOVX @DPTR,A;初始化8255 MOV DPTR, #7FFCH MOV A,#0FFH MOVX @DPTR,A;写PA口 INC DPTR MOV A,#5BH MOVX @DPTR,A;写PB口 INC DPTR MOV A,#4FH MOVX @DPTR,A;写PC口 RET
9.3 MCS-51单片机与8155H的接口 9.3.1 8155H芯片介绍 1.8155H的逻辑结构 功能描述: 8155H:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口, 256个RAM字节单元,1个14位的减法定时器/计数器)。 根据上述功能描述,构想芯片的内部框图,构想引脚分配。
2.8155H的引脚功能8155H的引脚功能 (1)AD7~AD0(8条) (2)I/O总线(22条) (3)控制总线(8条) RESET:复位输入线 CE*和IO/M* RD*和WR* ALE:地址锁存允许 TIMERIN和TIMEROUT*: (4)电源线(2条) Vcc:+5V电源 Vss:地
3.CPU对8155H I/O端口的控制 (1) 8155H各端口地址分配
内部RAM地址为: IO/M*=0 00H~FFH 内部端口地址为:IO/M*=1 000-----------命令/状态寄存器 001-----------A口 010-----------B口 011-----------C口 100-----------计数器低8位 101-----------计数器高6位及计数器方式 设置位
(2)8155H的命令字 关心有什么功能
能读回哪些状态? (3)8155H的状态字
9.3.2 8155H的工作方式 1.存储器方式 对片内RAM单元进行读写,若IO/M*=0和CE*=0,则 通过AD7~AD0上的地址对RAM存储器任一单元读写。 2.I/O方式 8155H的I/O方式分为基本I/O和选通I/O两种工作 方式,如表9-3所示。可对片内任一寄存器读写, 端口地址由A2、A1、A0三位决定(见表9-2)。
(1)基本I/O方式 (2)选通I/O方式 a.选通I/O输入 b.选通I/O输出
考查定时器/计数器的学习 3. 内部定时器/计数器及使用 14位的减1定时器/计数器,计数长度和计数方式由写入计数寄存器的控制字来确定。 计数器的两个寄存器的格式如图9-16。 1.定时器/计数器的初值如何算? 2.如何装入初值,如何启动? 3.工作模式有什么说法?
M2、M1:设置定时器的4种工作方式 4种工作方式及相应输出波形如图9-17。
9.3.3 MCS-51与8155H接口及软件编程 1.MCS-51与8155H的硬件接口电路
片选: CE*=P2.7=0 内部RAM地址为: IO/M*=P2.0=0 00H~FFH 7E00H~7EFFH 内部端口地址为:IO/M*=P2.0=1 000-----------命令/状态寄存器 001-----------A口 010-----------B口 011-----------C口 100-----------计数器低8位 101-----------计数器高6位及计数器方式 设置位 7F00H~7F05H
2. 8155H的编程举例8155H 11000010B (1) 初始化程序设计 例9-3若A口定义为基本输入方式,B口定义为基本输出方 式,对输入脉冲进行24分频,初始化程序如下: START:MOV DPTR, #7F04H ;指针指向定时器低8位 MOV A,#18H ;计数初值24送A, MOVX @DPTR,A;计数初值低8位装入定时器 INC DPTR ;指针指向定时器高8位 MOV A,#40H ;设定时器连续方波输出 MOVX @DPTR,A;计数初值高6位装入定时器 MOV DPTR,#7F00H ;指向命令/状态口 MOV A,#0C2H ;设定命令控制字 MOVX @DPTR,A;A口输入,B口输出,开定时器
9.4 用74LSTTL电路扩展并行I/O口 利用74LS273和74LS244,将P0口扩展成简单的输入、输出口的电路。 74LS273输出端接8个LED发光二极管,以显示8个按 钮开关状态,某位低电平时二极管发光。 74LS244是缓冲驱动器,扩展输入口,接8个按钮开关。 74LS273和74LS244的工作受8031的P2.0、RD*、WR*三条控制线控制。电路的工作原理如下: 当P2.0=0,WR*=0(RD*=1)选中写74LS273, 8031通过P0口 输出数据到74LS273,; 当P2.0=0,RD*=0(WR*=1)时选中读74LS244,某开关按下时则对应位输入为“0”。
输出程序段: MOV A,#data ;数据→A MOV DPTR,#0FEFFH;I/O地址→DPTR MOVX @DPTR,A ;WR*为低,数据经74LS273口输出 输入程序段: MOV DPTR,#0FEFFH ;I/O地址→DPTR MOVX A,@DPTR ;RD*为低,74LS244口 ;数据读入内部RAM
例9-6编写程序把按钮开关状态通过图9-20中的发例9-6编写程序把按钮开关状态通过图9-20中的发 光二极管显示出来。程序如下: DDIS: MOV DPTR,#0FEFFH ;输入口地址→DPTR LP: MOVX A,@DPTR ;按钮开关状态读入A中 MOVX @DPTR,A ;A中数据送输出口 LCALL DELAY SJMP LP ;反复连续执行
9.5 用MCS-51的串行口扩展并行口 9.5.1 用74LS165扩展并行输入口 例9-7从16位扩展口读入5组数据(每组二个字节),并把它们转存到内部RAM 20H开始的单元中。
MOV R7,#05H ;设置读入组数 MOV R0,#20H ;设置内部RAM数据区首址 START: CLR P1.0 ;并行置入数据,S/L*=0 SETB P1.0 ;允许串行移位,S/L*=1 MOV R1,#02H ;设置每组字节数,即外扩 ;74LS165的个数 RXDAT: MOV SCON,#10H ;设串口方式0,允许接收,启动 WAIT: JNB RI,WAIT ;未接收完一帧,循环等待 CLR RI ;清RI标志,准备下次接收 MOV A,SBUF ;读入数据 MOV @R0,A ;送至RAM缓冲区 INC R0 ;指向下一个地址 DJNZ R1,RXDATA ;未读完一组数据,继续 DJNZ R7,START ;5组数据未读完重新并行置入 ……;对数据进行处理
例9-8编写将内部RAM单元30H、31H的内容经串行口 由74LS164并行输出子程序。 START: MOV R7,#02H ;设置要发送的字节个数 MOV R0,#30H ;设置地址指针 MOV SCON,#00H ;设置串行口为方式0 SEND: MOV A,@R0 MOV SBUF,A ;启动串行口发送过程 WAIT: JNB TI,WAIT ;1帧数据未发完,循环等待 CLR TI INC R0 ;取下一个数 DJNZ R7,SEND ;未完,发完从子程序返回 RET
2009-11-26 作业 • P225 9、10、11、12(选作)