第8章51单片机的IO扩展.ppt

上传人:sccc 文档编号:4966145 上传时间:2023-05-26 格式:PPT 页数:98 大小:3.60MB
返回 下载 相关 举报
第8章51单片机的IO扩展.ppt_第1页
第1页 / 共98页
第8章51单片机的IO扩展.ppt_第2页
第2页 / 共98页
第8章51单片机的IO扩展.ppt_第3页
第3页 / 共98页
第8章51单片机的IO扩展.ppt_第4页
第4页 / 共98页
第8章51单片机的IO扩展.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《第8章51单片机的IO扩展.ppt》由会员分享,可在线阅读,更多相关《第8章51单片机的IO扩展.ppt(98页珍藏版)》请在三一办公上搜索。

1、第8章 单片机的I/O扩展,本章内容,系统扩展的含义I/O口的扩展利用I/O接口芯片:82C51、81C51的I/O口扩展,8.1 单片机的系统扩展概述,系统扩展的含义在单片机芯片外加相应的芯片、电路,使得有关功能得以扩充,称为系统扩展。系统扩展包括:外部存储器扩展,I/O接口扩展,总线扩展等系统扩展分类单一功能的扩展综合功能的扩展,8.1 单片机I/O扩展概述,扩展I/O接口电路的功能:速度协调输出数据锁存输入数据三态缓冲数据转换,为什么要扩展I/O口单片机本身接口功能有限单片机控制应用中的复杂接口要求,常用编址方法有:独立编址和统一编址。MCS51单片机采用与外部RAM统一编址方法,即每一

2、个扩展的I/O口相当于一个扩展的RAM单元;访问外部I/O口的指令同访问外部数据存储器指令。,51单片机扩展I/O接口编址方法,例如:MOVXDPTR,AMOVXA,DPTR MOVXRI,AMOVXA,RI;其中,DPTR、RI中装I/O对应的地址,(1)无条件传送方式无条件传送也称为同步程序传送。只有那些能一直为数据I/O传送作好准备的设备,才能使用无条件传送方式。因为在进行I/O操作时,不测试设备的状态,可以根据需要随时进行数据传送操作。该方式适用于两类设备的数据输入输出:具有常驻的数据信号变化缓慢的数据信号的设备。无条件传送接口逻辑示于图8-1,单片机I/O控制方式,图8-1 无条件传

3、送的接口逻辑,在I/O操作之前,要先检浏设备的状态,以了解设备是否已为数据I/O作好了准备;只有在确认设备已“准备好”的情况下,单片机才能执行数据I/O操作。操作流程见图8-2为了实现查询方式的数据传送,需要由接口电路提供设备状态,并以软件方法进行状态测试。这是一种软硬件方法结合的数据传送方式。程序查询方式,电路简单,查询软件也不复杂,而且通用性强。,(2)查询方式(有条件传送方式),图8-2 查询传送流程,中断方式又称程序中断方式、它与查询方式的主要区别在于知何知道设备是否为数据传送作好了准备,查询方式是单片机的主动形式,而中断方式则是单片机等待通知(中断请求)的被动形式。采用中断方式进行数

4、据传送时,当设备为数据传送作好准备之后,就向单片机发出中断请求;单片机接收到中断请求之后,即作出响应,暂停正在执行的原程序,而转去为设备的数据输入输出服务待服务完成之后,程序返回,单片机再继续执行被中断的原程序。中断传送逻辑见图8-3。,(3)中断方式,图8-3 中断方式数据传送逻辑,I/O扩展的分类,利用锁存器、缓冲器进行并行口简单扩展用可编程并行接口芯片进行扩展I/O接口扩展常用芯片51单片机常用I/O扩展芯片示于表8-1。,表8-1 MCS-51单片机I/O扩展常用芯片,8.2 简单I/O口扩展,8.2.1 简单接口常用锁存器、缓冲器芯片,I/O口的简单扩展输出口-利用锁存器扩展输入口-

5、利用缓冲器扩展,74LS377、74LS273、74LS244、74LS245,8位数据/地址锁存器74LS273/373,(1)74LS27374LS273是一种带清除功能的8D触发器其内部结构如图8-4所示引脚分布如图8-5所示真值表见表8-2所示1D8D为数据输入端1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。,表8-2 74LS273真值表,图8.4 74LS273内部结构图,图8-5 74LS273封装图,(2)74LS373,74LS373是一种带有三态输出门的8D触发器其内部结构如图8-6所示引脚分布如图8-7所示数据输入由允许端G控制数据输出由数据输出控制

6、端控制各触发器仅输出单一状态D1D8为数据输入端Q1Q8为数据输出端触发器的功能如表8-3所示常用作数据/地址锁存器,图8-6 74LS373内部结构图,表8-3 74LS373真值表,图8-7 74LS373引脚功能图,(3)74LS244,74LS244是三态八缓冲器/线驱动器/线接收器(3S,两组控制)内部结构逻辑图(见图8-8):,图8-8 74LS244引脚功能图,(3)74LS244(续),引出端符号:1A11A4,2A12A4:输入端1G#,2G#:三态允许端(低电平有效)1Y11Y4,2Y12Y4:输出端,真值表:(见表8-4),表8-4 74LS244真值表,(4)74LS2

7、45,74LS245:8位双向3态缓冲电路,主要用在数据的双向缓冲内部结构逻辑见图8-9,图8-9 74LS245引脚功能图,(4)74LS245(续),74LS245的真值表见表8-5,表8-5 74LS245真值表,8.2.2 简单I/O口扩展,简单输入口扩展,图8-10 74LS244扩展输入接口电路,简单输出口扩展,图8-11 74LS377扩展输出接口电路,简单并行口扩展应用举例,图8-12 74LS系列扩展输入/输出接口电路,【例8-1】如图8-12所示为一个利用74LS244和74LS273芯片,将P0口扩展成简单的输入/输出口的电路。74LS244和74LS273的工作受AT8

8、9S51的P2.0、RD#、WR#3条控制线控制。74LS244作为扩展输入口,8个输入端分别接8个按钮开关。74LS273是8D锁存器扩展输出口,接8个LED发光二极管,以显示8个按钮开关状态。当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。,简单并行口扩展应用举例,该电路的工作原理如下当P2.0=0,RD#=0(WR#=1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,

9、其输入状态通过P0口数据线被读入AT89S51片内。当P2.0=0,WR#=0(RD#=1)时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。总之,在图8-12中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。,【例8-1】分析,输入程序段:MOV DPTR,#0FEFFH;I/O地址DPTRMOVX A,DPTR;RD#为低,74LS244数据被读入A中输出程序段:MOV A,#data;数据#dataAMOV DPTR,

10、#0FEFFH;I/O地址#0FEFFHDPTRMOVXDPTR,A;WR#为低,数据经74LS273口输出,【例8-1】输入、输出程序,程序如下:DDIS:MOV DPTR,#0FEFFH;输入口地址DPTRLP:MOVX A,DPTR;按钮开关状态读入A中 MOVX DPTR,A;A中数据送显示输出口 SJMP LP;反复连续执行由程序可看出,对于扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图8-12仅仅扩展了两片,如果仍不够用,还可扩展多片74LS244、74LS273之类的芯片。但作为输入口时,一定要求有三态功能,否则将影响总线的正常工作。,【例8-1】程序编写程序把按钮开

11、关状态通过图8-12的发光二极管显示出来。,8.3 用51单片机的串行口扩展并行口,串口的方式0用于I/O扩展。方式0为同步移位寄存器工作方式,波特率为fosc/12。数据由RXD端(P3.0)输入,同步移位时钟由TXD端(P3.1)输出。,用74LS165扩展并行输入口如图8-13,用51单片机的串口扩展两个8位并行输入口。74LS165是8位并行输入串行输出的寄存器。当74LS165的S/L#端由高到低跳变,并行输入端的数据被置入寄存器;当S/L#=1,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。,用74LS165扩展并行输入口,

12、TXD与所有74LS165的CP相连;RXD与74LS165的串行输出端QH相连;P1.0与 S/L#相连,控制74LS165的串行移位或并行输入;15脚接地,允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。,图8-13 利用74LS165扩展16位并行输入口,【例8-2】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM 20H开始的单元。编程如下:,MOVR7,#05H;设置读入组数 MOVR0,#20H;设置内部RAM数据区首址START:CLRP1.0;并行置入数据,S/L#=0SETBP1.0;允许串行移位,S/L#=1MOVR2,#02H;设

13、每组字节数,即74LS165的个数RXDATA:MOVSCON,#00010000H;设置串口方式0,允许;接收,启动接收过程WAIT:JNBRI,WAIT;未接收完一帧,循环等待 CLRRI;RI标志清“0”,准备下次接收 MOVA,SBUF;读入数据 MOVR0,A;送至RAM缓冲区 INCR0;指向下一个地址 DJNZR2,RXDATA;未读完一组数据,继续 DJNZR7,START;5组数据未读完重新并行置入;对数据进行处理串行接收过程采用查询等待的方式,如必要,可改中断方式。,用74LS164扩展并行输出口,图8-14为51单片机的串口外接两片74LS164(8位串入并出移位寄存器)

14、扩展两个8位并行输出口的接口电路。,图8-14 利用74LS164扩展16位并行输出口,当串口工作在方式0的发送,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。注意,由于74LS164无并行输出控制端,在串行输入中,其输出端的状态会不断变化,故某些场合,在74LS164输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。,用74LS164扩展并行输出口,START:MOVR7,#02H;设置要发送的字节个数 MOV R0,#30H;设置地址指针 MOV SCON,#00H;设置串行口为方式0SEND:MOV A,R0 MOV SBUF,A;启动串行口发送过程WA

15、IT:JNBTI,WAIT;一帧未发完,等待 CLR TIINC R0;取下一个数DJNZ R7,SEND;未发完,继续,从子程序返回RET,【例8-3】将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。,8.4 可编程并行接口芯片的扩展,8.4.1 利用可编程并行接口芯片8255的I/O扩展,常用的外围I/O接口芯片:82C55:可编程通用并行接口(3个8位I/O口)。81C55:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器)。都可以和AT89S51直接连接,接口逻辑简单。,8255的结构,图8-1

16、5 8255的内部结构框图,图8-16 8255的扩展逻辑电路图,8255的扩展逻辑电路,MCS-51单片机可以和8255直接连接,图8-16给出了一种扩展电路。,8255并口扩展举例,【例8-4】8255与8031连接如图8-17所示,要求:试确定8255A的端口地址欲使A口:方式0,输出口;B口:方式1,输入口;上C口:方式0,输出。编写初始化程序欲使8051内部RAM30H的内容从PA口输出,试编程。欲使PC7向外输出一个正脉冲信号,试编程。,图8-17 8255与8031连接图,【例8-4】解答,P2 P0 0,0 0 A口:7FFCH(0000H)0,0 1B口:7FFDH(0001

17、H)0,1 0C口:7FFEH(0002H)0,1 1控制口:7FFFH(0003H),MOVDPTR,#7FFFH;控制口地址MOVA,#86H;方式字:10000110B=86HMOVXDPTR,A,初始化编程,确定地址,程序段MOVA,30HMOVDPTR,#7FFCHMOVXDPTR,A,程序段MOVDPTR,#7FFFHMOVA,#86H;设工作方式MOVXDPTR,AMOVA,#0EH;C口置位字,PC7=0MOVXDPTR,AACALLDELAY1;延时MOVA,#0FH;C口置位字,PC7=1MOVXDPTR,A ACALLDELAY1;延时DECA;C口置位字,PC7=0MO

18、VX DPTR,AACALL DELAY2;延时,【例8-4解答】,【例8-5】设单片机通过8255来控制一顺序控制过程,该系统连接如图8-18,A口输出6路顺序控制信号,以指示灯指示,6道工序,每道工序时间为10秒。PC0输入启动信号,PC7输入停止信号,分别与SA1和SA2相连。试编写此应用程序。,图8-18 8255A的应用举例,(2)端口的工作方式为方式0,A口为输出口,C口为输入口,8255的控制字为89H。,(1)8255四个端口的地址:,00,00B A口地址:FCFCH,00,01B B口地址:FCFDH,00,10B C口地址:FCFEH,00,11B 控制口地址:FCFFH

19、,【例8-5】解答,ORG 0100HMA:MOVDPTR,#0FCFFH;控制寄存器地址MOVA,#89H;控制字MOVXDPTR,A;控制字送控制寄存器MOVDPTR,#0FCFEH;C口地址QD:MOVXA,DPTR;读C口JNBACC.0,QD;判断有无启动信号LOOP:MOV DPTR,#0FCFCH;A口地址MOVA,#01H;第一路控制信号LOOP1:MOVX DPTR,A;输出第一路控制信号ACALLDELAY;延迟10秒RLA;下一路控制信号JNBACC.6,LOOP1;判断6路控制信号有无输出完,()控制程序如下:,MOVDPTR,#0FCFEH;C口地址MOVXA,DPT

20、R;读C口JB ACC.7,TZ;判断有无停止信号JMPLOOP;无停止信号则进行下一轮控制TZ:MOVDPTR,#0FCFCH;有停止信号则使A口输出清零CLRAMOVXDPTR,ASJMP$ORG1000H;延时子程序DELAY:MOV22H,#50HL1:MOV 21H,#100HL2:MOV20H,#250HL3:NOPNOPDJNZ20H,L3DJNZ21H,L2DJNZ22H,L1RET,()控制程序(续):,8.4.2 可编程并行接口芯片8155的扩展,8155的结构,8155芯片内部逻辑由三部分组成:存储单元为256字节静态RAM三个可编程I/O口:PA口,8位PB口,8位PC

21、口,6位14位二进制减法计数器,8155芯片的内部结构(图8-19),图8-19 8155芯片的内部结构,8155的引脚功能,8155芯片40引脚,采用双列直插式封装,如图8-20所示。8155芯片的引脚功能见表8-6,图8-20 8155芯片的引脚,表8-6 8155芯片的引脚功能,8155各引脚功能如下地址/数据线AD7AD0,与AT89S51单片机的P0口相连,用于分时传送地址/数据信息。I/O总线(22条)PA7PA0为通用I/O线,数据传送方向由写入81C55的命令字决定(图9-13);PB7PB0为通用I/O线,用于传送PB口上的外设数据,数据传送方向也由写入81C55的控制字决定

22、。PC5PC0为数据/控制线,共有6条,在通用I/O方式下,用作传送I/O数据;在选通I/O方式下,用作传送命令/状态信息(见表9-3)。,8155的引脚功能,控制引脚RESET:复位输入线,在RESET线上输入一个大于600ns宽的正脉冲时,81C55即可处于复位状态,PA、PB、PC三口也定义为输入方式。CE#:片选线,若CE#=0,则AT89S51单片机选中本81C55工作,否则,本81C55未被选中。IO/M#:I/O端口或RAM存储器选择线。若IO/M#=0,则AT89S51单片机选中81C55片内的RAM存储器;若IO/M#=1,则AT89S51单片机选中81C55的某一I/O端口

23、。RD#:读控制。当RD#=0且WR#=1时,81C55为读出数据状态;WR#:写控制。当WR#=0且RD#=0时,81C55为写入数据状态。,8155的引脚功能,控制引脚ALE:允许地址输入线,高有效。若ALE=1,则81C55允许AT89S51通过AD7AD0线发出地址锁存到81C55片内“地址锁存器”;否则,81C55地址锁存器处于封锁状态。81C55的ALE常和AT89S51的ALE相连。TIMERIN:计数器脉冲输入线,输入的脉冲上跳沿用于对81C55片内的14位计数器减1。TIMEROUT:计数器输出线,当14位计数器减为0时就可以在该引线上输出脉冲或方波,输出脉冲或方波与所选的计

24、数器工作方式有关。电源线VCC为+5V电源输入线VSS接地。,8155的引脚功能,8155 的RAM 单元地址8155有256个RAM单元,使用AD7AD0,共8位地址线进行编址;RAM地址:(当IO/M#加低电平)此时AD0AD7上得到的编码值即是8155的某一RAM单元的地址,地址范围是00HFFH。8155共有6 个可编址的I/O端口,这 6 个端口是:命令状态寄存器;PA口;PB口;PC口;定时器计数器低8位;定时器计数器高8位当IO/M#加高电平,选中I/O端口。8155只使用AD2AD0对I/O端口编址。8155的I/O端口地址编码见表8-7,8155的RAM单元地址及I/O口编址

25、,8155端口地址(当IO/M#加高电平),表8-7 8155的端口地址编码,8155的使用与工作方式,(1)8155内部RAM的使用:当IO/M#加低电平时,对片内256B RAM单元进行读/写。与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/M#为低电平。(2)8155的I/O口的使用:当IO/M#加高电平时,对I/O口访问。8155的3个I/O口,分别称为PA口、PB口和PC口。PA口和PB口是8位通用数据口,主要用于数据传送。PC口为6位口,既可作为数据I/O口,还可作为控制口,用于传送控制信号和状态信号,对PA和PB的I/O操作进行控制;PA、PB、PC各端口可工作于不同

26、的工作方式,它们靠设置工作命令字来确定,使用前要进行初始化(写命令字到命令口)。,8155的I/O口可以用基本I/O方式和选通(或中断)I/O方式传送数据。基本I/O(即无条件传送)方式。在该方式下无须联络信号,PA、PB、PC三口均可独立当数据口,输入/输出数据。选通I/O方式(或中断方式)PA口和PB口可工作于选通(或中断)方式传送数据,此时PC口为联络口,提供联络信号。PC口四种工作方式:方式1(ALT1):PA口和PB口基本输入/输出,PC口输入方式2(ALT2):PA口和PB口基本输入/输出,PC口输出方式3(ALT3):PA口选通输入/输出,PB口基本输入/输出方式4(ALT4):

27、PA口和PB口选通输入/输出,(3)I/O口的工作方式:,联络信号定义:,当以基本I/O方式传送数据时,无需联络信号,此时,PA、PB、PC皆可进行数据的输入/输出;当PA或PB以选通(中断)方式进行数据传送时,所需的联络信号由 PC 提供:PC2PC0是为PA口提供;PC5PC3是为PB口提供联络信号共有三个:INTR:中断请求信号(输出),高电平有效,送给C51的外中断请求。BF:缓冲器满信号(输出),高电平有效。STB#:选通信号(输入),低电平有效。数据输入时,STB#是外设送来的选通信号;数据输出时,STB#是外设送来的应答信号。以上各信号由PC口的引脚承担,其的信号定义见表8-8,

28、表8-8 PC口的工作方式与联络信号定义,8155的方式4(ALT4)时PC口各引脚的信号定义,图8-21 8155在方式4时PC口各引脚信号定义,选通I/O方式说明,选通I/O方式又可分为选通I/O数据输入和选通I/O数据输出两种方式。选通I/O数据输入PA口和PB口都可设定为本方式。本工作方式和82C55的选通I/O输入情况类似,如图8-22(a)所示。选通I/O数据输出PA口和PB口都可设定为本方式。选通I/O数据的输出过程也和82C55的选通I/O输出情况类似,图8-22(b)所示为选通I/O数据输出的示意图。,图8-22 选通I/O方式示意图,定时器计数器的计数结构 8155 的定时

29、器计数器是一个 14 位的减法计数器,由两个低8位计数器TL(04H)和高8为计数器TH(05H)构成。计数器的格式如图8-23所示。其中,T13T0为计数器的计数位;M2、M1用来设置计数器的输出方式。,(4)8155的定时器/计数器的使用,图8-23 8155计数器格式,81C55计数器的4种工作方式及对应的引脚输出波形如图8-24所示。,8155 的定时器计数器的输出方式,图8-24 81C55的定时器/计数器的输出方式定义与引脚输出波形,8155计数器与51单片机计数器不同,8155 的定时器计数器是减法计数;8155 的定时器计数器则只有一种固定的工作方式,即 14 位计数,通过软件

30、方法进行计数值加载;8155 的定时器计数器,由外部提供计数脉冲,信号引脚是 TIMER IN;8155 的定时器计数器,计数溢出时向芯片外边输出一个信号(TIMER OUT)。这一信号有脉冲和方波两种形式,供用户进行选择,具体由 M2、M1 两位定义。,8155内部有一个8位地址锁存器,无需外接锁存器;8155的许多信号与MCS-51单片机兼容,可以直接连接。表8-5列出了这些信号的对应关系。在二者的连接中,8155的地址译码即片选端可以采用线选法、全译码等方法;IO/M#的连接可用或非门产生使用高位地址,8155与单片机的连接,8155与MSC-51的兼容信号,表8-9 8155与MSC-

31、51的兼容信号,IO/M#的连接,图8-25(a)或非门产生IO/M#信号,IO/M#的连接,图8-25(b)高位地址作IO/M#信号,8155与51单片机连接电路举例,图8-26 AT89S51单片机与81C55的接口电路,硬件接口电路地址分析,表8-10 8155的各端口及RAM单元地址,在图8-26中,单片机P0口输出的低8位地址不需要另外加锁存器(8155片内集成有地址锁存器),而直接与8155的AD0AD7相连,既可作为低8位地址总线,又可作为数据总线,地址锁存控制直接用AT89S51发出的ALE信号。81C55的CE#端接P2.7,IO/M#端与P2.0相连。当P2.7=0时,若P

32、2.0=0,则访问8155的RAM单元。由此可得到图8-23中8155的各端口以及RAM单元的地址编码,见表8-10。,命令字用于设置端口及定时器计数器的工作方式;命令寄存器只能写不能读。命令字格式如图8-27状态字用于寄存各端口及定时器计数器的工作状态状态字只能读不能写状态字格式如图8-28命令字、状态字共用一个端口地址,8155的控制,8155通过对命令字的设和读状态字来控制输入/输出,8155命令字格式,TM1,TM2,IEB,IEA,PC2,PC1,PA,PA,PB,A 口方式,B 口,A 口,计数器方式,00:空操作01:停止计数10:计满后停止11:启动计数,0:输入1:输出,0:

33、禁止中断1:允许中断,00011011,方式 1:A、B口基本I/O;C口输入方式 2:A、B口基本I/O;C口输出方式 3:A口选通I/O,B口基本I/O方式 4:A、B口选通I/O,B 口方式,C口方式,图8-27 8155的命令字格式,8155状态字格式,图8-28 8155的状态字格式,8155 定时器计数器的工作方式由命令字中的高两位 D7D6(M2M1)进行控制。D7D600:不影响计数器工作。D7D6 01:停止计数。如计数器未启动则无操作,如计数器正运行则停止计数。D7D6 10:达到计数值(计数器减为 0)后停止。D7D6 11:启动。如计数器没运行,则在装入计数值后开始计数

34、;如计数器已运行,则在当前计数值计满后,再以新的计数值进行计数。任何时候都可设置计数器长度和工作方式,将控制字写入控制寄存器。如果计数器正在计数,只有在写入启动命令后,计数器才接收新计数长度并按新的工作方式计数。,定时器计数器的控制,8155 定时器计数器的工作方式由命令字中的高两位 D7D6(M2M1)进行控制。若写入计数器的初值为奇数,引脚的方波输出是不对称的。例如,初值为9时,计数器的输出,在5个计数脉冲周期内为高电平,4个计数脉冲周期内为低电平,如图8-29所示。,定时器计数器的控制,图8-29 计数长度为奇数时的不对称方波输出(长度为9),8155 定时器计数器的工作方式由命令字中的

35、高两位 D7D6(M2M1)进行控制。,定时器计数器的控制,注意,81C55的计数器初值不是从0开始,从2开始。这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平。显然,如果计数初值是0或1,就无法产生这种方波。因此81C55计数器的写入初值范围是3FFFH2H。如果硬要将0或1作为初值写入,其效果将与送入初值2的情况一样。81C55复位后使计数器停止计数,(1)初始化通常要完成两项任务:确定命令字计数初值,81C55的接口软件编程,【例8-6】初始化举例:要求使用8155定时器/计数器对计数脉冲进行千分

36、频,即计数1000后,TIAMEROUT端电平状态发生变化,并重新置数以产生连续方波。此外假定A口为输出方式,允许中断;B口为输入方式,禁止中断;C口为对A口控制方式(ALT3)。请编写初始化程序。,【例8-6】8155初始化举例(分析),要求输出连续方波,所以定时器/计数器的最高两位:M2 M101;计数初值:1000,其16进制数:03E8H,则定时器/计数器的高8位:43H,低8位:0E8H。命令字的设置如图8-30,命令字的内容为0D9H。,图8-30【例8-6】8155命令字设置,8031与8155的连接如图8-31,图8-31 计数长度为奇数时的不对称方波输出(长度为9),8155

37、的RAM地址:7E00H 7EFFH,I/O口地址:7F00H 7F05H,其中:PA:7F01H,PB:7F02H,PC:7F03H,命令口:7F00H 定时器低位:7F04H,定时器高位:7F05H初始化程序:,MOVDPTR,#7F00H;命令/状态寄存器地址MOVA,#0D9H;命令字MOVXDPTR,A;装入命令字MOVDPTR,#7F04H;计数器低8位地址MOVA,#0E8H;低8位计数值MOVXDPTR,A;写入计数值低8位INCDPTR;计数器高8位地址MOVA,#43H;高8位计数值MOVXDPTR,A;写入计数值高8位,8155的扩展应用举例,【例8-7】设计一段程序把8

38、155片内RAM全部填满 FFH。地址分析由于是对8155片内RAM操作,不需要初始化芯片;8155片内RAM地址是:0000H00FFH,其存储单元地址映像如表8-11。,表8-11 8155片内RAM地址,【例8-7】程序,MOVR7,#00H;R7作计数器,从0开始共减;256次再到0MOVA,#0FFH;准备送FFHMOVDPTR,#0000H;DPTR指向第一个单元LOOP:MOVXDPTR,A;送数INCDPTR;调整指针,指向下一个单元DJNZR7,LOOP;循环控制SJMP$,程序如下:,【例8-8】在单片机实验开发装置上实现变速的“8”字循环显示。首先以“8”字显示20ms的

39、速度循环10次,然后变为慢速,以每个“8”字显示0.1秒的速度循环一次,然后再变为快速循环,如此不断重复,试编此有关的程序。单片机实验器和LED显示器通过8155连接,连接图如图8-32所示。已知时钟频率为12MHz,LED为其阳极器件,“8”的显示代码为80H。,图8-32 8031通过8155与LED显示器的连接电路,【例8-8】LED显示器通过8155连接图,图8-32 8031通过8155与LED显示器的连接电路,【例8-8】分析,端口地址:控制口:0000H,PA:0001H,PB:0002H,PC:0003H,定时器高位:0004H,定时器低位:0005H;8155控制字:应规定A

40、口为输出(D0=l),C口为输出方式(ALT2),(D3D2=01),不要中断。控制字为:00000101B=05H。单片机时钟为l2MHz,用T1作定时,设置为工作方式l,则其工作方式字为l0H;20ms的定时初值为:216(2010-2)/10-2 45536=B1E0H不能直接用定时器产生0.1秒延时,要用软件计数器,用20ms定时5次来获得0.1秒。在中断服务程序中处理“8”字的快或慢速循环显示。利用程序状态寄存器PSW中的用户标志位F0作快慢控制,令F0=0为慢速显示,F0=l为快速显示。,【例8-8】编程,ORG0000HLJMPMAINORG00lBHLJMPTlORGl000H

41、MAIN:MOVSP,#52HMOVA,#05H;8155命令字MOVR0,#00H;8155命令口地址MOVXR0,A;装8155控制字MOVTMOD,#10H;设置T1为定时模式,工作方式1MOVTH1,#0B1H;设定时器初值高位MOVTL1,#0E0H;设定时器初值低位MOVIE,#88H;开中断MOVA,#80H;“8”字显示代码,【8-8】编程(续),;续前INCR0;A口地址MOVXR0,;输出字形码MOV A,#01H;LED最右一位位码MOV R0,#03H;C口地址MOVXR0,A;位码输出MOV R1,#10;快速循环10次MOV R2,#5;慢速定时计数5次SETB F

42、0;先实现快速显示SETB TR1;启动T1SJMP$,【例8-8】编程(续),ORG1500HT1:MOVTH1,#0B1H;赋初值MOVTL1,#0E0HJNBF0,SLOW;F0为零转慢速JNBACC.5,NEXT2;设显示一遍,转出MOVA,#01H;显示一遍,重开始DJNZR1,NEXT3;不是10次,转出CLRF0;已l0次,转慢速MOVR1,#10;重装R1值SJMPNEXT3SLOW:DJNZR2,NEXT4;0.l秒不到,转出JNBACC.5,NEXT1;设显示一遍,转出,【例8-8】编程(续),;续前MOVA,#0lH;显示一遍SETBF0;转为快速MOV R2,#05;重

43、装R2值NEXT1:MOVR2,#05NEXT2:RLANEXT3:MOVXR0,ANEXT4:RETI,【例8-9】综合功能多芯片扩展的扩展:,使用多个芯片来进行综合功能扩展,本例使用:1片8155,扩展I/O口;1片2716,外部扩展ROM(2KB);2片6116,外部扩展RAM(4KB);1片373,地址锁存器;1片138,3:8地址译码器。,【例8-6】综合功能多芯片扩展的扩展:硬件连线如图8-33,图8-33 综合功能多芯片的扩展:连接电路图,选片问题单一芯片扩展,由于端口较少,占用地址线少,常使用P2口的某一线接片选端CE#,即线选方式;多芯片扩展,端口很多,占用地址线多,常使用译

44、码器芯片作片选,译码器问题本例使用138芯片,是3:8译码器,它在这里的作用是输出选片信号。138译码器的引脚功能表见表8-12输出端Y0、Y1、Y2分别用来选择8155、6116(1)、6116(2),【例8-9】问题分析:,表8-12 138 引脚功能表,6116(1)的地址范围是:0800H-0FFFH;6116(2)的地址范围是:1000H-17FFH,图中的8155的各端口地址分别是:0000H、0001H、0005H其内部RAM地址范围是:0000H-00FFH,【例8-9】地址分配,【例8-9】地址分析:图中8155的CE#接138的Y0,138的G2B、G2A和CBA分别接到8

45、031的P2.7-P2.3,所以要选中8155,即要CE=0,则必有Y0=0,由Y0=0得到必有G1=1,且G2A=G2B=0,CBA=000,即8031的P2.7-P2.3=00000时,选中8155,在此前提下,当8031的P0口输出地址是:0000000011111111;且IO/M#=0时,选中8155的RAM单元,所以其内部RAM地址范围是0000H-00FFH。8031的P0口输出地址是:XXXXX000XXXXX101,且IO/M#=1时,选中8155的各端口,即,P2.7 P2.0 P0.7 P0.0 端口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0(000

46、0H)命令口0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1(0001H)PA口0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0(0002H)PB口0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1(0003H)PC口0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0(0004H)计数器低0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1(0005H)计数器高,所以8155的各端口地址分别是:0000H、0001H、0005H,【例8-9】8155各端口地址分析:,图中6116(1)的CE#接138的Y1#,所以要选中6116(1),则必有Y1#=0,则CBA=001,且G1=1,G2A=G2B=0,即8031的P2.7-P2.3=00001时,选中6116(1)。在此前提下,当8031的P2.2-P2.0,P0.7-P0.0输出地址:000 0000 0000-111 1111 1111时,选中6116(1)中的某一个单元。故6116(1)的地址范围是:0000 1000 0000 0000-0000 1111 1111 1111 即 0800H-0FFFH(共2K)。同理,故6116(2)的地址范围是:1000H-17FFH,【例8-9】6116地址分析:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号