《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt

上传人:m**** 文档编号:568462513 上传时间:2024-07-24 格式:PPT 页数:44 大小:1.41MB
返回 下载 相关 举报
《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt_第1页
第1页 / 共44页
《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt_第2页
第2页 / 共44页
《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt_第3页
第3页 / 共44页
《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt_第4页
第4页 / 共44页
《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》第十四章:端口输入、输出与外设编程.ppt(44页珍藏版)》请在金锄头文库上搜索。

1、-朱耀庭汇编语言程序设计汇编语言程序设计-朱耀庭朱耀庭 第第14章章 端口输入输出与外设编程端口输入输出与外设编程v到到目目前前为为止止,大大部部分分编编程程工工作作都都是是针针对对CPU和和内内存存的的。但但实实际际情情况况是是除除CPU和和内内存存外外,主主机机周周围围有有很很多多外外部部设设备备,如如键键盘盘、鼠鼠标标、打打印印机机、串串口口、USB等等。这这些些设设备备都都有有其其独独立立的的芯芯片片,有有些些芯芯片片也也是是微微处处理理器器,CPU可可以以通通过过端端口口对对其其编编程程,实实现现对对它它们们的的控控制制和和协协调调各各部部分分的的工工作作。在在DOS环环境境下下,这

2、这些些工工作作是是由由初初始始化化程程序序或或DOS内内部部程程序序通通过过BIOS程程序序去去进进行行的的,用用户户只只能能通通过过DOS或或BIOS的的功功能能调用间接进行干预。调用间接进行干预。v本本章章将将介介绍绍如如何何通通过过端端口口直直接接对对外外设设进进行行编编程程,使使其其完完成成要要求求的的工工作作。内内容容涉涉及及外外设设和和其其相相应应端端口口的的概概念念、端端口口编编址及其访问方式,同时还将介绍一些典型芯片的编程。址及其访问方式,同时还将介绍一些典型芯片的编程。南开大学南开大学 朱耀庭朱耀庭第第14章章 端口输入输出与外设编程端口输入输出与外设编程v输输入入/输输出出

3、有有以以下下几几个个层层次次,应应用用程程序序级级、语语言言级级、DOS级级、BIOS级和端口级。级和端口级。v应应用用程程序序级级的的输输入入/输输出出是是指指用用各各种种工工具具开开发发的的应应用用程程序序的的输输入入/输输出出,语语言言级级是是指指各各种种语语言言的的输输入入/输输出出语语句句,DOS或或BIOS级级是是指指通通过过DOS或或BIOS功功能能调调用用实实现现的的输输入入/输输出出,而最底层则是端口的输入而最底层则是端口的输入/输出。输出。v本本章章就就是是要要解解决决最最后后一一级级,也也就就是是计计算算机机最最底底层层的的输输入入/输输出问题。出问题。南开大学南开大学

4、朱耀庭朱耀庭第第14章章 端口输入输出与外设编程端口输入输出与外设编程 14.4 综合实例综合实例 14.3 其他芯片编程其他芯片编程 14.2 8259A、8253、8255典型芯片编程典型芯片编程 14.1 端口端口南开大学南开大学 朱耀庭朱耀庭14.1 端口端口v进进行行端端口口编编程程前前,必必须须了了解解外外设设和和CPU是是如如何何连连接接在在一一起起的的。如如图图14-1所所示示,CPU与与外外部部设设备备(例例如如鼠鼠标标、键键盘盘等等)的的通通讯讯,是是通通过过I/O接接口口芯芯片片来来完完成成的的。一一个个I/O外外部部设设备备的的接接口口芯芯片片,根根据据其其复复杂杂程程

5、度度可可能能对对应应数数量量不不等等的的多多个个端端口。口。v在在这这些些端端口口中中,通通常常有有命命令令口口、输输入入口口和和输输出出口口。命命令令口口接接受受来来自自CPU的的命命令令,输输入入口口、输输出出口口分分别别向向CPU发发送送和和接接收收信信息息。通通常常在在非非直直接接数数据据存存取取方方式式下下,计计算算机机内内存存的的信信息息只只能能够够通通过过CPU内内部部的的累累加加器器AL或或AX与与外外部部设设备备的的端端口口进进行行信信息息交交换换。CPU通通过过I/O设设备备的的命命令令口口对对该该I/O设设备备进进行行编编程程,告告诉诉它它用用什什么么方方式式工工作作,C

6、PU通通过过该该设设备备的的输输入入/输输出出端端口口与与其其进进行行信信息息交交换换。表表14-1给给出出了了不不同同外外部部设备所对应的端口。设备所对应的端口。南开大学南开大学 朱耀庭朱耀庭14.1 端口端口图图14-1 CPU与外设连接示意图与外设连接示意图表表14-1 I/O端口地址分配表端口地址分配表演示动画演示动画南开大学南开大学 朱耀庭朱耀庭14.1 端口端口主机主机CPU对外部设备工作的控制指挥方式对外部设备工作的控制指挥方式 1 I/O端口编址和寻址端口编址和寻址 南开大学南开大学 朱耀庭朱耀庭1.主机主机CPU对外部设备工作的控制指挥方式对外部设备工作的控制指挥方式v80X

7、86具有简单而又灵活的端口输入具有简单而又灵活的端口输入/输出方式。输出方式。v在第在第6章提到的章提到的IN/OUT指令就是直接对端口进行输入指令就是直接对端口进行输入/输出操作指令。输出操作指令。(1) DMA方式方式(直接存储器访问直接存储器访问)v系统板以系统板以8237DMA控制器芯片提供控制器芯片提供DMA机构,主要用于存储器刷新机构,主要用于存储器刷新等。该芯片有等。该芯片有4个个DMA通道,可编程实现通道,可编程实现4个独立的个独立的DMA操作。这种操作。这种方式往往用于内存和外部设备的成批数据交换,它和系统硬件相关,方式往往用于内存和外部设备的成批数据交换,它和系统硬件相关,

8、不属于本课程的讨论范围。由于其繁杂性,详细情况请查阅不属于本课程的讨论范围。由于其繁杂性,详细情况请查阅8237DMA之之Intel产品说明书。产品说明书。v在在DMA方式下,不必经过累加器(方式下,不必经过累加器(AX或或AL)就可以完成内存和外设)就可以完成内存和外设的直接数据交换。即使如此,主机的直接数据交换。即使如此,主机CPU对它的控制也是经由端口对其对它的控制也是经由端口对其编程来实现的。编程来实现的。南开大学南开大学 朱耀庭朱耀庭1.主机主机CPU对外部设备工作的控制指挥方式对外部设备工作的控制指挥方式(2) 其他方式其他方式(查询和中断方式查询和中断方式)v查询方式,查询方式,

9、I/O设备接口电路中有工作状态设备接口电路中有工作状态忙忙,闲闲,及缓冲器,及缓冲器满满、空空等状态,等状态,CPU通过通过AL(或或AX),进而通过端口对这些,进而通过端口对这些状态不断地进行查询,以完成对设备的指挥和数据交换工作。状态不断地进行查询,以完成对设备的指挥和数据交换工作。v中断方式,中断方式,CPU不必定时查询不必定时查询I/O设备的状态,而是通过设备的状态,而是通过AL(或或AX)进进而通过端口直接下达命令和工作方式而通过端口直接下达命令和工作方式(即对外设编程即对外设编程),一旦,一旦I/O芯片接芯片接收了该信息,则由收了该信息,则由I/O接口芯片来控制相应设备的接口芯片来

10、控制相应设备的I/O,只是在工作完,只是在工作完成或是遇到紧急情况成或是遇到紧急情况(特殊条件产生特殊条件产生)时才通过发中断信号的方式,请时才通过发中断信号的方式,请求求CPU干预。干预。CPU相应中断后,根据情况再通过相应中断后,根据情况再通过I/O端口进行数据读端口进行数据读写或发布新的命令。写或发布新的命令。南开大学南开大学 朱耀庭朱耀庭2. I/O端口编址和寻址端口编址和寻址 vI/O端口编址有两种方式:统一编址和独立编址端口编址有两种方式:统一编址和独立编址v统一编址也称为存储器映像编址,这种方式是从存储器空统一编址也称为存储器映像编址,这种方式是从存储器空间划出一部分空间给间划出

11、一部分空间给I/O设备设备,把把I/O端口当作内存来对待,端口当作内存来对待,使用与访问内存同样的指令来访问。使用与访问内存同样的指令来访问。Motorola系列、系列、Apple系列、部分小型机就是采用这种方式。这种方式的系列、部分小型机就是采用这种方式。这种方式的优点是访问内存的指令均可用于访问优点是访问内存的指令均可用于访问I/O端口,处理数据能端口,处理数据能力强、灵活,并且力强、灵活,并且I/O 可有较大编址空间,易扩展等。缺可有较大编址空间,易扩展等。缺点是点是I/O端口占用了一部分内存空间,使存储器容量减小,端口占用了一部分内存空间,使存储器容量减小,I/O指令较长,执行速度较慢

12、等。指令较长,执行速度较慢等。南开大学南开大学 朱耀庭朱耀庭2. I/O端口编址和寻址端口编址和寻址 v独立编址也称为独立编址也称为I/O映像编址,外设的端口不占用内存空间映像编址,外设的端口不占用内存空间v采采用用这这种种编编址址方方式式对对I/O端端口口操操作作需需要要采采用用专专门门的的输输入入/输输出指令出指令v如如80X86系列和系列和Z-80系列计算机都采用这种方式系列计算机都采用这种方式v这这种种方方式式的的优优点点是是不不占占用用内内存存空空间间、指指令令独独立立、I/O操操作作和和存存储储器器操操作作容容易易区区分分,缺缺点点是是访访问问端端口口的的方方法法不不如如访访问问存

13、存储器的方法多,且储器的方法多,且I/O空间不易扩展等空间不易扩展等南开大学南开大学 朱耀庭朱耀庭2. I/O端口编址和寻址端口编址和寻址 vIntel的的X86微处理器都支持微处理器都支持I/O独立编址,有单独的独立编址,有单独的I/O指指令令(IN/OUT等等),使用低,使用低16位地址表示位地址表示I/O端口地址,端口地址,16位位处理器支持字节型和字型处理器支持字节型和字型I/O操作,操作,32位处理器还支持双位处理器还支持双字型字型I/O操作。相邻的字节型操作。相邻的字节型8位端口,可以组成一个字型位端口,可以组成一个字型16位端口,相邻的位端口,相邻的16位端口可以组成一个双字型位

14、端口可以组成一个双字型32位端口。位端口。X86系列的微处理器最多支持系列的微处理器最多支持64k(065535)个字节型的端个字节型的端口。表口。表14-1给出了给出了IBM-PC的的I/O端口地址分配表。端口地址分配表。vIntel X86系列微处理器不能用系列微处理器不能用mov,push,pop等内存读等内存读写指令对端口操作,端口读写的基本指令只有两条:写指令对端口操作,端口读写的基本指令只有两条:in和和out。端口指令寻址有两种方式:直接寻址和间接寻址。端口指令寻址有两种方式:直接寻址和间接寻址。关于端口直接寻址和间接寻址的方法,在关于端口直接寻址和间接寻址的方法,在6.7节已经

15、有详细节已经有详细说明。说明。南开大学南开大学 朱耀庭朱耀庭14.2 8259A、8253、8255典型芯片编程典型芯片编程v外外设设通通过过接接口口芯芯片片和和CPU交交互互,接接口口芯芯片片内内部部有有若若干干寄寄存存器,器,CPU通过端口对这些寄存器进行访问通过端口对这些寄存器进行访问vI/O芯芯片片编编程程的的过过程程,实实际际上上就就是是通通过过端端口口对对其其内内部部寄寄存存器器进进行行设设置置的的过过程程,一一旦旦设设置置完完毕毕,这这些些芯芯片片就就能能按按要要求求工工作作v本节的重点是介绍一些典型芯片的编程方法本节的重点是介绍一些典型芯片的编程方法 南开大学南开大学 朱耀庭朱

16、耀庭14.2 8259A、8253、8255典型芯片编程典型芯片编程 8259A芯片编程芯片编程 8255编程编程 14.2.114.2.214.2.3 8253编程编程 南开大学南开大学 朱耀庭朱耀庭14.2.1 8259A芯片编程芯片编程v8259A可可编编程程中中断断控控制制器器是是专专门门用用于于系系统统中中断断管管理理的的大大规规模集成电路芯片,图模集成电路芯片,图14-2是其内部结构图。是其内部结构图。vCPU通通过过对对8259A送送4个个初初始始化化命命令令字字以以及及3个个操操作作字字来来完完成成对对8259A的的初初始始化化,这这一一工工作作通通常常是是在在系系统统启启动动

17、时时由由初初始始化化程程序序完完成成的的。一一旦旦初初始始化化完完成成,工工作作过过程程中中一一般般不不再再改变。改变。v8259A提提供供了了两两个个端端口口,但但有有多多个个命命令令字字,因因此此命命令令字字按按一一定定顺顺序序进进行行设设置置。系系统统运运行行过过程程中中,可可随随时时通通过过写写入入命命令操作字来改变令操作字来改变8259A的某些功能。的某些功能。图图14-2 8259内部结构图内部结构图 南开大学南开大学 朱耀庭朱耀庭14.2.1 8259A芯片编程芯片编程v8259A提提供供两两个个端端口口,即即20H和和21H,其其中中20H端端口口为为命命令令口口。如如图图14

18、-3所所示示,通通过过20H端端口口CPU可可以以向向8259A发发出出命命令令,比比如如中中断断结结束束等等。21H端端口口对对应应中中断断屏屏蔽蔽寄寄存存器器(IMR),通通过过它它可可以以屏屏蔽蔽所所要要屏屏蔽蔽的的一一些些中中断断,如如图图14-4所所示示。一一片片8259A能能够够接接受受8个个独独立立的的硬硬件件中中断断信信号号,编编号号为为IRQ0IRQ7,号号数数小小的的级级别别最最高高。微微机机中中BIOS在在系系统统初初始始化化时时已已对对其其编编程程,并并且且使使其其分分别别对对应应中中断断类类型型08H0FH。其其中中IRQ0IRQ7引引脚脚与与中中断断源源的的对对应应

19、关关系系如如表表14-2所所示示。用用户户通通过过写写端端口口21H可可以以设设置置对对应应编编号号的的中中断断信号的屏蔽位信号的屏蔽位 图图14-3 中断结束和优先级循环控制字中断结束和优先级循环控制字图图14-4 中断屏蔽寄存器中断屏蔽寄存器南开大学南开大学 朱耀庭朱耀庭14.2.1 8259A芯片编程芯片编程表表14-2 中断向量表中断向量表 中断号 功能 中断向量号中断向量地址 主8259A IRQ0 日时钟/计数器008H 0020H0023H 主8259A IRQ1 键盘 09H 0024H0027H 主8259A IRQ2 接从片8259A 0AH 0028H002BH 主825

20、9A IRQ3 串行口2 0BH 002CH002FH 主8259A IRQ4 串行口1 0CH 0030H0033H 主8259A IRQ5 并行口2 0DH 0034H0037H 主8259A IRQ6 软盘 0EH 0038H003BH 主8259A IRQ7 并行口1 0FH 003CH003FH 南开大学南开大学 朱耀庭朱耀庭14.2.1 8259A芯片编程芯片编程v如如图图14-5所所示示,来来自自8259的的中中断断是是否否被被响响应应取取决决于于标标志志寄寄存存器器FLAG中中的的中中断断标标志志位位IF,当当该该位位为为1时时,称称作作开开中中断断。在在开开中中断断状状态态,

21、即即IF1,CPU允允许许响响应应任任何何非非屏屏蔽蔽中中断断;当当该该位位为为0时时,即即关关中中断断状状态态,CPU不不允允许许相相应应来来自自8259的所有硬件中断。的所有硬件中断。v需需要要注注意意的的是是,在在进进入入中中断断处处理理例例行行程程序序时时,计计算算机机会会自自动动关关中中断断(置置IF为为0)。因因此此在在编编写写中中断断处处理理程程序序时时,一一旦旦允允许许响响应应硬硬件件中中断断,就就应应在在中中断断处处理理程程序序中中使使用用STI指指令开中断,必要时再使用令开中断,必要时再使用CLI指令关中断。指令关中断。图图14-5 CPU响应中断响应中断南开大学南开大学

22、朱耀庭朱耀庭14.2.1 8259A芯片编程芯片编程v中断处理应遵循如下原则:中断处理应遵循如下原则: 在关中断状态保护现场在关中断状态保护现场 在关中断状态屏蔽低级中断在关中断状态屏蔽低级中断 开中断后进行中断处理开中断后进行中断处理 向中断命令寄存器发中断结束命令向中断命令寄存器发中断结束命令 在关中断状态恢复现场在关中断状态恢复现场 开中断后返回开中断后返回v编写编写8259A的中断处理程序时,如果要设置屏蔽字,例如,的中断处理程序时,如果要设置屏蔽字,例如,禁止除键盘以外的所有设备发出来的中断请求,则可以通禁止除键盘以外的所有设备发出来的中断请求,则可以通过向过向21H端口送端口送0F

23、DH的方法来实现的方法来实现: MOV AL,0FDH OUT 21H,AL南开大学南开大学 朱耀庭朱耀庭14.2.1 8259A芯片编程芯片编程v编写编写8259的中断处理程序与编写软中断处理程序不同,必的中断处理程序与编写软中断处理程序不同,必须参与中断服务程序结束时的信号发送工作。须参与中断服务程序结束时的信号发送工作。v即在中断处理程序结束前,也就是即在中断处理程序结束前,也就是IRET之前,必须向之前,必须向8259发出发出“中断结束中断结束”的的EOI命令给命令给8259的中断命令寄存的中断命令寄存器,表示该硬件中断处理已经完毕。器,表示该硬件中断处理已经完毕。v这一命令的代码是这

24、一命令的代码是20H,而中断命令寄存器的端口号是,而中断命令寄存器的端口号是20H,所以这段程序应写为:,所以这段程序应写为: MOV AL,20H OUT 20H,ALv下面用一个例子来说明如何对下面用一个例子来说明如何对21H端口编程端口编程: 南开大学南开大学 朱耀庭朱耀庭14.2.1 8259A芯片编程芯片编程v例例14-1:屏蔽键盘中断例:屏蔽键盘中断例v题目:测试屏蔽并关闭键盘中断题目:测试屏蔽并关闭键盘中断v设计思路:通过向设计思路:通过向21H端口发送屏蔽字端口发送屏蔽字2H实现实现 例例14-1:屏蔽键盘中断例:屏蔽键盘中断例v程程序序说说明明:程程序序运运行行后后,键键盘盘

25、不不能能使使用用,该该程程序序慎慎用用,最好在虚拟机上调试最好在虚拟机上调试 南开大学南开大学 朱耀庭朱耀庭14.2.2 8255编程编程v图图14-6是是8255的内部结构图的内部结构图v8255用用于于系系统统板板配配置置,它它支支持持多多种种设设备备和和信信号号,如如键键盘盘、扬声器、配置开关和若干其他信号扬声器、配置开关和若干其他信号v该该片片对对应应4个个I/O口口。其其中中61H为为输输出出端端口口PB,60H和和62H是是两两个个输输入入端端口口,分分别别称称为为PA和和PC端端口口,63H对对应应单单字字节的命令寄存器节的命令寄存器v图图14-7是端口分配图是端口分配图图图 1

26、4-6 8255内部结构图内部结构图图图14-7 8255端口分配图端口分配图1图图14-7 8255端口分配图端口分配图南开大学南开大学 朱耀庭朱耀庭14.2.2 8255编程编程vPC机加电后,机加电后,BIOS发送发送99H给给63H端口将该芯片初始化。端口将该芯片初始化。可利用可利用PB端口给定位置置端口给定位置置1的方法选择的方法选择PA和和PC端口交替端口交替输入。利用输入。利用PB口可读到曾写入口可读到曾写入PB口的当前值。下面分别口的当前值。下面分别介绍介绍PA,PB和和PC端口。端口。vPA口:当口:当PB口位口位7=0时,从时,从PA口输入的是键盘扫描码。口输入的是键盘扫描

27、码。当当PB口位口位7=1时,从时,从PA口输入的是由系统开关口输入的是由系统开关1,2反映反映的系统配置状态。其中位的系统配置状态。其中位76表示开关表示开关1的的87位,它指位,它指明了驱动器个数。其中位明了驱动器个数。其中位54,表示开关,表示开关1的的65位,指位,指明了显示器的类型。其中位明了显示器的类型。其中位32对应开关对应开关1的的43,表示,表示系统板上的系统板上的RAM数。第数。第1位未用。第位未用。第0位对应开关位对应开关1的位的位1表示非磁盘系统。表示非磁盘系统。南开大学南开大学 朱耀庭朱耀庭14.2.2 8255编程编程vPB口:位口:位02为为1分别表示选通定时器分

28、别表示选通定时器2的门,扬声器数的门,扬声器数据选通,据选通,PC口位口位03的选源。位的选源。位36置置0分别表示开盒式分别表示开盒式磁带机马达,允许磁带机马达,允许RAM,允许由扩展槽发送错误信号,禁,允许由扩展槽发送错误信号,禁止键盘中断。位止键盘中断。位7则用以则用以PA口输入时选源,用来给键盘发口输入时选源,用来给键盘发送肯定信号。送肯定信号。vPC口:位口:位74置置1分别表示奇偶错,扩充槽错,定时器分别表示奇偶错,扩充槽错,定时器2的输出,盒式磁带机的输入。位的输出,盒式磁带机的输入。位30视视PB口位口位2为为1或或0而而定,当定,当PB口位口位2为为1时,时,PC口位口位03

29、分别表示系统板开关分别表示系统板开关上的上的14位,指出扩展槽上位,指出扩展槽上RAM总数。当总数。当PB口位口位2为为0时,时,PC口位口位03分别对应系统板开关分别对应系统板开关2的的58位,表示备用。位,表示备用。南开大学南开大学 朱耀庭朱耀庭14.2.2 8255编程编程v例如读系统板配置开关例如读系统板配置开关1所给出的驱动器个数,源程序如所给出的驱动器个数,源程序如下。下。 IN AL,61H ;读读PB口的当前值口的当前值 OR AL,080H ;(AL) 80H,强迫位,强迫位7为为 OUT 61H,AL ;PB口位口位7置置1,使,使PA为开关为开关1开门开门 IN AL,6

30、0H ;读读PA口,即得开关口,即得开关1状态状态 NOT AL ;AL各位取反各位取反 MOV CL,6 ;置移位置置移位置 SHR AL,CL ;右移右移6位前面补位前面补0,(AL)现为驱动器数现为驱动器数 南开大学南开大学 朱耀庭朱耀庭14.2.2 8255编程编程v例例14-2 编程编程8255芯片芯片61H让扬声器发声让扬声器发声v题目:关闭定时器门,按同样的时间间隔打开和关闭扬声题目:关闭定时器门,按同样的时间间隔打开和关闭扬声器的门让扬声器发声器的门让扬声器发声v设计思路:通过设计思路:通过61H口关定时器门,用以下程序段定时打口关定时器门,用以下程序段定时打开或关闭扬声器门产

31、生方波让扬声器发生开或关闭扬声器门产生方波让扬声器发生 IN AL,61H MOV AH,AL XOR AL,2 OUT 61H,AL例例14-2 编程编程8255芯片芯片61H让扬声器发声让扬声器发声v程程序序说说明明:扬扬声声器器发发声声频频率率和和发发声声时时间间由由内内外外层层循循环环控控制制 南开大学南开大学 朱耀庭朱耀庭14.2.3 8253编程编程v可编程定时可编程定时/计数器计数器8253通过软件设定,可以产生各种时通过软件设定,可以产生各种时间延迟信号,它的使用非常广泛,通常用于定时控制、延间延迟信号,它的使用非常广泛,通常用于定时控制、延时、计数等场合。如定时刷新时、计数等

32、场合。如定时刷新RAM、系统时钟的计时、系统时钟的计时、扬声器的发音长短的控制等。在使用的时候,需要进行严扬声器的发音长短的控制等。在使用的时候,需要进行严密的计算和精确的测试,以满足不同的要求。密的计算和精确的测试,以满足不同的要求。Intel 8254是是8253的改进型号,其内部工作方式,外部引脚与的改进型号,其内部工作方式,外部引脚与8253完全相同,只是增加了一个读回命令和状态字。完全相同,只是增加了一个读回命令和状态字。8253的的编程同样适用于编程同样适用于8254v8253是是NMOS工艺制成的大规模集成电路,通过简单编程工艺制成的大规模集成电路,通过简单编程可实现不同的功能,

33、图可实现不同的功能,图14-8为可编程定时为可编程定时/计数器计数器8253的的基本原理图基本原理图图图14-8 8253内部结构图内部结构图南开大学南开大学 朱耀庭朱耀庭14.2.3 8253编程编程v8253内部有内部有3个独立的计数器,每个计数器占用一个个独立的计数器,每个计数器占用一个I/O端端口地址,加上控制字端口,一片口地址,加上控制字端口,一片8253共占了共占了4个个I/O端口地端口地址。址。v8253/8254工作方式:工作方式: (1)方式)方式0:计数到:计数到0结束输出正跃变的信号方式。结束输出正跃变的信号方式。 可以可以作为查询信号,也可以直接去控制某个操作作为查询信

34、号,也可以直接去控制某个操作 (2)方式)方式1:硬件可重触发单稳方式:硬件可重触发单稳方式 (3)方式)方式2:频率发生器方式,用来分频:频率发生器方式,用来分频 (4)方式)方式3:方波发生器,产生周期方波:方波发生器,产生周期方波 (5)方式)方式4:软件触发选通方式:软件触发选通方式 (6)方式)方式5:硬件触发选通方式:硬件触发选通方式南开大学南开大学 朱耀庭朱耀庭14.2.3 8253编程编程v它的它的3个计数器通道分别对应端口个计数器通道分别对应端口40H,41H,42H。每一通道均可通。每一通道均可通过过43H端口编程,使其工作在上述的端口编程,使其工作在上述的05六种方式之一

35、。在系统中六种方式之一。在系统中0#通道用以产生定时器中断,通道用以产生定时器中断,1#用以发送数据请求供用以发送数据请求供DMA存储器刷新,存储器刷新,2#到扬声器产生声音效果,由到扬声器产生声音效果,由8255PC口可取样。口可取样。v每一通道包括一个每一通道包括一个16位计数器和一个位计数器和一个16位锁定寄存器位锁定寄存器(刷新前不变刷新前不变)。编程时将一计数值送给锁定寄存器,然后传给计数器,每输入一脉冲编程时将一计数值送给锁定寄存器,然后传给计数器,每输入一脉冲计数减计数减1,减到,减到0时发一信号。时发一信号。43H端口对应命令寄存器,其各位含义端口对应命令寄存器,其各位含义如下

36、:位如下:位76指出要编程的通道,指出要编程的通道,00,01,10分别对应分别对应0#,1#,2#通道。位通道。位54表示读写方式,表示读写方式,00表示锁定当前计数器值,表示锁定当前计数器值,0表示只读表示只读/写写MSB,10表示只读表示只读/写写LSB,11表示先读表示先读/写写LSB,后,后MSB(LSB,MSB各占各占8位位)。位。位31表示表示6种方式,位种方式,位0表示计数器计数方式,为表示计数器计数方式,为0为二进制方式,为为二进制方式,为1为为BCD码计数方式。码计数方式。8253控制字各位的含义如表控制字各位的含义如表14-3所示所示 南开大学南开大学 朱耀庭朱耀庭14.

37、2.3 8253编程编程表表14-3 8253控制字各位的含义控制字各位的含义 D7 D6 D5 D4 D3D2D1D0 计数器选择计数器选择 读读/写格式选择写格式选择 工作方式选择工作方式选择计数码制选择计数码制选择 00计数器计数器001计数器计数器110计数器计数器2118253中非法中非法8254中读出控制字标中读出控制字标志志 00锁存计数值锁存计数值 01读读/写低写低8位位 10读读/写高写高8位位 11先读先读/写低写低8位位 再读再读/写高写高8位位000方式方式0 001方式方式1 010方式方式2 011方式方式3 100方式方式4 101方式方式5 0二进制数二进制数

38、 1十进制数十进制数 南开大学南开大学 朱耀庭朱耀庭14.2.3 8253编程编程v例如,对例如,对2#通道(即第二个计数器)编程使其用方式通道(即第二个计数器)编程使其用方式5,先先LSB后后MSB,BCD码计数。码计数。 MOV AL,0BBH;选选2号通道,方式号通道,方式5,先,先LSB后后MSB,BCD计数计数 OUT 43H,AL MOV AL,60H OUT 42H,AL;60H送送LSB MOV AL,0H OUT 42H,AL;0H送送MSB 南开大学南开大学 朱耀庭朱耀庭14.2.3 8253编程编程v例例14-3:编程:编程8255和和8253让扬声器发声让扬声器发声v题

39、目:通过编程题目:通过编程8255打开扬声器和定时器通道打开扬声器和定时器通道2门和编程门和编程8253发出发出600周声音周声音v设计思路:根据主钟频率算出发出设计思路:根据主钟频率算出发出600周声音所需要向周声音所需要向8253通道通道2锁存器发送的计数值。编程锁存器发送的计数值。编程8255打开扬声器和打开扬声器和定时器通道定时器通道2门,向定时器通道门,向定时器通道2送计数值送计数值 例例14-3:编程:编程8255和和8253让扬声器发声让扬声器发声v程程序序说说明明:主主钟钟1.19318兆兆赫赫,一一个个时时钟钟周周期期约约为为888.229910-9秒秒。8253定定时时器器

40、在在方方式式3可可产产生生方方波波,600赫赫兹兹应应为为1/600888.229910-9=1989。若若定定时时器器通通道道2有有输输出出可可在在8255PB口口(61H)第第0位位和和第第1位位为为1时时向向扬扬声器输出方波经扬声器后平滑,产生方波另有他法。声器输出方波经扬声器后平滑,产生方波另有他法。南开大学南开大学 朱耀庭朱耀庭14.3 其他芯片编程其他芯片编程键盘控制器键盘控制器80421彩色彩色/图形适配器图形适配器 3异步通讯适配器异步通讯适配器8250芯片芯片 56845CRT控制器控制器 2打印机适配器打印机适配器南开大学南开大学 朱耀庭朱耀庭1 键盘控制器键盘控制器804

41、2v在在以以80X86为为CPU的的计计算算机机内内,主主板板上上有有一一个个称称作作键键盘盘控控制制器器的的芯芯片片,PC机机的的键键盘盘一一般般使使用用Intel 8042兼兼容容的的微微控控制器,现在计算机上该功能一般已集成到南桥。制器,现在计算机上该功能一般已集成到南桥。v然然而而,这这个个设设备备在在逻逻辑辑上上仍仍然然叫叫做做8042。基基于于主主板板的的不不同同,键键盘盘控控制制器器可可以以工工作作于于“AT-兼兼容容”模模式式, 或或者者“PS/2-兼兼容容”模式。模式。v如如果果主主板板支支持持PS/2鼠鼠标标就就会会使使用用后后者者,这这时时8042既既是是键键盘盘控制器又

42、是鼠标控制器。控制器又是鼠标控制器。v 键盘控制器根据硬连线的方式自动决定工作于哪种模式。键盘控制器根据硬连线的方式自动决定工作于哪种模式。南开大学南开大学 朱耀庭朱耀庭1 键盘控制器键盘控制器8042v键盘缓冲区和状态字,键盘中断处理过程以及利用键盘缓冲区和状态字,键盘中断处理过程以及利用BIOS或或者者DOS来完成键盘输入的内容在第来完成键盘输入的内容在第13章已有详细介绍。章已有详细介绍。v此处介绍一下如何直接通过端口编程对键盘进行控制。此处介绍一下如何直接通过端口编程对键盘进行控制。v键盘控制器键盘控制器8042 包含如下寄存器:包含如下寄存器: 1字节的输入缓存字节的输入缓存包含从键

43、盘来的数据包含从键盘来的数据,只读只读 1字节的输出缓存字节的输出缓存 包含要被写到键盘的数据,只写包含要被写到键盘的数据,只写 1字节的状态寄存器字节的状态寄存器 8 个状态位,只读个状态位,只读 1字节控制寄存器字节控制寄存器 7 个控制位,读写个控制位,读写南开大学南开大学 朱耀庭朱耀庭1 键盘控制器键盘控制器8042v前前3个寄存器可以被个寄存器可以被CPU通过通过I/O端口端口60 H和和64H直接访问。直接访问。最后一个必须使用读命令去读最后一个必须使用读命令去读, 使用写命令去写。使用的使用写命令去写。使用的端口对应端口对应8255的端口,其端口分配见图的端口,其端口分配见图14

44、-6。v当键盘按下一个键或释放一个键的时候,键盘控制器都会当键盘按下一个键或释放一个键的时候,键盘控制器都会把这个键的相应的扫描码值放在把这个键的相应的扫描码值放在60H这个端口寄存器中,这个端口寄存器中,并向并向CPU提出中断请求要求读取提出中断请求要求读取60H端口的键盘扫描码值。端口的键盘扫描码值。对于这种多个字节的扫描码,键盘控制器会向对于这种多个字节的扫描码,键盘控制器会向CPU发出多发出多个中断请求,并依次发送它们。个中断请求,并依次发送它们。南开大学南开大学 朱耀庭朱耀庭1 键盘控制器键盘控制器8042v例例14-4:重写:重写INT 9中断处理程序例中断处理程序例v题目:写新的

45、题目:写新的INT 9 中断处理程序,利用键盘扫描码显示中断处理程序,利用键盘扫描码显示小写字母和数字符号小写字母和数字符号v设计思路:设计思路:8042和和8255端口兼容,通过端口兼容,通过60H口读键盘扫描口读键盘扫描码后查表输出对应符号码后查表输出对应符号 例例14-4:重写:重写INT 9中断处理程序例中断处理程序例v程程序序说说明明:新新的的INT 9 中中断断处处理理程程序序入入口口是是newint9,主主程序入口程序入口start,键盘扫描码转字符输出过程为,键盘扫描码转字符输出过程为prkey 南开大学南开大学 朱耀庭朱耀庭2 6845CRT控制器控制器v6845CRT控控制

46、制器器是是一一个个很很复复杂杂的的芯芯片片,加加电电后后,由由系系统统初初始化,初始化后编程较容易。始化,初始化后编程较容易。v它它对对应应两两个个端端口口,3B4H端端口口供供选选择择CRT芯芯片片内内部部的的寄寄存存器器,在在访访问问3B5H端端口口时时,必必须须先先通通过过3B4H端端口口选选择择内内部部15个寄存器之一。个寄存器之一。v6845内内部部支支持持16KB字字符符存存储储器器,通通过过015寄寄存存器器来来选选址。址。南开大学南开大学 朱耀庭朱耀庭3彩色彩色/图形适配器图形适配器v单单色色有有4KB存存储储器器,从从0B00H开开始始,而而彩彩色色有有16KB存存储储器,从

47、器,从0B800H开始。开始。v对对彩彩色色显显示示,6845的的端端口口地地址址为为3D4H,3D5H,而而增增加加的的3D9H供选色用供选色用 南开大学南开大学 朱耀庭朱耀庭4 打印机适配器打印机适配器v单色显示器打印机适配器,端口有单色显示器打印机适配器,端口有3个,即个,即3BCH、3BEH和和3BDH。其中。其中3BCH作为输出数据口,作为输出数据口,3BEH为控制口,为控制口,3BDH为输入状态口。为输入状态口。v并行打印适配器并行打印适配器I/O口地址有口地址有378H、37AH和和379H。其中。其中378H输出数据,输出数据,37AH输出控制,输出控制,379H输入状态输入状

48、态 南开大学南开大学 朱耀庭朱耀庭5异步通讯适配器异步通讯适配器8250芯片芯片v异异步步通通讯讯适适配配器器是是计计算算机机和和调调制制解解调调器器等等外外部部通通信信设设备备之之间的接口电路间的接口电路v端口地址范围为端口地址范围为3F8H3FEH 南开大学南开大学 朱耀庭朱耀庭14.4 综合实例综合实例v例例14-5 综合实例:综合实例:v题目:编写南开校歌唱歌程序题目:编写南开校歌唱歌程序v设计思路:让扬声器发某频率的声音方法见例设计思路:让扬声器发某频率的声音方法见例14-3。将南。将南开校歌简谱对应音符频率建表开校歌简谱对应音符频率建表FREQ1,表中以,表中以0结束。将结束。将每

49、一音符对应发声时长建表每一音符对应发声时长建表TIME1.从从FREQ1每读一个音每读一个音符,按对应符,按对应TIME1中的时长发声,直到遇结束符中的时长发声,直到遇结束符0频率为频率为止止 例例14-5 综合实例综合实例v程程序序说说明明:音音符符1、2、3、4、5、6、7、1、2、3、4、5、6、7对对应应频频率率分分别别为为131、147、165、175、196、220、247、262、294、330、349、392、440、496 南开大学南开大学 朱耀庭朱耀庭14.4 综合实例综合实例v例例14-6 编程编程8253计时并显示时间计时并显示时间v题目:命令行输入时:分:秒(题目:命

50、令行输入时:分:秒(xx:xx:xx)作为初始时间,重写)作为初始时间,重写INT 8 ,编程编程8253定时器产生每秒定时器产生每秒100次中断,根据次中断,根据INT 8 对时:分:秒的修改,显示对时:分:秒的修改,显示时:分:秒。时:分:秒。v设计思路:通过对设计思路:通过对8253进行编程,使定时器每秒发出进行编程,使定时器每秒发出100次中断信号,来修改次中断信号,来修改该中断处理程序该中断处理程序08H类的中断入口地址,类的中断入口地址,20H,21H,22H,23H的内容使其的内容使其指向自行设计的这一中断处理程序。主程序做完上述准备工作后开始显示时指向自行设计的这一中断处理程序

51、。主程序做完上述准备工作后开始显示时 分分 秒,只要秒一变就重新显示一次更新后的时间,否则动态等待。与此同时秒,只要秒一变就重新显示一次更新后的时间,否则动态等待。与此同时中断处理程序每中断处理程序每1/100秒中断主程序一次,每秒中断主程序一次,每100次更新一次秒计时值,够次更新一次秒计时值,够60秒就更新分计时值,够秒就更新分计时值,够60分就更新时计时值,够分就更新时计时值,够12小时就又从小时就又从0时记时,如此时记时,如此往复不断地处理,每次中断后都返回主程序。主程序与中断处理程序间共用往复不断地处理,每次中断后都返回主程序。主程序与中断处理程序间共用时、分、秒相应的变量时、分、秒相应的变量 例例14-6 编程编程8253计时并显示时间计时并显示时间v程程序序说说明明:本本程程序序执执行行时时,输输入入程程序序名名后后空空一一格格,在在命命令令行行中中按按时时 分分 秒秒的的格格式式输输入入计计时时起起始始时时间间,然然后后回回车车。只只要要用用户户输输入入任任一一键键之之后后就就开开始始计计时时,于于是是在在屏屏幕幕上上显显示示一一个个类类似似电电子子表表的的台台式式时时钟钟,直直到到重重新新启启动动机机器器为为止止 南开大学南开大学 朱耀庭朱耀庭-朱耀庭南开大学南开大学 朱耀庭朱耀庭

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号