第8章 常用可编程接口芯片_第1页
第8章 常用可编程接口芯片_第2页
第8章 常用可编程接口芯片_第3页
第8章 常用可编程接口芯片_第4页
第8章 常用可编程接口芯片_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

微机原理及应用北京科技大学理工类(非计算机专业)相关专业适用计算机与通信工程学院第8章常用可编程接口芯片

微机系统中多采用大规模集成接口芯片作为接口电路,利用这种芯片构成的接口电路,在不改变硬件的情况下,可以通过编程改变其功能、工作方式,实现微机与外设间的数据传送。主要内容定时与计数器8253/8254可编程并行接口芯片8255A:实现微机与外设间的数据传送问题串行输入输出接口计算机与通信工程学院8.1可编程定时/计数器接口芯片8.1.1定时/计数器概述定时/计数问题例有一个高精密晶体振荡电路,输出信号是脉冲波,频率为2MHz;要求设计一个信号发生器,输出接一个发光二极管,以10秒点亮,10秒熄灭的方式闪烁指示。发光二极管8253驱动晶体振荡电路计算机与通信工程学院定时/计数问题例◆

计件系统的基本功能是记录事件的个数◆每发生一个事件,对应产生一个脉冲信号输入到计件系统◆比如交通道路检测系统中通过检测点的车辆数量;工业控制系统中流水线上已加工好的工件数量◆工作要求当计完指定数目的事件后,计件系统发出一定频率的信号,驱动喇叭等设备提示告警计算机与通信工程学院图示可采用两个8253一个作为计数使用;一个用于产生1KHz的扬声器信号

当记录指定(如500)个事件(脉冲)后,1号8253计数器满(溢出),输出信号启动2号8253开始工作,并产生1KHz信号,驱动扬声器8253扬声器82531KHz计件数量CLK计算机与通信工程学院定时/计数器的主要用途输出计数信号,请求或启动响应的服务输出精确的定时信号,启动其他设备输出指定频率的脉冲信号发生器,控制其他设备工作实现延迟计算机与通信工程学院8.1.28253可编程定时/计数器可编程具有3个独立的16位计数通道,分别称为计数器0到2;均可单独作为计数或定时使用计数可按照二进制或BCD码两种方式进行;可分别最大实现65536和10000个脉冲的计数每个计数通道提供6种不同的工作方式计数的脉冲源,可以是系统内部脉冲,也可以是外部脉冲;其速率可达2.6MHz采用减1计数;从给定计数初值开始,每收到一个脉冲,计数值减1,到计数值为0时结束计算机与通信工程学院8253内部结构和外部特征D7~D0数据线:双向三态,通过数据总线缓冲器,CPU写入初始化控制字及计数初始值,读出8253的当前计数值A1、A0两根地址线寻址8253内部计数器0(00,基地址+0)、计数器1(01,基地址+1)、计数器2(10,基地址+2)及控制字寄存器(11,基地址+3)每个计数器的初值和计数当前值寄存器地址相同;对同一地址的访问,究竟是“写”初值寄存器还是“读”当前值寄存器,取决于WR和RD信号,当WR信号有效时,为写初值;当RD信号有效时,为读取当前值;均为低电平有效定时/计数器的基本原理或外部脉冲或程序指令原理结构中包含4个寄存器,三个计数器共用一个控制/状态寄存器,每个初始值/计数输出寄存器用一个端口地址减法计数;计数输出寄存器存放当前计数值;计数数值只能通过计数输出寄存器读出状态寄存器用于CPU查询状态;8253无此部件;8254具有3个引脚信号:CLK端—脉冲输入GATE端—门控信号OUT—中断请求或设备启动或特殊波形信号计算机与通信工程学院8253接口芯片的读写逻辑CLK、GATE和OUT引脚CLK:计数器的脉冲输入,可以是系统内部的固定脉冲,也可以是外部的随机脉冲;均为下降沿有效GATE:计数器门控信号,该信号的作用是用来禁止/允许/开始计数;如果该信号设置为“禁止”状态,即使输入端有时钟信号输入,计数器也不能计数OUT:计数器的输出,不同的工作方式下,输出信号的波形不同8253接口芯片的控制字8253芯片的三个计数器共用一个控制字寄存器每写一次控制字,只能设置一个计数器的一种工作方式对于每个计数器,都需要先设置而后使用8253的计数值的读取与锁存“写”计数初值操作,可根据需要使用OUT指令,只写高/低8位、或先写低8位后写高8位“读”计数器当前值的操作,都需要使用两个IN指令分别读取其低8位和高8位,为保证两次读取结果的正确性和一致性,应首先发送D5D4=00,即先送出锁存命令锁存计数值,再行读取计数值8253的计数值的读取与锁存例读取并检查计数器2的当前计数值是否为55AAH;若非则等待再读;55AAH后程序可继续计数初值为0的特殊问题初值为0表示按计数器的最大值进行计数(二进制计数方式下计数65536次,BCD计数方式下计数10000次)采用二进制计数时,如果计数初值为0,则接收到第一个脉冲时,其计数当前值变为65535,再收到一个脉冲,计数当前值变成65534,当计数达到0时,实际对65536个脉冲进行了计数设置0初值时,控制字的D5D4位可以是01、10、11其中的任意一种方式,如果选择了11,按先低8位再高8位方式输出,则需要输出两次0:

MOVAL,0

OUTDX,ALOUTDX,AL8253的工作方式

8253共提供了6种不同的工作方式每种工作方式触发计数的条件(门控信号)不同,输出到OUT端的波形不同写入初值后,能否计数受门控信号GATE的控制,两种情况:GATE为高电平才计数,计数过程中如果GATE变为低电平,则停止计数,直到GATE信号再次变为高电平在GATE的上升沿开始计数,一旦开始计数就不再受GATE信号的影响

不同工作方式下,需要写入初值的次数不同,两种情况:初值只需写入1次,每次计数到零后再自动重新按原来的初值计数初值只是一次有效,计数到0后必须重新给其写入初值才可以计数8253工作的基本原则GATE信号或高电平有效或上升沿有效或均有效3

门控信号GATE在CLK的上升沿被采样2

初值写入后,CLK经过1个上升沿和1个下降沿,开始计数1

控制字写入时,进入初始状态4

在CLK下降沿,计数器作减1计数控制字设置举例【例8-1】假设某个8253芯片的基地址为300H,通道0采用二进制计数,计数初值为100,工作在方式2;通道1采用BCD码计数,计数初值为1000,工作在方式3【分析】通道0的计数初值为100,用一个字节即可,只要读写低8位;通道1的计数初值为1000,大于1个字节表示的范围(99),必须用到高8位,需要注意的是,采用BCD码计数时,计数初值也必须采用BCD形式,1000的BCD码格式就是1000H,其低8位为0,高8位为10H,读写方式可以采用只写高8位,也可以先写低8位,再写高8位MOVDX,303HMOVAL,00010100B;通道0读写低8位、工作方式2,二进制计数OUTDX,ALMOVDX,300HMOVAL,100;通道0的计数初值100OUTDX,ALMOVDX,303HMOVAL,01100111B;通道1读写高8位,工作方式3,BCD计数OUTDX,ALMOVDX,301HMOVAL,10HOUTDX,AL如果通道1采用先读写低8位再读写高8位的读写方式MOVDX,303HMOVAL,01110111B;通道1先读写低8位再读写高8位OUTDX,ALMOVDX,301HMOVAL,00H;初值的低8位OUTDX,ALMOVAL,10H;初值的高8位OUTDX,AL方式0——计数结束产生中断当设定为工作方式0时,输出端OUT变为低电平并保持,GATE为高电平开始计数,当计数到达0时,OUT变为高电平,并一直保持,除非计数器被重新初始化,或被写入新的计数值。应用中,常利用OUT由低电平变为高电平做中断请求信号,所以方式0称为计数结束产生中断方式。若在减1计数期间,GATE由高变低,则计数暂停,直到GATE恢复为高,减1计数继续,若在减1计数期间,写入新的计数初值,则按新的初值重新计数。方式4——软件触发的选通信号发生器当方式4的控制字写入以后,输出端OUT以高电平作为初始状态并保持,写入初值后,当GATE高电平进行计数,当减到0时,OUT变低,并持续一个CLK周期,然后变高并保持。若在减1计数期间,GATE由高变低,则计数暂停,直到GATE恢复为高,减1计数继续,若在减1计数期间,写入新的计数初值,则按新的初值重新计数。方式4是通过写入计数初值操作(软件触发)产生一个负脉冲选通信号。软件触发一次计数一次,所以被称为软件触发的选通信号发生器。方式0与方式4软件触发(用指令写入计数值之后立即开始计数)不重复计数计数过程中写入新值,将按新值重新开始计数gate信号变低将暂停,变高后继续方式0-计数结束后,输出一个正跳变方式4-计数结束后,输出一个负脉冲方式1—可重复触发的单稳态触发器当设定工作方式为1时,输出端OUT变为高电平并保持,写入计数初值后等待GATE上升沿触发(硬件触发)开始计数。计数期间OUT变低,计数到达0时,OUT变高。若计数值为n,OUT将产生n个CLK周期宽度的负脉冲。所以,这是一种单稳态工作方式,计数值n决定了单稳态的脉冲宽度。方式1允许多次触发,即触发一次进行一次计数过程。如果在计数过程中,GATE又来了一次触发,则将重新获得计数初值,并按新的初值做减1计数,直到减为0为止。如果在计数过程中,写入新的计数值,若不触发计数,当前输出不受影响,在当前周期结束后,有gate触发时,将按新的计数值计数。方式5—硬件触发的选通信号发生器方式5与方式4相似,不同的是GATE的触发条件。方式5的计数过程由GATE的上升沿触发(硬件触发),硬件触发一次计数一次,所以被称为硬件触发的选通信号发生器。方式1与方式5方式1-

输出一个宽度为N(计数值)个CLK的稳态负脉冲方式5-计数结束后,输出一个宽度为一个CLK的负脉冲硬件触发(由gate触发计数;一般来自硬件)每个gate信号只能触发一次计数,输出一个波形计数过程中写入的新值,将从下一个gate信号开始计数方式2——频率发生器(分频器)

方式2是把输入的时钟频率进行n分频,得到新的频率输出。n就是设定的计数初值。当控制字写入后,输出端OUT以高电平为初始状态并保持,当写入初值后开始计数。当计数到1(注意不是减到0)时,OUT变低,经过一个CLK周期,OUT恢复为高,计数值重新装入,又开始一个新的计数过程。方式2计数过程可以周而复始地进行,OUT输出一个连续的(n-1):1的周期性脉冲。方式3——方波频率发生器方式3类似于方式2,都是只需一次写入计数初值,就可以连续输出周期性信号。不同的是方式3输出的是一个方波频率。对于计数初值为n,OUT端输出n个CLK周期的方波频率。N为偶数时,OUT为高低电平持续时间相等的标准方波;当n为奇数时,则高电平持续(n+1)/2个CLK周期,而低电平持续(n-1)∕2个CLK周期,为近似方波。方式2与方式3方式2-分频器输出一个负脉冲,频率是原来CLK脉冲频率的1/N当计数当前值变成1后,OUT变成低电平,计数当前值为0后重新变高每个计数过程,输出总是会产生1个CLK宽度低电平,其余为高电平(N-1个CLK宽度高电平)只要GATE为高电平,计数器会自动重新开始计数如果GATE信号变低,则终止;再次变高后,将再重新从初值开始计数方式3-方波发生器输出N/2高电平N/2低电平的方波或(N+1)/2的高电平(N-1)/2的低电平的近似方波计数当前值变成N/2后,OUT变成低电平,计数当前值为0后OUT重新变成高电平只要GATE为高电平,计数器会自动重新开始计数如果GATE信号变低,则终止;再次变高后,将再重新从初值开始计数工作方式3和工作方式2可重复连续地输出指定频率的脉冲工作方式2输出的脉冲占空比可调工作方式3输出的是占空比为50%或近似50%的方波8253工作方式比较工作方式GATE门控计数过程中GATE再次有效计数过程中改初值自动重复计数OUT波形0高电平继续计数立即有效否计数结束时上升沿1上升沿重新计数下次有效否指定宽度负脉冲2高电平重新计数下次有效是占空比可变脉冲3高电平重新计数下半周期有效是方波4高电平继续计数立即有效否一个CLK宽度负脉冲5上升沿重新计数下次有效否一个CLK宽度负脉冲输出频率与计数初值确定假设输入CLK的频率为2MHz,希望产生2Hz的方波2MHz与2Hz的比值为1000000,超过了一个计数器的计数能力;利用8253的两个通道;计数值均为1000CSA0A1OUT1CLK12MHzCLK0OUT0WRRDDB2KHz2Hz计数初值、输入脉冲的频率、所需输出脉冲的频率之间有确定的关系8253是16位计数器,计数初值最大值为65536;如果输入脉冲频率与输出脉冲频率之比超过65536,则必须利用8253的多个通道实现计数初值=输入脉冲频率输出脉冲频率计数初值=输出脉冲周期输入脉冲周期应用举例控制LED的点亮或熄灭用8253来控制一个LED发光二极管的点亮和熄灭,要求点亮10秒钟后再让它熄灭10秒钟并重复上述过程应用举例假设这是一个8086系统,8253的各端口地址为81H、83H、85H和87H;8253的8根数据线D7~D0与CPU的高8位数据线D15~D8相连通道1的OUT1与LED相连,当它为高电平时LED点亮需要对8253编程,使OUT1输出周期为20秒,占空比为1:1的方波,使LED交替地点亮和熄灭10秒钟若将频率为2MHz(周期为0.5us)的时钟直接加到CLK1端,则OUT1输出的脉冲周期最大只有32.768ms,达不到20秒的要求为此,需用几个通道级连的方案来解决问题65536*0.5*10-6=32768*10-6=32.768ms应用举例2将频率为2MHz的时钟信号;加在CLK0输入端,计数值设置为5000,工作于方式2,则从OUT0端可得到序列负脉冲,其频率为2MHz/5000=400Hz,周期为2.5ms再把该信号连到CLK1输入端,并使通道1工作于方式3为了使OUT1输出周期为20秒(频率为1/20=0.05Hz)的方波,应设置计数值为:

400Hz/0.05Hz=8000应用举例-初始化程序MOVAL,00110101B ;通道0控制字,先读写低字节 ;后高字节,方式2,BCD计数OUT87H,AL ;写入方式字MOVAL,00H;低字节OUT81H,AL ;先写入低字节MOVAL,50H;高字节OUT81H,AL ;后写入高字节MOVAL,01110111B ;通道1控制字,先读写低字节 ;后高字节,方式3,BCD计数OUT87H,AL;写入方式字MOVAL,00H;低字节OUT83H,AL;先写入低字节MOVAL,80H;高字节OUT83H,AL;后写入高字节应用举例2假设一个自动化工厂需要统计在流水线上所生产的某种产品的数量,可采用8086微处理器和8253等芯片来设计实现自动计数的系统OUT1工作过程如下:当LED发光管与光电管之间无工件通过时,LED发出的光能照到光电管上,使光电晶体管导通,集电极变为低电平。此信号经施密持触发器驱动整形后,送到8253的CLK1,使8253的CLK1输入端也变成低电平当LED与光电管之间有工件通过时,LED发出的光被它挡住,照不到光电管上,使光电管截止,其集电极输出高电平,从而使CLK1端也变成高电平待工件通过后,CLK1端又回到低电平,完成一个工件的计数计满设定的工件数量,输出一个中断请求中断服务程序执行完成后,返回主程序时,需要把计数初值再次写入计数器1应用举例-初始化编程假设8253的4个端口地址分别为F0H,F2H.F4H和F6H,则初始化程序为:MOVAL,01110001B;控制字OUT0F6H,ALMOVAL,99HOUT0F2H,AL;计数值低字节送计数器1MOVAL,04HOUT0F2H,AL;计数值高字节送计数器1应用举例-读取当前计数值MOVAL,01000000B;锁存计数器1命令OUT0F6H,AL;发锁存命令INAL,0F2H;读取计数器1的低8位MOVAH,AL;保存低8位数INAL,0F2H;读取计数器1的高8位XCHGAH,AL;将计数值置于AX中8254与“读回”功能读取8253的计数器值时,每执行一次锁存命令,只能锁存和读回一个通道的计数值;若需读取8253的3个计数器的值,就必须发送3个锁存和读回命令8254具有“读回”功能,一次可以锁存多个计数器的值,从而可连续读取1~3个计数器的值利用8254的读回功能,还可锁存1~3个计数通道的状态字,供CPU读取通过读取状态字,可以核对向8254写入的控制字是否正确,还能了解当前输出引脚的电平状态,以及计数值是否已写入执行单元等信息8254读回控制字D5位是计数值锁存控制位;当D5=0时,由D3~D1指定的计数器的计数值分别锁存在对应的计数器内,读取之前该值不会变化D4位是计数器状态信息锁存控制位,当D4=0时,通过读操作可以获得一个字节的状态信息读回的计数状态字若D4位置0,将锁存计数器的状态信息;状态信息被锁存后,也可以由CPU用输入指令读回;通过读取状态信息,可核查所选中通道的计数值、工作方式、输出引脚OUT的现行状态及计数器是否已写入计数通道等信息RW1RW0读/写操作位:反映对该通道的计数器所设置的读/写操作方式BCD位:反映通道所设置的计数方式;M2M1M0位反映通道的工作方式D7位通道输出状态位:当D7=1表示输出高电平;D7=0表示输出为低电平D6位无效计数位:反映计数值是否已写入计数器执行单元;未写入时D6为1;已经写入时D6为08.2可编程并行接口芯片8255A并行通信与接口8255A的内部结构8255A的引脚8255A的控制字8255A的工作方式8255A应用举例并行通信的与接口并行通信是指把一个字符的n个数位用n条线同时传输的机制它的特点是传输速度快、效率高,但因为数据位要同时传送,所需电缆数量也多并行通信适用于传输速率要求高,且传输距离短的场合并行接口使传送数据的各位同时在总线上传输“并行”指的是接口与I/O设备一侧的数据线是并行的接口与总线一侧一定是并行数据线8255A的基本性能通用可编程并行输入/输出接口电路通用性强,使用灵活,通过它CPU可直接与外设相连具有40个引脚具有三个相互独立的输入/输出端口A端口、B端口、C端口三个端口可单独使用,也可组合使用可传送数据信号,也可传送状态信号端口有多种工作方式可供选择A口有三种工作方式:方式0、1、2B口有二种工作方式:方式0、方式18255A的内部结构A组控制部件A组端口A(8)A组端口C(4)B组端口C(4)B组端口B(8)B组控制部件数据总线缓冲器读写控制逻辑D7-D0I/OPA7-PA0I/OPC7-PC4I/OPC3-PC0I/OPB7-PB08位内部总线RD____WRA1A0RESET__CS1.并行输入/输出端口(A口,B口,C口)8255A有三个8位数据端口,即A口、B口和C口可以通过编程,被分别设为输入口或输出口与外设实现(字节)数据通信PA7~PA0、PB7~PB0和PC7~PC0分别是这三个端口的数据引线三个数据端口(A口,B口,C口)▲端口A

有1个8位的数据输入锁存器/缓冲器 有1个8位的数据输出锁存/缓冲器 端口A输入/输出时都可以锁存数据▲端口B

有1个8位的数据输入缓冲器(输入无锁存) 有1个8位的数据输出锁存/缓冲器 端口B输入不能锁存,只输出可以锁存数据三个数据端口(A口,B口,C口)▲端口C

有1个8位的数据输入缓冲器(输入无锁存) 有1个8位的数据输出锁存/缓冲器▲通常

A口和B口作为独立的输入端口或输出端口

C口则通过方式控制字被分成两个4位端口:

分别作为数据的输入、输出端口或者作为A口和B口的控制口或状态口2.A组和B组控制电路▲8255A将三个数据端口分成两组来进行控制,即A组和B组▲其中:

A组控制电路控制A口和C口的高4位PC7-PC4B组控制电路控制B口和C口的低4位PC3-PC03.数据总线缓冲器

数据总线缓冲器是一个三态双向8位数据缓冲器,8255A通过它和系统数据总线相连输入输出的数据信息、CPU发给8255A的控制字、外设的状态信息都通过此缓冲器传递4.读/写控制逻辑电路读/写控制逻辑负责管理8255A的数据传输接收来自系统总线的地址信号A0、A1和CS以及控制信号RD、WR、RESET,并把这些信号进行逻辑组合,形成相应的控制命令,发送到A组、B组的控制电路,以控制数据、状态、控制信息的传输其中:▲CS为片选信号,低电平有效。CS为低电平时,8255A被选中,才能启动CPU和8255A之间的通信

▲RD为读信号,低电平有效。RD有效时,8255A通过数据线把数据或状态信息传给CPU4.读/写控制逻辑电路

▲WR为写信号,低电平有效。WR有效时,CPU可以把数据或控制字写到8255A

▲RESET为复位信号,高电平有效。有效时,清除所有内部寄存器(包括控制寄存器),并把三个数据端口都设为输入方式(8255A接口的复位信号)

▲A1、A0为端口选择信号。共有4种组合,用于选择8255A中的三个数据端口和一个控制字寄存器中的一个A1、A0通常和CPU系统地址线相连(片内的端口译码)8255A的信号组合与基本操作8255A是40根引脚,双列直插式芯片引脚可分成:(1)与外设连接的引脚

PA0~PA7:A口数据线

PB0~PB7:B口数据线

PC0~PC7:C口数据线(2)与CPU连接的引脚

D7~D0

、A0、A1

、CS、RD、WR、RESET8255A的引脚如8255A数据线与8086相连,必须于低8位数据线相连;

此时,则需要将8255的A0和A1分别与CPU的A1和A2相连,即使用连续的四个偶数地址寻址8255四个端口A1A0端口00A口01口B10C口11控制寄存器8255A的控制字8255A的控制字分为两类:均写入控制口(A0=1、A1=1)一类是各数据端口的工作方式选择控制字特征位D7=1;放在程序的开始部分一类是C口的位控(置位/复位)控制字

特征位D7=0;放在初始化程序以后的任何地方方式选择控制字▲方式选择控制字用于决定各数据端口的工作方式▲

8255A有三种基本的工作方式,即:

▲方式0

基本的输入/输出方式

▲方式1

选通的输入/输出方式

▲方式2

双向传输方式三个数据端口的工作方式的限制与选择:

▲A口可以工作在任意一种工作方式;

▲B口只能工作在方式0或方式1;

▲C口只能工作在方式0;在方式1或2时,C口通常配合A口或B口工作,为A口、B口的数据传输提供对外设的控制信号和外设的状态信号,而剩余的位仍然在方式0下工作8255A的方式选择控制字的格式为:

C口低4位I/O0=输出1=输入B口I/O0=输出1=输入B口方式选择0=方式01=方式1C口高4位I/O0=输出1=输入A口I/O0=输出1=输入=方式标志位1=有效D0D1D2D3D4D5D6D7A口方式选择00=方式001=方式11×=方式2方式选择控制字的使用举例▲例,一个8088系统通过一个8255A接口芯片和外设交换信息。假设地址线A1和A0直接与8255A的A1和A0连接,该芯片经片选后的端口基(首)地址为234H,即四个端口地址分别为:

A口——234H B口——235H C口——236H 控制字寄存器——237H▲如果设定8255A的端口处于如下工作方式:

A口 方式0,输入

B口 方式1,输出

PC7-PC4

输出,PC3-PC0

输入工作方式控制字应为:10010001B=95H10101001D0D1D2D3D4D5D6D7方式选择标志位有效A口工作在方式0A口用于输入PC7~PC4用于输出B口工作在方式1B口用于输出PC3~PC0用于输入方式控制字确定后,就可以通过编程用指令把这个控制字写入8255A的控制字寄存器中,实现8255A的初始化,然后才可进行数据传送的具体操作▲8255A的初始化过程就是往它的控制字寄存器中写入控制字的过程具体到本例可以采用如下几条指令来实现:

MOV AL,95H MOV DX,237H OUT DX,AL▲问题:能用下列的指令代替吗?

MOV AL,95H OUT 237H,ALCRPORTEQU237H

MOVAL,95H

OUTCRPORT,ALC口位置位/复位控制字▲C口作为数据口时,可以用输入、输出指令来实现数据的传送▲但C口通常用作A口和B口输入/输出的控制位或状态位▲需要对“位”进行置1或置0操作;使用置位/复位控制字▲任何一位的置位或复位,并不影响其它位的状态C口位控控制字的格式为:

▲位控控制字同方式选择控制字一样,也将被送往控制字寄存器,区别在于标志位D7的不同▲8255A在接收到控制字时(D7

=0),将依据标志位D7进行测试,以确定是哪种控制字▲例如,要使C口的PC5置位,那么控制字应为多少?D7×××D3D2D1D000/10/10/11011位控控制字标志指定将对PC5进行操作对相应位置位00001011B=0BH一般取0▲

假设8255A的控制端口地址为0F3H,要对PC5进行置位,需要进行如下操作:

MOVAL,0BH OUT 0F3H,AL▲

同样,若要对PC2进行复位,那么控制字应为00000100B=04H,需要进行如下操作:

MOV AL,04H OUT 0F3H,AL▲

复位PC2时,并不影响前面已经置位的PC5和其他各位

8255A的工作方式

确定了方式控制字,并送往控制字寄存器,8255A便可以按指定的工作方式进行工作

8255A共有三种工作方式,每种工作方式都有其自身的功能和工作特点重点介绍方式0和方式1▲方式0也称基本输入输出方式▲在这种方式下,参加数据传输的有两个8位端口(A口、B口)和两个4位端口,均可独立地由方式选择控制字规定为输入口或输出口▲均不需要固定的联络信号,传输的数据只需要通过规定的端口写入或读取即可,只要传送数据就一定能成功工作方式0典型举例8255的A口接8个发光二极管,PC7连接一个开关开关接通高电平时,8管全亮(点亮时为1)接通低电平时,8管循环点亮假设端口地址为60H—63H端口APC78255A8个发光管高

低典型举例问题分析二极管永远就绪,A口可选择工作方式0,设置为输出口C口的上半部为输入口(用于输入开关的高或低电平数据)B口和C口的下半部不用(方式字可取0)方式字为:10001000=88H典型举例程序代码MAIN:MOVAL,88H

;8255初始化

OUT63H,AL;方式字写入控制字寄存器NEXT:INAL,62H;读C口

TESTAL,80H;测PC7JNZLIGHT

;PC7=1,转全亮

MOVBL,01;PC7=0,设置循环点亮的起始位CONT:MOVAL,BL;

OUT60H,AL;写A口,点亮第一个管

CALLDIS

;延时子程序

SHLBL,1;左移一位,准备点亮下一个管

JNZCONT;BL不为0时,转去点亮下一个管

JMPNEXT;BL=0,循环亮结束LIGHT:MOVAL,0FFH

;设置全亮数据位

OUT60H,AL;写A口,点亮全部管

JMPNEXT方式0的应用特点适用于无条件传送方式下的数据传送;直接执行IN指令或OUT指令适用于查询传送方式下的数据传送首先查询外设是否“就绪”可选择C口的某些位,作为外设的状态信息位和对外设的选通控制位当“就绪”后,再执行IN指令或OUT指令端口A端口BPC1PC7PC6PC08255A输出设备输入设备首先从C口读出状态信息,测试PC7或PC6“就绪”后,用PC1和PC0选通外设从A口或B口输出或输入程序代码略10000000工作方式字为:10001010状态信息字工作方式1▲

方式1也称为选通输入/输出方式;A口和B口都可以工作在方式1▲

此时,A口和B口可分别作为数据端口参加数据传送;任何一个端口可以作为输入口或输出口▲方式1工作的端口可以是两个,也可以只设置为一个;余下输入输出端口,还可以工作在其它方式下工作方式1方式1主要适用于中断方式的数据传送,也适用于查询方式下的数据传送此时,实现A口或B口上的数据传送,必须首先与外设联络,了解就绪状态需要接口上的某些线作为与外设的联络信号线;这些联络信号线由C口的固定数据位来提供;每一个端口都被指定了C口的3位联络线方式1下的接口组态是固定的,用户不能更改工作在方式1时输入A端口的信号PC6和PC7既可输出也可作输入;由D3位的0/1确定STB选通输入信号,低电平有效;由外设送给8255A;STB与PC4相连;有效时,把输入设备来的数据送入输入缓冲器IBF输入缓冲器满信号,高电平有效。是芯片输出的状态信号。A口的IBF信号由PC5输出。当它有效时,表示数据已经送入输入缓冲器。已经“就绪”INTR是8255A送往CPU的中断请求信号,高电平有效。当选通信号结束、数据已经送入输入缓冲器以后,如果中断允许,那么8255A把INTR置为高电平,以请求CPU中断服务;A口的中断请求由PC3送出INTEA是通过对PC4的置位/复位指令,来实现对中断屏蔽或允许的控制★PC4置1,A口处于中断允许状态,又当IBF=1时,INTR便有效,向CPU申请中断★

PC4复位为0,则A口被置于中断屏蔽状态,中断申请INTR总是无效工作在方式1时输入B端口的信号注意与A口的异同

基本信号交换和工作原理相似

C口各联络位不同

B口的STB信号与PC2相连

B口的IBF信号由PC1输出

B口的中断请求由PC0送出

对PC2的置位/复位指令,实现对中断屏蔽或允许的控制方式1的输入时序①外设数据开始进入A或B口;

8255输出IBF,已有数据,不能再送②外设数据准备完成,就绪,在INTE=1时,产生INTR信号,送CPU请求中断CPU如响应,则RD为低电平,并将INTR复位③阅读时序注意:控制逻辑电路都有不同的响应时间,故不同的脉冲信号的保持时间不同取走数据后,RD=1,同时将IBF复位,表示数据缓冲区已空,可进行下一次数据传送④例将A口设置为方式1输入,PC7和PC6作为输出;B口设置为方式1输入;A口不允许中断,B口允许MOVDX,0263H;控制字寄存器端口号MOVAL,0B6H

;方式控制字OUTDX,ALMOVAL,08H

;设置A口不允许中断OUTDX,AL;先设置PC4而后工作MOVAL,05H

;设置B口允许中断OUTDX,AL工作在方式1时输出端口的信号方式1的输出信号说明A口和B口工作在方式1并作为输出端口使用时,主要涉及的控制信号为:▲

OBF输出缓冲器满信号,低电平有效。有效时,表示CPU已经把数据输出给指定的端口,▲

8255A用OBF信号通知外设可以把数据取走;对于A口,OBF信号通过PC7送出,对于B口,OBF信号通过PC1送出方式1的输出信号说明▲ACK为外设响应信号,低电平有效。是由外设送给8255A的。有效时表明CPU通过8255A输出的数据已经送到外设。A口通过PC6接收外设响应信号,B口通过PC2接收外设响应信号▲

INTR为中断请求信号,高电平有效。当外设从8255A的端口取走数据、给8255A发出响应信号后,8255A便向CPU发出新的中断请求信号,表示外设已再次“就绪”请求CPU继续输出数据。A口通过PC3发中断请求信号,B口通过PC0发中断请求信号▲

INTEA和INTEB的意义与方式1的输入情况时相似方式1的输出时序①②数据区为空,INTR和OBF持续高电平,就绪,CPU可以传送数据;WR有效,送出数据到端口③

CPU数据进入端口,WR置位,并将INTR和OBF复位,表示“已满”,未就绪,CPU不能再送来,并通知外设区④

ACK有效,开始取数据,在下降沿将OBF置位;取走后在上升沿将INTR置位,再次就绪,CPU可再次传送数据①②③③④④⑤方式1下的数据传送方式1可以用于中断传送方式通过A口的PC4、PC6和B口的PC2的置位/复位控制字使相应的INTE=1,即允许中断通过PC0和PC3送出的INTR信号接到8259A的某个IRi引脚8255APC38259AIRi方式1下的数据传送方式1可以用于查询传送方式8255A提供CPU查询的方式1状态字CPU通过C口读取该状态字,检测判断相应的状态标志位确认就绪后,启动数据传送输入时,首先查询IBF;1为就绪;输出时,首先查询OBF,0为就绪PC7PC6PC5PC4PC3PC2PC1PC0I/OI/OIBFAINTEAINTRAINTEBIBFBINTRBOBFAINTEAI/OI/OINTRAINTEBOBFBINTRB工作方式2简介▲方式2也称双向传输方式,该方式只适用于A口▲双向方式下,外设能利用A口的8位数据线和CPU进行双向通讯,既能发送数据,又能接收数据▲与方式1相似,端口C也自动地为方式2提供相应的控制信号;即C口的5个数据位自动配合A口作与外设之间的控制和状态信号▲方式2相当于方式1下A口输入和输出的组合▲输出和输入都是锁存的方式2的控制信号及状态控制字11xPC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6设置INTE1(输出)用PC4设置INTE2(输入)输入和输出中断通过或门输出INTRA信号方式2与其它方式的组合

当A口工作在方式2时,B口可以工作在方式0或方式1,可以作为输入端口也可以作为输出端口

C口由于其PC7-PC3为方式2服务,作为A口的联络控制信号,余下的只有PC2~PC0可另作它用在B口工作于方式0时,PC2~PC0也工作于方式0,作为输入位或输出位当B口工作在方式1时,PC2~PC0恰好作为B口的联络信号,具体的规定与方式1相似8.3串行输入输出接口(基本概念)计算机与外部设备之间或计算机与计算机之间的信息交换或数据传输称为数据通信计算机系统中接口上数据通信有两种方式并行通信串行通信并行通信并行通信是指一个数据的各个位通过各自的信号线同时传送有字节并行传送和字并行传送两类并行通信的特点是:传输速度快,成本高,适合于短距离传输并行通信的例适合于外部设备与微机之间进行近距离、大量和快速的信息交换例如:微机与并行接口打印机、磁盘驱动器微机系统中最基本的信息交换方法例如:系统主板上各部件之间,接口电路板上各部件之间串行通信串行通信就是数据在一条或两条数据线上,一位一位的按顺序传送的通信方式串行通信时,所有的数据、状态、控制信息都在这同一根传输线上传

温馨提示

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

评论

0/150

提交评论