还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第六章基本输入输出接口第一节概述
一、CPU与外部设备的信息交换
1.1/0的信息组成CPU与外界之间传递的信息具有三种不同的信号
(1)数据信号数据信号大致可分为三种1)数字量2)开关量3)模拟量
(2)状态信号I/O设备的状态信息,由CPU接收并测试以确定其状态
(3)控制信号CPU发送给I/O设备的命令
2.一般I/O接口的构成I/O接口电路用来实现CPU与外设之间的数据、状态和控制信息的传递典型的I/O接口(见图7-l)o包括数据端口(双向)、状态端口(CPU-接口)、控制端口(CPU一接口)每个I/O端口对应一个I/O地址从硬件上看,端口可以理解为寄存器,CPU用I/O指令可以对其进行访问(读/写)
二、I/O端口的编址方式L统一编址方式(存贮器映象编址)I/O端口和存贮器统一编址,给每个I/O端口分配一个存贮器地址优点I)不需要专门的I/O指令及接口信号;2)CPU访内指令可以全部用于I/O操作,使I/O的功能更加灵活缺点1)真正的存储空间有所减少;2)在程序中对I/O接口的操作不易看清,程序不够清晰
2.独立编址方式I/O端口单独编址CPU使用专门的I/O指令及I/O控制信号来访问I/O端口优点由于使用专用的I/O指令,程序中对I/O端口的操作十分清晰缺点I)I/O指令远不如访内指令丰富,所以编程不够灵活;2)端口地址译码电路比较复杂Intel80X86系统CPU使用的都是I/O端口独立编址方式般应向同一个I/O端口地址的计数通道按先低后高顺序接连两次写入相应的8位数据例
7.4选择8253的计数通道
0、采用工作方式
1、BCD码计数、计数初值为5080假定8253的I/O端口地址为0F8H-0FBH四个连续地址试编写初始化程序MOV AL,33H;写入方式控制字OUT0F8H,ALOUT OFBH,ALMOV AL,8011;写入计数初值低8位OUT0F8H,ALMOV例AL,50H;写入计数初值高8位
7.5将8253的计数通道2作为5nls的定时器,设输入时钟频率为200kHz,端口地根据上述要求,确定方式控制字为00110011B,即33H可编写初始化程序如下址为3F80H-3F83H四个连续地址试编写初始化程序应写入的定时常数二定时时间/输入时钟周期二定时时间X输入时钟频率二5ms X200kHz=5X103X200X1031000根据要求,采用计数通道
2、工作方式
0、BCD码计数,因定时常数为1000,故只写高8位即可,低8位自动为0确定方式控制字为10100001B,即A1H编写初始化程序如下MOV AL,0A1HMOV DX,3F83HOUT DX,ALMOV AL,10HMOV DX,3F82HOUT DX,AL例
7.6在计数的过程中可以读取当前的计数值假如上述8253的计数通道1正在计数,编程读取当前的计数值注意,先要将计数值锁存起来MOV AL,40HMOV DX,3F83HOUT MOVDX,ALIN DX,3F81H;读当前计数值,存入CX寄存器MOV AL,DX CL,IN ALAL,DXMOV CH,AL程序运行后,CX寄存器中的内容就是当前计数值将计数通道1当前的计数值锁存起来的方式控制字为40H程序如下:读出后自动解除锁存;在读的过程中计数通道1继续作减1计数,直至0
五、8253应用实例例
7.7用8253监视一个生产流水线,每通过50个工件,扬声器响5秒钟,频率为2000Hzo设备中包括的芯片有定时/计数器
8253、并行I/O芯片8255和中断控制器8259设备的示意图(硬件连接,见图7-34)为方便讨论,图中省略了中断控制器8259A和可编程并行接口芯片8255A图中,工件从光源与光敏电阻之间通过时,在晶体管的发射极上会产生一个脉冲,此脉冲作为8253计数通道0的计数输入CLK信号,当计数通道0计数满50后,由OUT输出负脉冲,经反相后作为8259A的一个中断请求信号,在中断服务程序中,启动8253计数通道1工作,由OUT1连续输出2000Hz的方波通道0工作于方式2,采用BCD码计数,计数值为50,方式控制字为00010101B15H通道1工作于方式3,采用BCD码计数,CLM接
2.5MHZ时钟,要求产生2000Hz的方波则计数初值应为
2.5X1072000=1250,方式控制字为0111011177H通道1的门控信号GATE1由8255A的PA控制,0U1输出方波信号经驱动滤波后送扬声器设8253的端口地址为40H-43H,8255A的PA口地址为80H主程序如下MOV AL,15HOUT43H,AL;初始化通道0MOV AL,50HOUT40H,AL;送计数初值至通道oSTILOPHLT;开中断JMP LOP;等待中断中断服务程序为:;置8255的PA口工作方式
0、输出MOV AL,80HOUT8311,AL;置8253通道1的GATE1为1,启动计数MOV AL,01HOUT80H,AL;初始化通道1MOV AL,77HOUT43H,AL;计数初值写入通道1MOV AL,5011OUT41H,ALMOV AL,12HOUT41H,AL;调用延时子程序,延时5秒CALL DL5S;置通道1的GATE1为0,停止计数MOV AL,OOHOUT80H,ALI本例中R,ET通道0工作于计数状态,通道1工作于定时状态第二节CPU与外部设备之间数据传递的控制方式三种方式程序控制传递方式、DMA方式和I/O处理机方式主要介绍程序控制传递方式
一、程序控制传递方式可以分为以下三种
1.无条件传递方式这种方式的条件是:外设已经“准备好Ready”或“空Empty”了对于一些简单的输入输出设备,如发光二极管等设备,CPU在从外部设备输入或向外部设备输出数据时不需要判断外部设备是否准备就绪,可以直接输入输出对于某些外部设备,可以采用软件延时的方法,留出足够的时间,等待外设“就绪”或“空二然后在程序的控制下进行数据的传递可见,采用这种方式,CPU的效率是不高的查询传递方式2这种方式是由CPU程序启动的程序流程:1输入其状态信号;2测试是否“准备好”3“准备好”作4操作;“未准备好转1;4CPU与外设之间传递数据操作同时CPU输出一个控制信号,清除,准备好”信号,以备下一次数据传递相对于中断传递方式,传递效率还是较低
3.中断传递方式中断传递方式是由I/O设备启动的当某个I/O设备需要数据传递时,先向CPU发出中断请求信号CPU在一定的条件下响应该中断请求并暂停现行程序,转入中断服务程序,进行I/O数据传递I/O操作完成后,CPU再返回到先前的程序,继续执行在中断传递过程中,由于I/O设备主动申请中断,免去了CPU反复对I/O设备状态进行查询的工作,因此具有较高的工作效率
二、DMA传递的方式略
三、I/O处理机传递方式略第三节输入/输出接口及基本的输入/输出接口芯片
一、接口芯片的种类
1.根据所用芯片的功能以及集成度高低的不同分类基本I/O接口芯片;多功能可编程I/O接口芯片
2.按照接口芯片与外界进行数据传递方式的不同分类并行I/O接口芯片;串行I/O接口芯片
3.按照接口芯片所处理的信号类型分类数字量I/O接口芯片;模拟量I/O接口芯片
4.根据接口芯片与CPU的连接方式的不同分类并行总线方式;串行总线方式在微处理器MPU应用系统中以并行总线方式的接口芯片为主
二、有关接口芯片的几个概念
1.片选信号CSI/O接口芯片都必须有一个片选CS控制信号,由CPU输出的地址信号经地址译码器以后生成
2.读/写信号I/O读10RC和写IOWCO在个人计算机中,独立编址的I/O端口是用来控制外部设备的其中8位的端口地址是用来对系统板上部件进行操作的,如定时器和键盘接口;16位的端口地址是用来对串行和并行端口进行操作的PC机的I/O地址分配情况见图7-
23.可编程不同功能或模式的选择和设定基本上都是通过缄程的方式来实现的某种意义上讲,多功能与可编程是等价的
4.握手信号经常使用握手或查询手段,实现I/O设备与微处理器之间的同步打印机例见图7-3例
7.1实现对打印机BUSY信号的测试的子程序PRINT PROCNEARPRINT1IN;get BUSYflagAL,BUSYTEST JNEMOV;test BUSYbitAL,BUSY_BITOUT RETPRINT;if printerbusyPRINT1;get datafrom BLAL,BL;send datato printerPRINTER,AL;return fromprocedureENDP
三、基本输入器件与输出器件基本输入器件是一组三态缓冲器使用IN指令基本输出器件是一组数据锁存器使用OUT指令
1.基本输入接口利用三态缓冲器构成一个8位输入端口(见图7-4)o输入电路组成输入电路工作原理SEL(即片选CS)信号由地址译码产生,CPU执行INAL,XX指令,读入开关状态数据SEL=1244的输出为高阻态,断开这8个开关与数据总线的连接
2.基本输出接口基本输出接口接收来自微处理器的数据并且要求具有保持功能利用8位数据锁存器将8个LED连接到CPU(见图7-5)o输出电路组成输出电路工作原理SEL(即片选CS)信号由地址译码产生,CPU执行OUT XX,AL指令,送出CPU的数据,由374锁存,控制LED的亮与暗0E端接地,374的工作工作条件SEL=1374的输出为高阻态第四节可编程并行I/O接口芯片Intel8255A
一、8255A的结构与功能8255的内部结构(见图7-6)o数据总线缓冲器、读/写控制逻辑、A和B组控制电路、数据端口等组成*数据总线缓冲器双向三态外部可通过系统DB与CPU相连;内部通过芯片的内部总线与各端口寄存器及A、B两组控制电路相连*读/写控制逻辑CS片选信号,低有效通常由系统地址线译码产生RD读信号,低有效CPU-8255AWR写信号,低有效CPU-8255AoAI、Ao8255A内部各器件选择信号,通常接到系统AB的A-A表各端口读写操作的信号7T8255操作CS A,A RD WR读口00001A读口00101B01001读C口00010写A口00110写B口01010写C口01110写控制寄存器RESET复位信号,高电平有效复位后,控制寄存器被清除,A、B、C三个端口全置成输入方式且其锁存器也全清零,通常接系统复位RESET信号*A、B、C三个端口:各有8条端口I/O线,PA,PAo,PB7PBo及PC7PC〜〜〜Port A一个8位的数据输出的锁存器/缓冲器;一个8位的数据输入锁存器Port B一个8位的数据输入/输出的锁存器/缓冲器;一个8位的数据输入锁存器Port C一个8位的数据输出的锁存器/缓冲器;一个8位的数据输入缓冲器三个端口可以单独使用,也可以把三个端口分成A、B两组A组Port A+Port C的高4位;B组Port B+Port C的低4位*人和8组控制电路通过工作方式字的设置,分别对A,B两组实现控制控制寄存器用来接收对8255A编程写入的控制字,实现对A组和B组工作方式的控制
二、8255A的工作方式8255有三种不同的工作方式,可以通过对其控制寄存器的写入来进行控制
1.方式0基本输入或输出方式不需要联络信号Port A、Port B、Port C的高4位和低4位可以分别设置成输入或输出,形成16种组合输入缓冲,输出锁存
2.方式1选通输入/输出方式接口和外设之间须有联络信号进行协调只有Port A和Port B可工作于方式1此时C口的某些线被规定为Port A或Port B与外设间的联络信号,其余的口线具有基本I/O功能,即只能工作于方式
03.方式2双向输入/输出方式,即同一端口的I/O线既可以输入也可以输出只有A口可工作于方式2止匕时C□有5条I/O线被规定为A口和外设之间的双向传送联络线C□剩下的3条O线可以作为B口方式1的联络线,也可以和B□一起成为方式0的I/O线
三、8255的工作方式选择与初始化编程在8255内部有两个控制寄存器,但其对应的口地址却只有一个因此在其内部,用控制字中的特征位来加以区分其中的两个不同控制寄存器8255的工作方式选择与初始化是通过对其控制寄存器的写入来实现的
1.方式控制字方式控制寄存器是一个8位的寄存器方式控制字各位的作用(见图7T1)D7必须为1,表明是方式控制字
2.C口的位控字允许CPU用输出指令单独对C口的某一位写入“1”或“0”这是通过向8255的控制寄存器写入一个位控制字来实现的Port C的位控制字(见图7-12)D7必须为0,表明是Port C的位控制字
四、8255应用举例例
7.28255A在IBM PC/XT中的基本应用IBM PC/XT的系统板上装有一片8255,工作于方式0,主要用以检测系统的配置及是否发生某些错误,还用来管理键盘工作其地址分配及作用如下Port A地址6011,开机自检时输出部件检测码,以逐个检测有关部件是否正常工作自检完成后,又改设为输入状态,输入键盘扫描码PortB地址61H,工作于输出状态,用于输出系统内部控制信号,完成对键盘控制及检测RAM和I/O通道,还可以控制系统板上8253A的计数器CNT2计数及扬声器发声Port C地址62H,工作于输入状态,用于测试状态和系统配置情况控制寄存器地址63H,控制字在进入系统自检时为10001001B,自检完成后又改为10011001B,进入正常工作,其中A口由输出改为输入8255在系统板上的连接示于图7-13,图中左侧是连接系统总线用的,右侧是各端口I/O线B口I/O线上的信号名称凡标有者表示该线为力”时实现的功能,而标有“-”者表示该线为“0”时实现的功能PB3=1时,读图下方DIP并关58,其状态表明系统的显示器配置及软盘驱动器的数R;〜PB=0时,读DIP开关14,分别指示系统板上RAM的容量及是否插入数学协处理器8087,还决〜3定系统是正常工作还是循环执行上电自检程序DIP开关各位的定义(见图7-14)程序中,开始Port A被设置为输出,等自检中读完DIP开关状态后,又重新设置为输入M0V AL,10001001B;控制字,方式3Port A、B输出,Por C输入OUT63H,ALMOV AL,10100101B;输出至Port B,PB O以读取DIP开关低4位FOUT61H,ALIN AL,62H;读C口AND AL,OFH;保留低4位MOV AH,AL;存于AHMOV AL,10101101B;使PB3=1,其余不变OUT61H,ALNOPIN AL,62H;读C口MOV CL,4;循环左移4位ROL AL,CLAND AL,OFOH;保留高4位OR AL,AH;高低4位合并MOV AL,10011001B;重新编程8255AOUT63H,AL;A口改为输入第六节可编程计数器/定时器Intel8253(PIT)可编程计数器/定时器芯片;内部有三个独立的16位计数通道,各计数通道的工作方式可以独立编程设定;CPU可以随时更改各个计数通道的工作方式和定时常数,也可以读取它们的计数状态;当CPU启动8253后,就可以去做别的工作,同时8253开始自动计数,计数到0便自动产生一个定时输出作为中断请求信号,这可以大大提高CPU利用率
一、8253的结构和引脚功能8253是一个24引脚双列直插式芯片内部结构框图(见图7-26)内部结构包括数据总线缓冲器、读/写控制逻辑、三个独立的结构功能完全相同的16位可预置的递减计数器和控制字寄存器
1.数据总线缓冲器8位、双向、三态,是8253与系统数据总线之间的数据接口通过数据总线缓冲器,CPU可以用输出指令(OUT PORT,AL)将控制字和计数初值写入8253,也可以用输入指令(IN AL,PORT)从8253读取计数通道中的计数值
2.读/写控制逻辑接受CPU送来的读/写控制信号,并加以组合完成对8253内部操作的控制来自CPU的控制信号如下A-Ao地址线,作为端口选择信号当A
1、Ao分别取
00、
01、
10、11时,对应选择计数通道
0、
1、2及控制字寄存器CS片选信号,低电平有效RD读控制信号,低电平有效WR写控制信号,低电平有效上述信号的组合功能及操作见表
7.3o操作Ai AoRDWRCS读计数通道读0计数通道1读计数通道写2计数通道写计0数通道写计数1通道写方式控2制字禁止(三态)无操作(三态)无操作(三态)表的端口选择及操作7-
382533.计数通道
0、
1、2包含三个独立的结构功能完全相同的16位可预置的递减计数通道每个计数通道都有三条引线,其名称和作用如下CLK时钟输入端,计数脉冲或定时脉冲由该端引入GATE门控输入端,它是由外部引入的控制信号,用于启动或终止计数/定时OUT输出端,当计数至0时,输出中断信号计数通道
0、
1、2既可作为计数器也可作为定时器作为计数器,由CLK引入的是计数脉冲,对计数脉冲进行减1计数作为定时器,由CLK引入的是固定频率的时钟脉冲,对时钟脉冲进行减1计数,根据公式定时系数=要求定时的时间/时钟脉冲的周期计算获得定时系数作为计数初值编程预置到计数通道中去
4.控制字寄存器控制字寄存器用来存放由CPU写入8253的方式选择控制字,以确定某个计数通道的操作方式
二、8253的工作方式8253各计数通道都有6种可供选择的工作方式
1.方式0计数结束中断方式方式0的时序(见图7-27)当任一计数通道工作于方式0时,它具有如下特点
(1)写入控制字后,OUT端输出低电平当GATE为高电平,CPU写入计数初值即开始计数,在每个CLK脉冲的下降沿减1减至0时-,OUT升为高电平OUT高电平一直维持到写入新的控制字或写入新的计数值为止
(2)计数初值一次有效,经一次减至后,若需要继续定时或计数,则必须重新写入计数初值
(3)GATE为低电平时,写人计数初值并不计数,只有当GATE为高电平时才开始计数设初值为N且后置GATE高电平,则输出OUT在GATE为高电平后经N个CLK变为高电平
(4)在计数过程中,GATE由高变低则停止计数但不影响OUT的电平,当GATE变成高电平时减1计数继续进行
(5)在计数过程中,可以重新写人新的计数初值重新写入初值后,计数器按新的初值重新计数当计数器工作在方式0时,OUT由低变高的信号可供CPU查询或作为中断请求信号发向CPUo
2.方式1可编程单稳态输出方式(略)
3.方式2频率发生器(又称分频器)方式2的时序(见图7-29)o当任一计数通道工作于方式2时,它具有如下特点
(1)写入控制字后,OUT端输出高电平当GATE为高电平,CPU写入计数初值(分频系数)后开始减1计数当减至1时,OUT端输出低电平;当完成计数到0时,OUT又变成高电平产生计数到0负脉冲的同时,开始一个新的计数过程当初值为N时,OUT在N个CLK呈现一个输出周期
(2)在计数过程中,若GATE变为低电平,则暂停减1计数,当GATE又变成高电平时,计数通道从初值开始重新计数
(3)在计数过程中,重新写入新的计数初值,不会影响本次计数过程,在下一个计数周期开始按新的计数初值计数,即改变了分频系数
4.方式3方波发生器方式3的时序(见图7-30)o当任一计数通道工作于方式3时,OUT输出的是方波或近似方波,它具有如下特点
(1)写人控制字后,OUT端输出低电平GATE变成高电平,CPU写入计数初值后开始减1计数,同时OUT跳变为高电平当计数到N/2(N为偶数)或(N+l)/2(N为奇数)时,OUT变成低电平,直到计数值为0,OUT又变成高电平,同时自动重装初值开始下一个周期的计数即当初值为N时,OUT在N个CLK周期呈现方波或近似方波的一个输出周期
(2)在计数过程中,若GATE变为低电平,则暂停减1计数,当GATE又变成高电平时,计数器从初值开始重新计数
(3)在计数过程中,重新写人新的计数初值,不会影响本次计数过程,在下一个计数周期开始按新的计数初值计数方式3的
(2)、
(3)两个特点同方式2的
(2)、
(3)o
5.方式4软件触发方式(略)
6.方式5硬件触发方式(略)
三、8253的方式控制字8253的8位方式控制字可由CPU用OUT指令写入控制字寄存器;方式控制字格式(见图7-33)
四、8253的初始化编程8253初始化的步骤为
(1)向8253的控制字寄存器写入方式控制字;
(2)向方式控制字中规定的计数通道写入计数初值注意在写16位计数初值时,一。
个人认证
优秀文档
获得点赞 0