《微机接口实验-北京科技大学.docx》由会员分享,可在线阅读,更多相关《微机接口实验-北京科技大学.docx(28页珍藏版)》请在课桌文档上搜索。
1、微机原理与接口技术实验报告学院计算机与通信工程学院班级通信1002姓名马勇学号410502132023年5月实验十一8259中断控制器应用实验一、实验目的1 .学习中断控制器8259的工作原理;2 .掌握可编程控制器8259的应用编程方法。二、实验所用设备1 .PC微机一台;2 .TD-Pir实验系统一套。三、实验内容1 .利用PC机给实验系统分配的中断线,设计一个单中断应用。使用单次脉冲模拟中断产生。编写中断处理程序,在显示器屏幕上显示一个字符。2 .利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IRO和IRl中断请求进行处理。四、实验原理1
2、. 8259控制器的介绍中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、区分中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。8259A的内部结构和引脚如图11-1所示。8259A的命令共有7个,一类是初始化命令字
3、,另一类是操作命令。8259A的编程就是根据应用需要将初始化命令字ICWl-ICW4和操作命令字OCWl-C)CW3分别写入初始化命令存放器组和操作命令存放器组。ICWl-ICW4各命令字格式如图11-2所示,OCWl-OCW3各命令字格式如图11-3所示,其中OCWl用于设置中断屏蔽操作字,0CW2用于设置优先级循环方式和中断结束方式的操作命令字,0CW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部存放器的读出命令。INTAINTD7-D0CASO CASl CAS2 SP/ENRDWRAOCS断务存聘 中S寄部断求存 中请寄AO12345678911111282726
4、2524232221201918171615图11-1 8259内部结构和引脚图D7 D6 D5 D4 D3 D2 Dl DOOlolOI LTIM I ADI I SNGL IC4 |不需要ICW4 需要ICW48086/8088不使用特征位无效Dl=O: Dlls D3=0: D3=l多片级联单片使用边沿触发电平触发图11-2(a)ICWl格式AoD7D6D5D4D3D2DlDOI1I1171T6IT5IT4I13IOI0IoIII,II中断类型号的高5位8086旗)88不使用图112(b)ICW2格式AOD7D6D5D4D3D2DlDOLUIS7IS6S5IS4S3IS2ISiIsoI主
5、片AOD7D6D5D4D3D2DlDOQII1.IIIJIm2IIDlIEDOI从并不可用图11-2(c)ICW3格式AOD7D5D5D4D3D2DlDOmOlololSFNMIBUFM/SAEOlUPM|AOD7D6D5D4D3D2DlDOJOCWlIM7IIM6IM5IM4M3IM2MlMOAOD7D6D5D4D3D2DlDO回RSLIEOII00L2LlLo口OCW2编码对应IR的最低优先权OOl一般 EOl中断结束命令Oll特殊EOl101循环优先权的一般Eol自动循环100在自动EorF置循环优先权0在自动EOl下复位循环优先权Ill循环优先权的特殊EOl命令IlO设置优先权特殊循环
6、OlO无效D2 Dl DOAOD7D6D5D4D3I0II0IESMMISMMIOlllPlRKlRlSlOCW3OX:无效0:不查询OX:无效10:复位特殊屏蔽1:允许查询10:可读IRR11:设置特殊屏蔽11:可读ISR图113OCW命令字2. 8259存放器及命令的控制访问在硬件系统中,8259A仅占用两个外设接口地址,在片选有效的情况下,利用AO来寻址不同的器和命令字。对存放器和命令的访问控制表如表11-1所示。3. Pe微机系统中的8259在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中局部中断号已经被系统硬件占用,具体使用情
7、况如表11-2示。两片8259A的端口地址为:主片8259使用020H和021H两个端口;从片使用OAoH和OAlH两个端口。系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级15级,然后是3级7级。在扩展系统总线上的INTR对应的中断线就是PC机保存中断其中的一个。对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽翻开,修改中断向量。表11-18259存放器及命令的访问控制AOD4D3读信号写信号片选操作OO1O读出ISRJRR的内容IO1O读出IMR的内容OOO1OO写入OCW2OO11OO写入OCW3O1X1O
8、O写入ICWl1XX1OO写入OCW1,ICW2.ICW3,ICW4中断源功能中断向量号中断源功能中斯向量号.8259AIRQO定时中断08H从8259AIRQ8实时神70HI.8259AIRQI健盘中断09H又8259A1RQ9保留71H上8259A1RQ2接从8259AOAH从8259AIRQlO保笛72HI:8259AIRQ3COM2OBH从8259AlRQO保留73Ht8259AIRQ4COMIOCH从8259AIRQ12保留74H上8259A1RQ5硬切井口2中断ODH从8259AIRQ13写处理器中断75H18259A1RQ6软盘OEH从8259A1RQ14硬盘控制器76HI.82
9、59A1RQ7打印机OFH从8259AIRQ15保留77H五、实验说明及步骤1.单中断应用实验本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。中断处理程序完成在屏幕上的显示字符“9。实验前先运行CHECK程序,得到INTR所对应的中断号、相应的初始化命令字存放器ICW及操作命令字存放器OCW的地址、开屏蔽的命令字、中断矢量地址和PCI卡中断控制存放器INTCSR的地址。得到这些信息后就可以开始设计实验了。参考程序流程如图11-4所示。实验步骤如下:1 .确认从PC机引出的两根扁平电缆已经连接在实验平台上;2 .首先运行CHECK程序,查看INTR中断号及相关信息;3 .参考实验流
10、程图编写程序,然后编译链接;4 .将单次脉冲单元的KK1+连接到系统总线上的1NTR;5 .运行程序,按动KKl+按键,观察中断是否产生。I开,始II关中断I中断处理(显示字符)I初始fLpCijntcsrI替换in”中帧.矢量I清PcIJNTeSR标志位I向PC内8259发中断结束命会I中断返回II打开INTR中断屏蔽位I开中断IINTCSRI恢复PCI否有按键下?一是I关卡断II恢复INTR中断矢量II恢复INTR中断屏蔽字I开中断II返回IDOW(a)主程序(b)中断处理程序图11-48259中断应用实验(1)参考程序流程图2.扩展多中断源实验利用实验平台上的8259控制器,可以对总线上
11、的INTR进行扩展。将8259的INT连接到INTR,8259的8路中断请求线IR0IR7就成了单一INTR中断请求线的扩充。这8路中断源共用INTR的中断矢量,共用INTR的中断效劳线程。在INTR的中断效劳线程中通过对8259OCW3的查询,以确定是IR0IR7中哪个产生中断,然后转到相应的效劳线程进行处理。将8259的OCW3中P位置1即可执行查询,查询字格式如图11-5所示。D7D6D5IID4D3D2DlDOW2IWlIWOI0:无中断请求1:有中断请求W2W1W0:请求中断中优先级最高的中断源编码图1158259OCW3查询命令字格式本实验要求实现8259控制器1R0、IRl两路中
12、断。用KK1+和KK2+模拟两个中断源,在IRO对应的效劳程序中显示字符“0,在IRl对应的效劳程序中显示字符“1。实验程序参考流程如图11-6所示。参考实验电路如图3-5-8所示。实验步骤如下:1 .确认从PC机引出的两根扁平电缆已经连接在实验平台上;2 .首先运行CHECK程序,查看INTR中断号及相关信息;3 .参考实验流程图编写程序,然后编译链接;4 .参考实验接线图连接实验电路;5 .运行程序,按动KK1+、KK2+按键,观察中断响应是否正常。六、实验报告内容及要求1 .按步骤分析实验原理及实验过程中存在的问题。2 .附中断处理程序清单。(b)中断处理程序(a)主程序图11-6 82
13、59中断应用实验(2)参考程序流程图系统总线XxxxxxxX1XI2A2NT1D7D6D5D4D3IROD28259Dl单元DOIRIWRRDCSAOINTKKl +KK2+单次脉冲单元图1178259中断应用实验(2)参考接线图中断处理程序如下:(I)单中断应用实验INTR_IVADDEQU01C8H;INTR对应的中断矢量地址INTR_OCW1EQUOA1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQUOAOH;INTR对应PC机内部8259的OCW2地址INTR.IMEQUOFBHJNTR对应的中断屏蔽字STACKlSEGMENTSTACKDWSTACKlENDS
14、DATASEGMENT256DUP(?)MESDBPressanykeytoexit!,OAH,ODH,OAH,ODH,$CS_BAKDW?;保存INTR原中断处理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序人口偏移地址的变量IM_BAKDBDATAENDSCODESEGMENT?;保存INTR原中断屏蔽字的变量ASSUMECS:CODE,DSiDATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMES;显示退出提示MOVAH,09HINTCLI21HMOVAX,OOOOH;替换INTR的中断欠量MOVES,AXMOVDlJNTRJVADDMO
15、VAX,ES:DIMOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址MOVAX,OFFSETMYISRMOVES:DI,AX;设置当前中断处理程序人口偏移地址ADDDI,2MOVAX,ES:DIMOVCS_BAK,AX;保存INTR原中断处理程序入口段地址MOVAX,SEGMYISRMOVES:DI,AX;设置当前中断处理程序入口段地址MOVDX,INTR_OCW1;设置中断屏蔽存放器,翻开INTR屏蔽位INAL,DXMOVIM_BAK,AL;保存INTR原中断屏蔽字ANDAL,INTR-IMOUTSTIDX,ALWAITI:MOVAHJ;判断是否有按键按下INT16HJZWAI
16、Tl;无按键那么跳回继续等待,有那么退出QUIT:CLIMOVAX,OOOOH;恢复INTR原中断矢量MOVES,AXMOVDLlNTRVADDMOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址MOVES:DI,AXADDDI,2MOVAX,CS_BAKT恢复INTR原中断处理程序入口段地址MOVES:DI,AXMOVDX,INTR_OCW1;恢复INTR原中断屏蔽存放器的屏蔽字MOVAL,IM_BAKOUTDX,ALSTIMOVAX,4C00H;返回到DOSINT21HMYISRPROCNEAR;中断处理程序MYISRPUSHAX_MOVAL,39H_;使用DOS功能调用输出字
17、符9_MOVAHoEH一;选择DOS功能调用号INT21HMOVDL,20HINT21HOVER:MOVDX,INTR.OCW2;向PC机内部8259发送中断结束命令MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPAXIRETMYISRENDPCODEENDSENDSTARTBS屏幕显示截图:三C:VfllDOVSXsystB32cad.xPressanykeytoeitt(2)扩充中断应用实验INTRJVADDEQU01C8HJNTR对应的中断矢量地址INTR_OCW1EQUOAlHJNTR对应PC机内部8259的OCWl地址NTR_0CW2EQUOAOH;INT
18、R对应PC机内部8259的OCW2地址INTRJMEQUOFBHJNTR对应的中断屏蔽字IOYOEQU3000H;片选IOYO对应的端口始地址MY8259.ICWlEQUIOYO+OOH;实验系统中8259的ICWl端口地址MY8259.ICW2EQUIOY0+04H;实验系统中8259的ICW2端口地址MY8259.ICW3EQUIOY0+04H;实验系统中8259的ICW3端口地址MY8259._ICW4EQUIOY0+04H;实验系统中8259的ICW4端口地址MY8259.OCWlEQUIOY0+04H;实验系统中8259的OCWl端口地址MY8259.OCW2EQUIOYO+OOH;
19、实验系统中8259的OCW2端口地址MY8259.OCW3EQUIOYO+OOH;实验系统中8259的OCW3端口地址STACKlSEGMENTSTACKDW256DUP(?)OUT DX,ALMOV DX,MY8259JCW2STACKlENDSCS_BAKDW?IP_BAKDW?IM_BAKDB?;保存INTR原中断处理程序入口段地址的变量;保存INTR原中断处理程序入口偏移地址的变量;保存INTR原中断屏蔽字的变量DATAENDSCODESEGMENTASSUMECSiCODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMESMOVAH,09H
20、INT21HCLIMOVAX,OOOOHMOVES,AXMovdi,IntrjvaddMOVAX,ES:DIMOVIP_BAK,AXMOVAX,OFFSETMYISRMOVES:DI,AXADDDI,2;显示退出提示;替换INTR的中断矢量;保存INTR原中断处理程序入口偏移地址;设置当前中断处理程序人口偏移地址MOVAX,ES:DIMOVCS.BAK,AXMOVAX,SEGMYISRMOVES:DI,AXMOVDX,INTR_OCW1INAL,DXMOVIM_BAK,ALANDAL,INTR-IMOUTDX,ALMOVDX,MY8259-ICW1MOVAL,13H;保存INTR原中断处理程序
21、入口段地址;设置当前中断处理程序入口段地址,设置中断屏蔽存放器,翻开INTR的屏蔽位;保存INTR原中断屏蔽字;初始化实验系统中8259的ICWl;边沿触发、单片8259、需要ICW4DATASEGMENTMESDBPressanykeytoexit!,OAH,ODH,OAH,ODH,$;初始化实验系统中8259的ICW2MOVAL,08HOUTDX,ALMOVDX,MY8259JCW4MOVAL,OOHOUTDX,ALMOVDX,MY8259_OCW3MOVAL,OAHOUTDX,ALMOVDX,MY8259_OCW1MOVAL,_OFCHOUTDX,ALSTIWAITl:MOVAH,1IN
22、T16HJZWAITlQUIT:CLIMOVAX,0000HMOVES,AXMovdi,IntrjvaddMOVAX,IP.BAKMOVES:DI,AXADDDI,2MOVAX,CS_BAKMOVES:DI,AXMOVDX,INTR_OCW1MOVAL,IM_BAKOUTDX,ALSTIMOVAX,4C00HINT21HMYISRPROCNEARPUSHAXQUERY:MOVDX,MY8259.OCW3INAL,DX_ANDAL,03H_CMPAL,01HJEIROlSRJNEIRlISRJMPOVER;初始化实验系统中8259的ICW4;非自动结束EOl;向8259的OCW3发送读取IRR命
23、令;初始化实验系统中8259的OCWl翻开IRo和IRI的屏蔽位;判断是否有按键按下;无按键那么跳回继续等待,有那么退出;恢复INTR原中断矢量;恢复INTR原中断处理程序入口偏移地址;恢复INTR原中断处理程序入口段地址T恢复INTR原中断屏蔽存放器的屏蔽字;返回到DOS;中断处理程序MYISR;向8259的OCW3发送读取IRR命令;读出IRR存放器值;假设为IRO请求,跳到IRO处理程序;假设为IRl请求,跳到IRl处理程序IR0ISR:MOVAL,30HJRO处理,显示字符串STRoMOVAH,OEHINTIOHMOVAL,20HINTIOHJMPOVER;IR1处理,显示字符串STR
24、l;向PC机内部8259发送中断结束命令IRlISR:MOVAL,31HMOVAH,OEHINTIOHMOVAL,20HINTIOHJMPOVEROVER:MOVDX,INTR_OCW2MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPAXIRETMYISRENDPCODEENDSENDSTART屏幕显示截图:C:WIRDOVSVrystcb32cb1.exe日口QPressanykeytoexitf01001111110000111.七、实验总结通过本次实验,熟悉了可编程芯片8259,深入理解了中断控制器8259的工作原理,根本掌握了可编程控制器8259的应用编程方
25、法,在实验箱上的结果实现成功,到达预期实验目的。实验过程中,曾出现过接线过程中总是死机的情况,后来经总结并与同学交流发现时在接线时程序在运行着却断掉了实验箱的电源所致,多加注意后,实验结果正常。实验十二8255并口控制器应用实验一、实验目的1 .掌握8255的工作方式及应用编程;2 .掌握8255的典型应用电路接法。二、实验所用设备1 .PC微机一台;2 .TD-Pir实验系统一套。三、实验内容1 .根本输入输出实验。编写程序,使8255的A为输出,B为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。2 .流水灯显示实验。编写程序,使8255的A口和B口均为输出,实
26、现16位数据灯的相对循环显示。四、实验原理微机接口电路中,常采用74LS138译码器来实现I/O端口或存储器的地址译码。74LS138有3个输入引脚、3个控制引脚及8个输出引脚,其管脚信号如图I(M所示。当3个控制信号有效时,相应于输入信号A、B、C状态的那个输出端为低电平,该信号即可作为片选信号。并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Imel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式O根本输入
27、/出方式;方式1一选通输入/出方式;方式2一双向选通工作方式。8255的内部结构及引脚如图12-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图12-2所示。双向数据总我D0D7ZZRD-WRCAlAORESET指线冲常 数总缓器读/写控制逻辑组制件 A控部仁8位内总统B组 控制 品体=AD(Sfi)B(81)A_k DOMY PA7-PA0CD(高4位)CD(fe4 位)PA3PA2PAlPAORDcCS-GNDAlAOPC7PC6PC5PC4PCOPClPC2PC3PBOPBlPB2 01234567890 12345678911111111115528Q987654 3
28、2 1O9CQ7XQ5 4321 43333333333222222222图12-18255的内部结构及引脚I D7 I D6 I D5 I D4 I D3 I D2 I Dl IDOlI D7 I D6 I D5 I D4 I D3 I D2 I Dl I DO I低出入 口输输置位复位。复位1置位AB 。输出 1输入方式选择。方式O 1方式1C 口高4位O输出1输入O输出1输入C的位选择 位 D3D2D1 0 0 0 0 10 0 1 2 0 10 3 0 11 4 10 0 5 10 1 6 110 7 111方式选择OO方式001方式1Ix方式2(a)工作方式控制字(b)C口按位置位/
29、复位控制字图12-28255控制字格式五、实验说明及步骤1 .根本输入输出实验本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。参考程序流程如图12-3所示。I开始I图123 8255并口应用实验(1)参考程序流程图实验步骤如下:1 .确认从PC机引出的两根扁平电缆已经连接在实验平台上;2 .参考图12-4所示连接实验线路;3 .首先运行CHECK程序,查看I/O空间始地址;4 .利用查出的地址编写程序,然后编译链接;5 .运行程序,拨动开关,看数据灯显示是否正确
30、。郛 羽 爆图12-4 8255并口应用实验(1)参考接线图开关及LED显示单元2 .流水灯显示实验首先分别向A口和B口写入80H和OlH,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。参考实验程序流程如图12-5所示。图12-5 8255并口应用实验(2)参考程序流程图实验步骤如下:1 .确认从PC机引出的两根扁平电缆已经连接在实验平台上;2 .首先运行CHECK程序,查看I/O空间始地址;3 .利用查出的地址编写程序,然后编译链接;4 .参考图12-6所示连接实验线路;5 .运行程序,看数据灯显示是否正确。郅烟燃啖图1268255并口应用实验(2)参考接线
31、图六、实验报告内容及要求IN AL,DXMOV DX,MY8255_AOUT DX, ALMOV AH,1INT 16HJZ LOOPlQUIT: MOV AX,4C00HINT 21H1.附主要程序清单。(1)根本输入输出实验:IOYOEQU3000HMY8255_AEQUIOYO+OOH*4MY8255_BEQUIOY0+01HM;片选IOYO对应的端口始地址;8255的A口地址;8255的B口地址MY8255_CEQUIOY0+02H*4;8255的C口地址MY8255_MODEEQUIOY0+03H*4STACKlSEGMENTSTACKDW256DUP(?)STACKlENDSCOD
32、ESEGMENTASSUMECSiCODE;8255的控制存放器地址START:MOVDX,MY8255_MODE;初始化8255工作方式MOVAL,_82H;工作方式O,A口输出,BrI输入OUTDX,ALB111.OOPl:MOVDX,MY8255_B;写A口;判断是否有按键按下;无按键那么跳回继续循环,有那么退出;结束程序退出CODEENDSENDSTART(2)流水灯显示实验:;片选IoYO对应的端口始地址IOYOEQU3000HMY8255_AEQUIOYO+OOH*4;8255的A口地址MY8255.BEQUIOY0+01H*4;8255的B口地址MY8255_CEQUIOY0+0
33、2H*4;8255的C口地址MY8255.MODEEQUIOY0+03H*4STACKlSEGMENTSTACKDW256DUP(?)STACKlENDSDATASEGMENT;8255的控制存放器地址LADB?1.BDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;定义数据变量MOVDX,MY8255.MODE;定义8255工作方式MOVAL,80HOUTDX,AL;工作方式O,A口和B口为输出MOVDX,MY8255_AMOVAL,80HOUTDX,ALMOVLA,AL;写A口发出的起始数据MOVDX,M
34、Y8255.BMOVAL,OlHOUTDX,ALMOVLB,AL1.OOPl:CALLDALLY;写B口发出的起始数据MOVAL,LA_RORAL,1_MOVLA,ALMOVDX,MY8255_AOUTDX,AL;将A口起始数据右移再写入A口MOVAL,LB_RORAL,1_MOVLB,ALMOVDX,MY8255.BOUTDX,AL;将B口起始数据左移再写入B11MOVAH,1INT16H;判断是否有按键按下JZLOOPl;无按键那么跳回继续循环,有那么退出QUIT:MOVAX,4C00HINT21H;结束程序退出DALLYPROCNEARPUSHCXPUSHAXMOVCX,OFFFH;软件
35、延时子程序Dl:MOVAX,0FFFFHD2:DECAXJNZD2LOOPDlPOPAXPOPCXRETDALLYENDPCODEENDSENDSTART七、实验总结通过本次实验,深入理解了8255的工作方式及应用编程,根本掌握了8255的典型应用电路接法。实验十四8254定时/计数器应用实验一、实验目的1 .掌握8254的工作方式及应用编程;2 .掌握8254的典型应用电路接法。二、实验所用设备1 .PC微机一台;2 .TD-Pir实验系统一套。三、实验内容1 .计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KKl-五次后,产生一次计数中断,并在屏幕上显示一个字符
36、5。2 .定时应用实验。编写程序,应用8254的定时功能,实现一个秒表计时并在屏幕上显示。四、实验原理8254是Intel公司生产的可编程间隔定时器。是8253的改良型,比8253具有更优良的性能。8254具有以下根本功能:(1)有3个独立的16位计数器;(2)每个计数器可按二进制或十进制(BCD)计数;(3)每个计数器可编程工作于6种不同工作方式;(4) 8254每个计数器允许的最高计数频率为IOMHz(8253为2MHz);(5) 8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态存放器的内容。(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初
37、值公式为n=fcLKifUTi其中fCLKi是输入时钟脉冲的频率,fUTi是输出波形的频率。图14-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:(1)方式0:计数到0结束输出正跃变信号方式。(2)方式1:硬件可重触发单稳方式。(3)方式2:频率发生器方式。(4)方式3:方波发生器。(5)方式4:软件触发选通方式。(6)方式5:硬件触发选通方式。CLKOGATEO*-ouo.CLKlQATEl*OUT1VCLK2QATE2OUT!器1计数器0器2DlDO CLKO OUTO GATEO GND一三二三三L 2423222120
38、19181716“1413 J541234567 8910n12 -VCC WR RD CS Al AO CLK2 OUT2 GATE2 CLKl QATEl OUTl图14-18254的内部接口和引脚8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表14-1所示。读回控制字格式如表14-2所示。当读回控制字的D4位为0时,由该读回控制字D1D2位指定的计数器的状态存放器内容将被锁存到状态存放器中。状态字格式如表14-3所示。表14-18254的方式控制字格式D7D6D5D4D3
39、D2DlDO计数器选择读/写格式选择工作方式选择计数码制选择00一计数器0Ol一计数器110一计数器2H一读出控制字标志00一锁存计数值Ol一读/写低8位10一读/写高8位11一先读/写低8位,再读/写高8位OOO一方式0OOl一方式1010一方式2011一方式3100一方式4101一方式50一二进制数1一十进制数表1428254读出控制字格式D7D6D5D4D3D2DlDO110一锁存计数值0锁存状态信息计数器选择(同方式控制字)0表1438254状态字格式D7D6D5D4D3D2DlDOOUT引脚现行状态1一高电平2低电平计数初值是否装入1一无效2一计数有效计数器方式(同方式:控制字)五、
40、实验说明及步骤1.计数应用实验编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KKl-作为CLKO时钟,OUTO连接INTR,每当KKI.按动5次后产生中断请求,在屏幕上显示字符“5。参考程序流程如图142所示。单元中GATEO已经连接了一个上拉电阻,所以GATEO不用连接。实验步骤如下:1 .确认从PC机引出的两根扁平电缆已经连接在实验平台上;2 .首先运行CHECK程序,查看I/O空间始地址;3 .利用查出的地址编写程序,然后编译链接;4 .参考图14-2所示连接实验线路;5 .运行程序,按动KKl-微动开关,观察是否5次后屏幕显示字符“5;6 .可以改变计数初值,
41、从而实现不同要求的计数。2.定时应用实验编写程序,将8254的计数器O设置为方式2,用系统总线上CLK作为CLKo时钟,计数值为87A2H,OUTo约每30HZ输出一个脉冲。将OUTO连接至IHNTR,即每1/30秒产生一次中断。在中断处理程序中进行计数,计满30次即为1秒。用程序完成一个秒表显示,每计时60秒自动归零。参考程序流程如图14-4所示。I开中断II返回到DO口(a)主程序(b)中断处理程序图14-28254应用实验(1)参考程序流程图=8=8765432101ODdddddddaACLKO8254单元0-0KK1+单次脉冲单元XIoWXIoRK)YOINTRWRRDCSOUTO图14-28254应用实验(1)参考接线图ai计时值自加1,计到60归O在屏幕上显示计时值初始化PCIJNTrcSR替换INiR中断矢量、打开屏蔽位I在屏幕上显示计时初值00I清PCI_INTCSR标志位向PC内8云9发中断结束命令设置8254工作方式并 装入计数初值恢复 P