第9章8255接口,教程_第1页
第9章8255接口,教程_第2页
第9章8255接口,教程_第3页
第9章8255接口,教程_第4页
第9章8255接口,教程_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章可编程并行接口8255A9.1可编程并行接口8255A9.28255A的控制字9.3方式0-基本的输入/输出方式9.4方式1—选通的输入输出方式9.5方式2—双向传输方式本章小结本章习题9.1可编程并行接口8255A8255A是INTER系列的并行接口芯片。它是可编程的,可以通过软件来设置芯片的工作方式。一、8255A的内部结构

1.8位数据端口A、B、C

每个端口:输入带缓冲寄存器,输出带锁存寄存器。2.A组控制和B组控制3.读/写控制逻辑电路4.数据总线缓冲器9.1:8255A的内部结构9.1:8255A的内部结构数据总线片选信号读写控制地址总线8位端口A8位端口B8位端口C图10-18255A的内部结构5.读写控制信号RESET:复位信号,低电平有效。D7~D0:和数据线相连。CS:芯片选择信号,低电平有效。RD:芯片读出信号,低电平有效。WR:芯片写入信号,低电平有效。A1、A0:端口选择信号。A1、A0=00,选中端口A;A1、A0=01,选中端口B;A1、A0=10,选中端口C;A1、A0=11,选中控制端口;9.1:读写控制信号9.1:8255引脚二、8255的引脚8位端口A8位端口B8位端口C图10-28255的引脚图数据总线读写控制提问1:并行接口芯片8255与CPU接口有哪些信号线,每个信号的用途是什么?

8255占用几个端口地址?各个端口分别对应什么?端口C可以分为两组吗?9.1:提问9.28255A的控制字控制字:分为两类端口的方式选择控制字,可使8255A的3个数据端口工作在不同的方式。C端口按位置1/0控制字,它可使C端口中的任何一位进行置位或复位。8255A的3种基本工作方式:方式0:基本的输入/输出方式方式1:选通的输入/输出方式方式2:双向的传输方式9.2:控制字1.方式控制字1D6D5D4D3D2D1D0方式选择标志A组方式:00:方式001:方式110:方式2端口A:1:输入0:输出PC7~PC4:1:输入0:输出B组方式0:方式01:方式1端口B:1:输入0:输出PC3~PC0:1:输入0:输出9.2:方式控制字

例9-1:设A端口工作方式0,输出,B端口工作于方式0,输入。方式选择控制字:1

0001/0

01

1/0=82H方式选择A口方式0A口输出C口高位不用B口方式0B口输入C口低位不用9.2:方式控制字例题注意:端口A可以工作在方式0、方式1或方式2;端口B只能工作在方式0或方式1;端口C则常常配合端口A和端口B工作。归为同一组的两个端口可以分别工作在输入方式和输出方式,不要求同为输入方式或同为输出方式,而具体工作在那个端口,由方式控制字来决定。9.2:方式控制字注意事项2.端口C置1/0控制字0D7D6D5D4D3D2D1D0端口C置1/0控制字标志1=置10=置0000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC7图5、端口C置1/0控制字9.2:端口C置1/0控制字注意:C端口置1/0控制字尽管是对端口C进行操作,但此控制字必须写入控制口,而不是写入C端口。C端口置1/0控制字的D0决定了是置1操作还是置0操作。置1/0控制字的D3、D2、D1位决定了对C端口的那一位进行操作。9.2:端口C置1/0控制字注意例9-2:设8255A的控制口地址为0223H,要对端口C的PC7置1,则控制字00001111B=0FH,要对端口C的PC3置0,控制字为00000110B=06H。下面的程序可以实现上述要求: PORT_CDW223H …… MOVDX,PORT_C;控制口地址送DX

MOVAL,0FH;对PC7置1的控制字 OUTDX,AL;对PC7置1操作 MOVAL,06H;对PC3置0的控制字 OUTDX,AL;对PC3进行置0的操作9.2:端口C置1/0控制字例题提问2:8255A的方式选择控制字和置1/置0控制字都是写入控制端口的,那么,它们是由什么来区分的?

9.2:控制字提问9.38255A的工作方式08255A的3种基本工作方式:方式0:基本的输入/输出方式方式1:选通的输入/输出方式方式2:双向的传输方式9.3:工作方式一、方式0--基本输入输出方式功能①任何一个端口可以作为输入口,也可以作为输出口。②各个端口输入或输出,可以有16种不同的组合,所以可以适用于多种使用场合。方式0使用场合两种:一种是同步传送,另一种是查询式传送。9.3:工作方式0功能二、方式0的输入时序9.3:工作方式0时序图10-3方式0的输入时序例9-3:用8255A控制三个发光二极管依秩序循环显示。

8255AA0A1CS+5V200译码器D7~D0地址线8088CPUA0A2A0PA0PA1PA29.3:工作方式0例题图10-48255方式0的应用用8255A控制三个发光二极管显示。8255A的端口地址为:A端口:340HB端口:341HC端口:342H控制口:344H试编写8255初始化程序段和控制三个发光二极管显示程序段。9.3:工作方式0例题开始8255A初始化延时BX显示代码地址CX=0?YNBX=BX+1CX=CX-1CX3输出到A口1、程序框图:9.3:工作方式0例题图10-52、软件设计1)设A口为输出口,方式0。B口输入,方式0,则方式选择控制字为82H。2)A口输出代码:

00000110

06H,1号发光二极管亮0000010105H,2号发光二极管亮

0000001103H,3号发光二极管亮3)软件延时(1).1ms的软件延时参考程序:设系统的CPU的频率为8MHZ,则时钟节拍为:0.125微秒。执行PUSHF、POPF、LOOP指令需29个节拍。延迟1毫秒要循环的次数:9.3:工作方式0例题参考程序:DATASEGMENTCOTREQU346H ;8255A控制口地址PB_AEQU340H ;8255A的A口地址LEDDB06H,05H,03H;LED显示值DATAENDPCODESEGMENTASSUMECS:CODE,DS:DATA…...

MOVDX,COTRMOVAL,82H;方式0OUTDX,AL;A口为输出,B口为输入MOVDX,PB_A;A口地址9.3:工作方式0例题LP:MOVCX,3LEABX,LED;1号灯代码地址DON:MOVAL,[BX]

OUTDX,AL;1,2,3循环点亮CALLDELAY;调延时程序INCBXDECCXJNZDONJMPLPDEALYPROCNEAR;软件延时….DEALYENDPCODEENDS

END9.3:工作方式0例题

PA0PA1PA28255AA0A1

PB0CS+5V200+5V2K译码器D7~D0地址线8088CPUA0A1思考题:用8255A控制三个发光二极管依秩序循环显示。假设开关闭合时,点亮发光二极管,开关断开时息灭二极管。9.3:工作方式0例题图10-6提问3:8255A的方式0一般使用在什么场合?在方式0时,如要使用应答信号进行联络,应该怎么办?

9.3:工作方式0提问例9-4、8255A作为连接打印的查询式接口,工作于方式0,如图10-7所示。(1)编写程序,完成8255初始化;(2)将缓冲区BUF开始的10个字符送打印机打印。设8255A的端口地址为:A端口:00D0HC端口:00D2HB端口:00D1H控制口:00D3H工作过程:当主机要往打印机输出字符时,先查询打印机忙信号,如果打印机正在处理一个字符或在打印一行字符,则忙信号为1,否则为0。

PC2作为打印机忙信号,PC6作为数据选通信号,将数据线上的数据装入打印机缓冲器。9.3:工作方式0例题-打印机打印机驱动流程图:开始8255A初始化BUSY=0?送数送STB内存+1字节-1送完?结束9.3:工作方式0例题-打印机图10-7CONTR-WEQU0D3HPORT-AEQU0D0HPORT-CEQU0D2HBUFDB‘BCDEFGHIJK’……PP:MOVAL,81H;8255工作方式字OUTD3H,AL;A口方式0,输出,PC4~7输出,PC0~3输入MOVAL,0DH;PC6置1OUTD3H,AL

MOVSI,OFFSETBUF;打印字符内存地址

MOVCX,10;打印字符个数LPST:INAL,D2H;读C口ANDAL,04H;查PC2=0?JNZLPST;忙,等待;不忙,送数

9.3:工作方式0例题-打印机MOVAL,[SI];从内存取数OUT0D0H,AL;送数到A口MOVAL,00001100B;将PC6置0(STB为低)OUT0D3H,AL;AL00001100B

NOPNOP ;延时INCAL ;AL00001101BOUT0D3H,AL ;再使STB(PC6)为1

INCSI ;内存地址+1DECCX ;字符数-1JNZLPSTHLT9.3:工作方式0例题-打印机8255并行接口PB0PB1…PB6PB78253定时器CLK2GATE2驱动喇叭PCLK1.1931816MHZOUT2例9-5:扬声器接口:计数器2输出896HZ方波,送扬声器。工作于模式3.8255A控制8253的门控信号与扬声器的开启。8255端口地址:PA端口:60HPB端口:61HPC端口:62H控制口:63H8253端口地址:定时器通道0:40H定时器通道1:41H定时器通道2:42H控制端口:43H9.3:工作方式0例题-扬声器接口图10-7方式31.1931816MHZ01331

定时计数器8253工作在方式3下,预置初值为533H(1331D),输出频率为:

1.1931816MHZ/1331=896HZ

由系统并行接口芯片8255的PB口的最低两位:PB0(TIM2GATESPK):控制8253定时器

PB1(SPKRDATA):控制喇叭发声

9.3:工作方式0例题-扬声器接口提问4:系统中,喇叭只产生896HZ的音调。如果想改变这个音调,使喇叭产生任意频率的音调,该怎么做?控制发声频率

——改变计数初值计数初值=1.1931816MHZ/给定频率控制声音长短

——延时

①改变8253计数器0的计数初值,使其可以以任意时间申请中断;

延时子程序;因此,可得使喇叭发声的频率和时间,可以控制喇叭发声了。9.3:工作方式0例题-扬声器接口主要参考程序代码:;8253初始化程序:MOVAL,10110110B;计数器2,模式3,初值16位,二进制OUT43H,ALMOVAX,1983;计数初值=1.19MHZ600HZ=1983OUT42H,AL;送计数初值低位字节MOVAL,AHOUT42H,AL次;送计数初值高位字节;8255控制程序:INAL,61H;读8255的PB口原输出MOVAH,AL;保留到AHORAL,03H;使PB0\PB1均为1OUT61H,AL;打开GATE2门,输出方波到扬声器HLT9.3:工作方式0例题-扬声器接口将扬声器程序写成子程序,便于调用:SSPPROCNEAR;8253初始化:MOVAL,10110110B;计数器2,模式3,初值16位,二进制OUT43H,ALMOVAX,1983;计数初值=1.19MHZ600HZ=1983OUT42H,AL;送计数初值低位字节MOVAL,AHOUT42H,AL次;送计数初值高位字节9.3:工作方式0例题-扬声器接口;8255控制程序: INAL,61H;读8255的PB口原输出值 MOVAH,AL;保留到AH ORAL,03H;使PB0\PB1均为1 OUT61H,AL;打开GATE2门,输出方波到扬声器 SUBCX,CX;CX为循环次数,最大为216L:LOOPL;延时DECBL;BL为子程序入口条件JNZL;BL=6,发长声(3S),BL=1发短声(0.5S)MOVAL,AH;取回8255的PB口原输出值OUT61H,AL;恢复8255PB口,停止发声RETSSPENDP

9.3:工作方式0例题-扬声器接口9.4方式1—选通的输入输出方式数据输入输出要在选通信号控制下工作.端口A和端口B可以分别作为两个数据口工作于方式1端口A和端口B任何一个端口可以为输入口或输出口。9.4:工作方式11)方式1输入:A口控制信号的定义:方式1输出,C端口提供联络信号:10111/0D7D6D5D4D3D2D1D0PC6.PC71=输入0=输出A口方式1输入9.4:工作方式1IBFAINTEAINTRASTBBIBFBINTRBPC7PC6PC5PC4PC3PC2PC1PC010111/0D7D6D5D4D3D2D1D0方式1PC4.PC51=输入0=输出端口A输入111D7D6D5D4D3D2D1D0端口B输入方式1图10-8方式1输入有关信号的规定RDPA7~PA0INTEAPC4PC5PC3PC6.PC7IOINTRAIBFASTBARDINTE

BPC2PC1PC0PB7~PB0STBBIBFBINTRB9.4:方式1输入有关信号的规定选通信号输入端,低电平有效输入缓冲区满信号,它是8255送往CPU的中断请求信号,高电平有效。中断允许信号,INTE由PC4置“1”,INTR有效A口方式1输入有关信号的规定RDPA7~PA0INTEAPC4PC5PC3PC6.PC7IOINTRAIBFASTBA数据输入口9.4:方式1A口输入有关信号的规定9.4:方式1输入时序图10-9方式1输出,C端口提供联络信号:OBFAACKAINTRAACKBOBFBINTRBPC7PC6PC5PC4PC3PC2PC1PC02)方式1,A口输出,方式控制字:10101/0D7D6D5D4D3D2D1D0方式1PC4.PC51=输入0=输出端口A输出9.4:方式1输出图10-10方式1输出有关信号的规定9.4:方式1输出有关信号的规定WRPA7~PA0INTEAPC6PC7PC3PC4.PC5IOINTRAOBFAACKAWRINTEBPC2PC1PC0PC7~PC0ACKBOBFBINTRB中断允许信号,INTE由PC6置“1”,INTR有效数据输出口9.4:方式1输出时序图10-11例10-6:8255A端口A工作在方式1,A口输入,允许A口中断,编写初始化程序。

MOVDX,PCTR;控制口地址送DXMOVAL,10110000B;A口方式1输入OUTDX,ALMOVAL,00001001B;置PC4=1,允许中断OUTDX,AL;9.4:方式1例题IBFAINTEAINTRASTBBIBFBINTRBPC7PC6PC5PC4PC3PC2PC1PC0提问5:8255工作在方式1,输入和输出时中断服务程序各完成什么功能?

9.4:方式1提问例9-7:8255A工作于方式1,作为用中断方式工作的Centronics360字符打印机的接口.A端口为数据口,方式1,输出方式,PC7作为输出缓冲器满OBF信号,PC6作为外设响应信号ACK,PC3作为INTR信号。端口地址:A端口:00C0H,B端口:00C2HC端口:00C4H控制口:00C6H;控制字:10100000B=0A0HOBF注意:当ACK为低时,OBF为高.1).初始化8255A程序段:MOVAL,10100000B;设置8255A的控制字OUT0C6H,AL;A口方式1输出2)设中断向量:(假设IR3类型码为0AH)0AH×4=28H

CLIPUSHDSXORAX,AXMOVDS,AXMOVAX,OFFSETINT-3MOVWORDPTR[0028H],AXMOVAX,SEGINT-3MOVWORDPTR[002AH],AXPOPDSSTI;CPU开中断MOVAL,0CH;置PC6=1控制字OUT0C4H,AL;使INTE(PC6)为1,8255开中断MOVCX,10MOVSI,OFFSETBUF;取缓冲区首地址DON1:JCXZDOJMPDON1;等待中断DON2:HLT3).用中断方式输出10个字符程序段:INT-3PROCNEARMOVAL,[DI];取一个字符MOV0C0H,AL;从A口输出INCSIDECCXIRETINT-3ENDP查询式方式输出数据:1).初始化8255A程序段:MOVAL,0A0H;主程序段OUT0C6H,AL;设置8255A的控制字MOVAL,0CH;置PC6=1控制字OUT0C4H,AL;使INTE(PC6)为0,禁止中断2).用查询方式输出10个字符程序段:MOVCX,10MOVSI,OFFSETBUF;取缓冲区首地址P1:MOVAL,[DI];取一个字符MOV0C0H,AL;从A口输出P2:MOVAL,0C4;读口CTESTAL,80H;检测OBF(PC7)为1?JZP2;为0,继续检测INCDI;为1,数据已输出,准备下次输出LOOPP1例9-8:8255A方式1输入应用:某8位A/D转换器,与8255的连接如下图,PC7做启动AD转化信号,AD转化结束信号EOC接PC4,作为选通信号STB。A/D转换启动为高电平。假设8255作为查询式输入接口,分析工作原理。编写8255初始化与输入一个数据的程序。8086CPU8255APA7~PA0PC4PC7D7~D0PC3D7~D0INTR8259IN0STARTEOCA/D模拟量输入STB9.4:方式1例题-A/D转换接口图10-12采用查询式输入:注意到8255方式1输入时,数据准备好后,IBF=1,因此可以通过查询IBF的状态。主要参考程序代码:MOVDX,PCTR;控制口地址送DXMOVAL,10110000B;A口方式1输入,PC7输出OUTDX,ALMOVAL,00001110B;置PC7=0,禁止A/DOUTDX,ALMOVAL,00001111B;置PC7=1,启动A/DOUTDX,AL9.4:方式1例题-A/D转换接口L:MOVDX,POT_C;C口地址送DXINAL,DXTESTAL,00100000B;查IBF=1,即PC5=1?JZL;查无输入数据,等待

MOVDX,PCTR

MOVAL,00001110B

;置PC7=0,禁止A/D

OUTDX,AL MOVDX,POT_A;送A口地址 INAL,DX;IBF=1,读数据 ;数据读出后,自动撤销IBF(0)HLT9.4:方式1例题-A/D转换接口提问6:如果采用中断方式输入,程序如何设计?提示:将8255中断请求端INTRA(PC3)接8259输入端,使中断请求能引入CPU允许8255端口A中断,设INTEA=1,即设PC4=1当数据进入8255端口A时,8255的INTRA(PC3)发中断请求申请,CPU响应后即可读数据9.4:方式1提问3)方式1的使用场合

在采用中断方式进行输入/输出的场合,如果外部设备能为8255A提供选通信号或数据接收应答信号,那么,通常使用8255A的端口工作方式1的情况。9.4:方式1使用思考题:

8255A的三个端口在使用时,有什么差别?提示:通常A端口与B端口可作为独立的输入输出端口,C端口则配合A、B端口工作,提供控制信号、状态信息。9.5方式2——双向传输方式

①方式2只适用于端口A,双向并行通信②端口A工作于方式2时,端口C用5个数位自动配合端口A提供控制。注意:①端口A可工作在3种方式中的任意一种;②端口B只能工作在方式0或方式1;③端口C被分为高4位和低4位,可以分别工作在输入方式和输出方式,并不要求同为输入方式或同为输出方式.9.5:工作方式2方式2,C端口提供的联络信号:OBFAACKAIBFASTBAINTRAPC7PC6PC5PC4PC3PC2PC1PC09.5:工作方式2D7D6D5D4D3D2D1D011端口A方式B组方式0=方式01=方式1PC7~PC01=输入0=输出端口B1=输入0=输出图10-13方式2工作的控制信号PC2~PC0PC4PC5PC6PC7PC3INTE1INTE2IOIBFASTBAACKAOBFAINTRAWRRDPA7~PA09.5:工作方式2图10-21画出了一个数据输出过程和一个数据输入的时序.9.5:工作方式2时序图10-14例题本章小结8255功能结构8255与CPU的连接8255的端口地址8255的工作方式重点掌握方式的应用习题91.总结8255A端口C的使用特点。2.设定8255A的口A为方式1输入,口B为方式1输出,则读取口C的数据的各位是什么含义?3.对8255A的控制寄存器写入BOH,则其端口C的PC0引脚是什么作用的信号线?

4.设一工业控制系统,有四个控制点,分别由四个对应的输入端控制,现用8255A的C口实现该系统的控制,如图1。开关K0~K3打开则对应发光二极管L0~L3亮,表示系统该控制点运行正常;开关闭合则对应发光二极管不亮,说明该控制点出现故障。编写8255A的初始化程序和这段控制程序。图10-1;8255方式设置,C口低半部分为输入,C口高半部分为输出MOV AL,10000001BOUT 63H,AL L1:INAL,62H;查询开关状态MOVCL,4ROLAL,CL;AL中高4位与低4位交换OUT62H,ALJMP L1

;循环查询开关状态5.编一初始化程序,使8255A的PC5端输出一个负跳变。如果要求PC5端输出一个负脉冲则初始化程序又是什么情况?初始化程序:MOVAL,0000101

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论