当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

北京大学:《微机原理 Microcomputer Principle 微机与接口技术》课程实验指导(微机与接口技术实验)单元实验7 可编程定时计数器与中断控制

资源类别:文库,文档格式:PDF,文档页数:10,文件大小:303.32KB,团购合买
点击下载完整版文档(PDF)

实验七可编程定时计数器与中断控制 实验目的 1.掌握微机中断处理系统的基本原理、学习中断服务程序的编写方法。 2.掌握8253/8254定时/计数器的基本原理和编程方法。 二、实验原理 本实验采用 Intel8253作为计数器芯片,8254芯片是8253的兼容替代产品,计数速率 等性能优于8253 .可编程定时/计数器8253功能简介 8253含有三个独立的16位计数器,每个计数器连接外设的信号分别是 CLK——输入的脉冲信号或外部事件,计数器对此脉冲进行减1计数 GATE一—启动禁止计数的控制信号; OUT 输出信号。 每个计数器可有六种工作方式,均可由程序设置和改变,8253的几种工作方式及特 点如表71所示。若一个计数器被设定为方式0,计数初值n,在控制信号GATE为高时 即可对输入的脉冲作减1计数,OUT维持低电平;计数到0时,则由OUT端输出一个 高电平信号。若一个计数器被设定为方式2,输入为周期性脉冲信号,且计数初值可自 动重新装入并连续计数,输出信号就成为周期信号,周期为Tour=n×TN(或频率∫our= fw/n),即可作为分频器应用 表7.18253的6种工作方式 工作方式功能描述 GATE=0启动方式初值设置|说明 方式0计数到0输出高电平停止计数软件次有效(n+1)Tcuk负脉冲 方式 硬件可重触发单稳态 硬件 自动装入nTck负脉冲 方式2分频器 停止计数软硬件自动装入Tour= nX TcLK 方式3方波发生器 停止计数软硬件自动装入分频,占空比≈50% 方式4软件触发选通 停止计数软件 次有效计数到0负TcaK 方式5硬件触发选通 硬件 自动装入波形同方式4 注:软件启动是指当GATE=1时写入方式字和初值即启动:硬件启动是指写入方式字和初值后要由GATE上升沿启动 2.8253编程简要说明 8253的每个计数器必须在写入控制字和计数初值后才启动工作,一般的初始化编程 分为两步:先写入控制字、再写入计数初值。若要用到2个以上的计数器,则要对每个 计数器分别进行初始化。所有计数器的方式字都写入同一控制口地址,而各计数器的初 值则写入各自口地址(假设8253片选引脚CS连接的IO端子为280H,则IO基地址+0 对应计数器0地址、IO基地址+1对应计数器1地址、IO基地址+2对应计数器2地址

50 实验七 可编程定时/计数器与中断控制 一、 实验目的 1. 掌握微机中断处理系统的基本原理、学习中断服务程序的编写方法。 2. 掌握8253/8254定时/计数器的基本原理和编程方法。 二、 实验原理 本实验采用Intel8253作为计数器芯片,8254芯片是8253的兼容替代产品,计数速率 等性能优于8253。 1. 可编程定时/计数器8253功能简介 8253 含有三个独立的 16 位计数器,每个计数器连接外设的信号分别是: CLK ——输入的脉冲信号或外部事件,计数器对此脉冲进行减 1 计数; GATE ——启动/禁止计数的控制信号; OUT ——输出信号。 每个计数器可有六种工作方式,均可由程序设置和改变,8253 的几种工作方式及特 点如表 7.1 所示。若一个计数器被设定为方式 0,计数初值 n,在控制信号 GATE 为高时 即可对输入的脉冲作减 1 计数,OUT 维持低电平;计数到 0 时,则由 OUT 端输出一个 高电平信号。若一个计数器被设定为方式 2,输入为周期性脉冲信号,且计数初值可自 动重新装入并连续计数,输出信号就成为周期信号,周期为 TOUT = n×TIN(或频率 ƒOUT = ƒIN / n),即可作为分频器应用。 表 7.1 8253 的 6 种工作方式 工作方式 功能描述 GATE=0 启动方式 初值设置 说明 方式 0 计数到 0 输出高电平 停止计数 软件 一次有效 (n+1)TCLK负脉冲 方式 1 硬件可重触发单稳态 --- 硬件 自动装入 nTCLK负脉冲 方式 2 分频器 停止计数 软/硬件 自动装入 TOUT=n×TCLK 方式 3 方波发生器 停止计数 软/硬件 自动装入 分频,占空比≈50﹪ 方式 4 软件触发选通 停止计数 软件 一次有效 计数到 0 负 TCLK 方式 5 硬件触发选通 --- 硬件 自动装入 波形同方式 4 注:软件启动是指当 GATE=1 时写入方式字和初值即启动; 硬件启动是指写入方式字和初值后要由 GATE 上升沿启动。 2. 8253编程简要说明 8253 的每个计数器必须在写入控制字和计数初值后才启动工作,一般的初始化编程 分为两步:先写入控制字、再写入计数初值。若要用到 2 个以上的计数器,则要对每个 计数器分别进行初始化。所有计数器的方式字都写入同一控制口地址,而各计数器的初 值则写入各自口地址(假设 8253 片选引脚 CS 连接的 I/O 端子为 280H,则 IO 基地址+0 对应计数器 0 地址、IO 基地址+1 对应计数器 1 地址、IO 基地址+2 对应计数器 2 地址

IO基地址+3对应控制寄存器地址 8253控制字的格式 表7.28253控制字格式 SC1 SCORW1RWO M2 MI MO BCD 00:计数器000:计数器锁存000:方式00:2进制计数 01:计数器101:读写低字节001:方式11:BCD计数 10:计数器210:读写高字节x10:方式2 11:无效 11:先读写低8位x11:方式3 后读写高8位100:方式4 101:方式5 设置时应注意如下要点: ①设置8253的计数初值,1是计数初值的最小值,0是最大值。 ②采用二进制计数,8253的初值可以表示为十进制数、二进制数或十六进制数。当 初值小于256,只写低字节;当初值大于等于256,必须先写低字节后写高字节。 例1:n=50=32H=00110010B 可写入语句为: MOVAI,50或: MOVAI,32H或: MOVAI,00110010B OUT Port,AL OUT Port,AI OUT Port, AL 例2:n=10000=2710H必须先写低字节后写高字节。 可写入语句为: 或 MOVAX, 10000 OUT Port, AL oUr Port,AL;写低字节 MOV AL, AH IOV AL, 27H oUT Port, AI OUT Port,AL;写高字节 ③采用十进制BCD码计数,8253的初值应以十进制数0~9表示并在后面加上H。 (十进制数0~9的BCD码与十六进制数0~9在机器内的编码同为0000~1001。若不 加H,则计算机将把输入的十进制数转换为二进制数处理,而8253芯片按BCD码计数, 会造成错误。) 例3:设采用十进制BCD码初值n=50 可写入语句为: MoAL,50H;AL=(01010000)BCD=50 out Port, AL 3.微机系统的中断结构简要说明 微机系统的中断结构示意如图7.1:

51 IO 基地址+3 对应控制寄存器地址) 8253 控制字的格式: 表 7.2 8253 控制字格式 设置时应注意如下要点: ①设置 8253 的计数初值,1 是计数初值的最小值,0 是最大值。 ②采用二进制计数,8253 的初值可以表示为十进制数、二进制数或十六进制数。当 初值小于 256,只写低字节;当初值大于等于 256,必须先写低字节后写高字节。 例 1:n = 50 = 32H = 00110010B 例 2:n = 10000 = 2710H 必须先写低字节后写高字节。 ③采用十进制 BCD 码计数,8253 的初值应以十进制数 0~9 表示并在后面加上 H。 (十进制数 0~9 的 BCD 码与十六进制数 0~9 在机器内的编码同为 0000~1001。若不 加 H,则计算机将把输入的十进制数转换为二进制数处理,而 8253 芯片按 BCD 码计数, 会造成错误。) 例 3:设采用十进制 BCD 码初值 n = 50 3. 微机系统的中断结构简要说明 微机系统的中断结构示意如图 7.1:

D7.DO 80X86A0 AO D7DO RD R /NTA INT NT NTA RD WR AO D.DO cs8259(主片)cAsI CASI8259(从片)cs IGRT IR6 IRS IR4 IR3 IR2 IRI IRO CAS2 IRTIR6卫R5IR4IR3卫R2IRlR0 +Sy 图71微机系统的中断结构 在微机系统中,中断向量分配及8259初始化由操作系统统一进行,因此建议同学 们在实验中不再重新对微机系统中的8259A进行初始化(不再写入初始化命令字 ICw~lCW4),在中断服务程序的编程过程中对8259A的操作仅限于写入操作命令字 以及对IMR、ISR、IRR等寄存器的访问。 4.8259A的操作命令字及编程说明 8259A的操作命令字共有3个,OCW1~OCW3。 OCWl为写入中断屏蔽寄存器IMR(O地址为21H)的中断屏蔽字,当OCW1某 位(Mi)为1时相应的中断申请(IRi)被屏蔽、为0时所对应的中断申请被允许。OCW1 的格式如表73所示。 表7.30CW1格式 M7 M6 M5 M4 M3 M2 MI MO 操作命令字OCW2用于设置中断优先级方式和中断结束方式(写OCW2所采用的 IO地址为20H),OCW2的格式及功能含义如表74所示。 表7.40CW2格式 R SL EOI00L2LI LO 001:普通EOI方式OCW2标志 000:IR0 011:特殊EOI方式 001:IR1 101:自动循环普通EOI 010:IR2 111:自动循环特殊EOI 011: IR3 100:设置优先级自动循环命令 100:IR4 000:清除优先级自动循环命令 101: IR5 110:置位优先权命令 110:IR6 010:无操作 111: IR7 操作命令字OCW3用于设置或清除特殊屏蔽方式和读取寄存器的状态(写OCW3 所采用的IO地址为20H),OCW3的格式及功能含义如表75所示

52 图 7.1 微机系统的中断结构 在微机系统中,中断向量分配及 8259 初始化由操作系统统一进行,因此建议同学 们在实验中不再重新对微机系统中的 8259A 进行初始化(不再写入初始化命令字 ICW1~ICW4),在中断服务程序的编程过程中对 8259A 的操作仅限于写入操作命令字 以及对 IMR、ISR、IRR 等寄存器的访问。 4. 8259A的操作命令字及编程说明: 8259A 的操作命令字共有 3 个,OCW1~OCW3。 OCW1 为写入中断屏蔽寄存器 IMR(I/O 地址为 21H)的中断屏蔽字,当 OCW1 某 位(Mi)为 1 时相应的中断申请(IRi)被屏蔽、为 0 时所对应的中断申请被允许。OCW1 的格式如表 7.3 所示。 表 7.3 OCW1 格式 操作命令字 OCW2 用于设置中断优先级方式和中断结束方式(写 OCW2 所采用的 I/O 地址为 20H),OCW2 的格式及功能含义如表 7.4 所示。 表 7.4 OCW2 格式 操作命令字 OCW3 用于设置或清除特殊屏蔽方式和读取寄存器的状态(写 OCW3 所采用的 I/O 地址为 20H),OCW3 的格式及功能含义如表 7.5 所示

表7.50cW3格式 ESMM SMM0 1 P RR RIS 未定义0X:无效 OCW3标志 0X:无效 10:复位特殊屏蔽 10:读RR 11:读SR l:设置特殊屏蔽 查询状态寄存器 实验环境 TPC-H微机接口实验箱上配备有一片定时/计数器芯片8253,其通道0和通道1的 信号引脚CLKx、 GATEX、OUTx与芯片的片选信号引脚CS均已引出,实验箱上与此项 实验内容相关的信号或控制端子还包括:IMHz脉冲源、2MHz脉冲源、+5V(高电平) 接线端、中断申请输入端、微机上经地址译码后输出的ⅣO片选信号端以及逻辑笔端子 等,同学们可根据具体的实验内容确定其间的连接关系。 由于微机内部已将中断控制器(8259A)集成在控制芯片组中,微机接口实验箱上 不含有另外的中断控制器,因而实验中不允许对微机上的控制芯片组进行初始化操作, 若仅对与中断属性相关的内容进行设置(写入操作命令字OCW以及读IMR、IRR、ISR 状态等),对于主片8259A可访问的O端口地址分别为20H和21H(例如中断屏蔽字 的地址是21H、设置优先级循环方式和中断结束方式操作命令字的地址是20H)。从片 8259A的对应端口地址是AOH和AlH 表76IRQ与中断向量对应关系 RQ值 中断 功能 Master Slave 向量 系统时钟 键盘 级连到从8259 实时时钟 9 从定向到IRQ 系统可用 73 系统可用 鼠标或系统可用 数字协处理器 14 76 硬盘控制器 15 77 系统可用 OB 串行通讯 行通讯 并行口

53 表 7.5 OCW3 格式 三、 实验环境 TPC-H 微机接口实验箱上配备有一片定时/计数器芯片 8253,其通道 0 和通道 1 的 信号引脚 CLKx、GATEx、OUTx 与芯片的片选信号引脚 CS 均已引出,实验箱上与此项 实验内容相关的信号或控制端子还包括:1MHz 脉冲源、2 MHz 脉冲源、+5V(高电平) 接线端、中断申请输入端、微机上经地址译码后输出的 I/O 片选信号端以及逻辑笔端子 等,同学们可根据具体的实验内容确定其间的连接关系。 由于微机内部已将中断控制器(8259A)集成在控制芯片组中,微机接口实验箱上 不含有另外的中断控制器,因而实验中不允许对微机上的控制芯片组进行初始化操作, 若仅对与中断属性相关的内容进行设置(写入操作命令字 OCW 以及读 IMR、IRR、ISR 状态等),对于主片 8259A 可访问的 I/O 端口地址分别为 20H 和 21H(例如中断屏蔽字 的地址是 21H、设置优先级循环方式和中断结束方式操作命令字的地址是 20H)。从片 8259A 的对应端口地址是 A0H 和 A1H。 表 7.6 IRQ 与中断向量对应关系 IRQ 值 Master Slave 中断 向量 功能 0 08 系统时钟 1 09 键盘 2 0A 级连到从 8259 8 70 实时时钟 9 71 从定向到 IRQ2 10 72 系统可用 11 73 系统可用 12 74 鼠标或系统可用 13 75 数字协处理器 14 76 硬盘控制器 15 77 系统可用 3 0B 串行通讯 4 0C 串行通讯 5 0D 并行口

6 磁盘控制器 并行口 我们实验所使用的IRQ资源在系统启动时被BOS设置,通过读取配置空间可以得 到IRQ的值,系统中IRQ值与中断向量的对应关系参考表76在实验中还要对PC9o52 芯片的中断逻辑进行设置,相关的寄存器是PC9052的中断状态寄存器,偏移地址为4CH 和4DH(低8位与高8位),参考表7.7 表77PCI9052中断状态与控制寄存器 进制位含义 缺省值 LINT1有效(1为有效,0为禁止) LINTI极性(1为高电平有效,0为低电平有效 LINT1状态(1表示有中断,0表示没有中断) 23456 LINT2有效(1为有效,0为禁止) LINT2极性(1为高电平有效,0为低电平有效) LⅠNT2状态(1表示有中断,0表示没有中断) PCI中断控制(1允许中断,0禁止中断) 01000010 「软中断控制(1触发一次PC中断) LINT1边沿触发/电平触发(1为边沿触发,极性必须为1)1 LN2边沿触发电平触发(1为边沿触发,极性必须为1)0 10 LINT1边沿触发中断状态清除(写入1为清除) LINI2边沿触发中断状态清除(写入1为清除) PCI9052是否工作在ISA状态(必须为1) 13~15 保留 我们的硬件只使用了 LINTI。当要使用中断功能的时候,先要设置第0位为1,每 次发生中断后,要设置第10位为1以清除中断。另外,编写中断服务程序还要先设置 中断向量、开放IRQ中断;每次中断处理结束后应发出EO1中断结束命令将中断服务寄 存器ISR相应位清0,不再响应该中断源时应置中断屏蔽寄存器而关闭IRQ中断。 以下给出部分编程示例 读取ISR内容的程序段为 MOV AL,00001011B;写入OCW3 OUT 20H. AL IN AL. 20H 读取IRR内容的程序段为 MOV AL,00001010B;写入OCW OUT 20H. AL IN AL. 20H 读取中断状态的程序段为 MoAL,00001100B;写入OCW OUT 20H. AL N AL, 20H 读中断状态

54 6 0E 磁盘控制器 7 0F 并行口 我们实验所使用的 IRQ 资源在系统启动时被 BIOS 设置,通过读取配置空间可以得 到 IRQ 的值,系统中 IRQ 值与中断向量的对应关系参考表 7.6。在实验中还要对 PCI9052 芯片的中断逻辑进行设置,相关的寄存器是PCI9052的中断状态寄存器,偏移地址为4CH 和 4DH(低 8 位与高 8 位),参考表 7.7。 表 7.7 PCI9052 中断状态与控制寄存器 二进制位 含义 缺省值 0 LINT1 有效(1 为有效,0 为禁止) 0 1 LINT1 极性(1 为高电平有效,0 为低电平有效) 1 2 LINT1 状态(1 表示有中断,0 表示没有中断) 0 3 LINT2 有效(1 为有效,0 为禁止) 0 4 LINT2 极性(1 为高电平有效,0 为低电平有效) 0 5 LINT2 状态(1 表示有中断,0 表示没有中断) 0 6 PCI 中断控制(1 允许中断,0 禁止中断) 1 7 软中断控制(1 触发一次 PCI 中断) 0 8 LINT1 边沿触发/电平触发(1 为边沿触发,极性必须为 1) 1 9 LINT2 边沿触发/电平触发(1 为边沿触发,极性必须为 1) 0 10 LINT1 边沿触发中断状态清除(写入 1 为清除) 0 11 LINT2 边沿触发中断状态清除(写入 1 为清除) 0 12 PCI9052 是否工作在 ISA 状态(必须为 1) 1 13~15 保留 我们的硬件只使用了 LINT1。当要使用中断功能的时候,先要设置第 0 位为 1,每 次发生中断后,要设置第 10 位为 1 以清除中断。另外,编写中断服务程序还要先设置 中断向量、开放 IRQ 中断; 每次中断处理结束后应发出 EOI 中断结束命令将中断服务寄 存器 ISR 相应位清 0,不再响应该中断源时应置中断屏蔽寄存器而关闭 IRQ 中断。 以下给出部分编程示例。 读取 ISR 内容的程序段为: MOV AL,00001011B ;写入 OCW3 OUT 20H,AL IN AL,20H ;读 ISR 读取 IRR 内容的程序段为: MOV AL,00001010B ;写入 OCW3 OUT 20H,AL IN AL,20H ;读 IRR 读取中断状态的程序段为: MOV AL,00001100B ;写入 OCW3 OUT 20H,AL IN AL,20H ;读中断状态

设置中断向量的方法是: MOV AX. CS MOV DS. AX DS、DX分别是中断处理程序INT7的段地址和偏移量 MOV DX OFFSET INT7 MOV AX. 250FH AH=25H,是置中断向量的功能调用号 INT 21H AL=0FH,是中断向量值 开放IRQ中断的语句是 IN AL. 21H AND AL. 7FH 对中断屏蔽寄存器置D7=0,开放IRQ7中断 OUT 2IH AL 用与指令可以不破坏除D7外其它位的设置 本题送中断结束EOI的指令是 MOV AL, 20H E0I=2OH表示以普通结束方式结束中断 OUT 20H. AL 此外,微机内部也配备有一片8253,其通道0用于系统实时钟定时、通道1用于 DRAM刷新、通道2的输出端与扬声器相连,因此微机上8253的通道2可在实验中做 辅助应用,微机上8253的ⅣO端口地址为40H~43H 四、实验内容 8253通道0工作在方式0(脉冲计数产生中断),由按键产生单脉冲接入CLK0、令 计数初值为OFH手动逐个输入单脉冲编程在计算机屏幕上显示计数值,并用逻辑笔观察 OUT0的状态,键盘有键按下时返回DOS。 逻辑笔 CLK0←单脉冲 280-287HCS GATEok+-+5 图728253接线示意图 参考程序: CODE SEGMENT aSSUME CS: CODE START MOV AL, 10H 设置8253通道0为工作方式0,二进制计数 MOV DX. 283H 8253控制寄存器 OUT DX. AL MOV DX. 280H 送计数初值为0FH MOV AL. OFH OUT DX. AL 读计数初值 CALL DISP 调显示子程序 MOV AH. 1 INT 16H

55 设置中断向量的方法是: MOV AX,CS MOV DS,AX ; DS、DX 分别是中断处理程序 INT7 的段地址和偏移量 MOV DX,OFFSET INT7 MOV AX,250FH ; AH=25H,是置中断向量的功能调用号 INT 21H ; AL=0FH,是中断向量值 开放 IRQ 中断的语句是: IN AL,21H AND AL,7FH ; 对中断屏蔽寄存器置 D7=0,开放 IRQ7 中断 OUT 21H,AL ; 用与指令可以不破坏除 D7 外其它位的设置 本题送中断结束 EOI 的指令是: MOV AL,20H ; EOI=20H 表示以普通结束方式结束中断 OUT 20H,AL 此外,微机内部也配备有一片 8253,其通道 0 用于系统实时钟定时、通道 1 用于 DRAM 刷新、通道 2 的输出端与扬声器相连,因此微机上 8253 的通道 2 可在实验中做 辅助应用,微机上 8253 的 I/O 端口地址为 40H~43H。 四、 实验内容 8253 通道 0 工作在方式 0(脉冲计数产生中断),由按键产生单脉冲接入 CLK0、令 计数初值为 0FH,手动逐个输入单脉冲,编程在计算机屏幕上显示计数值,并用逻辑笔观察 OUT0 的状态,键盘有键按下时返回 DOS。 图 7.2 8253 接线示意图 参考程序: CODE SEGMENT ASSUME CS:CODE START: MOV AL,10H ; 设置8253通道0为工作方式0, 二进制计数 MOV DX,283H ; 写8253控制寄存器 OUT DX,AL MOV DX,280H ; 送计数初值为0FH MOV AL,0FH OUT DX,AL NNN: IN AL,DX ; 读计数初值 CALL DISP ; 调显示子程序 MOV AH,1 INT 16H CLK0 /CS OUT0 GATE0 单脉冲 +5V 逻辑笔 280-287H

JZ NNN MOV AH. 4CH ;退出(返回D0S) INT 21H DISP PROC NEAR 显示子程序 PUSH DX AND AL. OFH 首先取低四位 MOV DL. A =9 JLE NUM 若是则为’0-93,ASCI码加3OH ADD DL. 7 否则为A-F,ASCI码加37H NUM: ADD DL, 30H MOV AH. 02H 显示 MOV DL, ODH 加回车符 NT 21H MOV DL, OAH 加换行符 INT 21H POP DX 子程序返回 DISP ENDP CODE ENDS END START 1.令8253作为分频器(级连通道0和通道1,且均为工作方式3),CLK0输入2MHz、OUT1 输出1Hz,计算计数初值、设计实验箱的连线和编写程序,用逻辑笔观察OUT1的状态 2.实验台上单脉冲输出端连接总线的IRQ,以手动产生单个中断请求信号,每次中断在 屏幕上显示一次“ THIS IS AN IRQ7 INTERRUPT!”、中断10次后返回到D0S 参考程序 DATA SEGMENT MESS DB THIS IS AN IRQ INTERRUPT!, OAH, ODH, S DATA ENDS CODE SEGMENT ASSUME CS: CODE. DS: DATA START: MOV AX. CS MOV DS, AX MOV DX, OFFSET IRQ;DS中断服务程序段地址、DX为偏移量 ;AH=25H置中断向量 INT 21H CLI MOV DX. OEC4CH PCI9052中断状态、控制寄存器地址低位 MOV AL, 43H 最低为1,开中断 OUT DX. AL INC DX PCI9052中断状态、控制寄存器地址高位 MOV AL. lDH 清除可能的中断状态 OUT DX. AL IN AL. 21H AND AL,10111111 D6=0、开放IRQ6中断

56 JZ NNN MOV AH,4CH ; 退出(返回DOS) INT 21H DISP PROC NEAR ; 显示子程序 PUSH DX AND AL,0FH ; 首先取低四位 MOV DL,AL CMP DL,9 ; 判断是否<=9 JLE NUM ; 若是则为'0'-'9',ASCII码加30H ADD DL,7 ; 否则为'A'-'F',ASCII码加37H NUM: ADD DL,30H MOV AH,02H ; 显示 INT 21H MOV DL,0DH ; 加回车符 INT 21H MOV DL,0AH ; 加换行符 INT 21H POP DX RET ; 子程序返回 DISP ENDP CODE ENDS END START 1. 令8253作为分频器(级连通道0和通道1,且均为工作方式3), CLK0输入2MHz、OUT1 输出1Hz,计算计数初值、设计实验箱的连线和编写程序,用逻辑笔观察OUT1的状态。 2. 实验台上单脉冲输出端连接总线的IRQ,以手动产生单个中断请求信号,每次中断在 屏幕上显示一次“THIS IS AN IRQ7 INTERRUPT!”、中断10次后返回到DOS。 参考程序: DATA SEGMENT MESS DB 'THIS IS AN IRQ INTERRUPT!', 0AH, 0DH, '$' DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, CS MOV DS, AX MOV DX, OFFSET IRQ ; DS 中断服务程序段地址、DX 为偏移量 MOV AX, 250EH ; AH=25H 置中断向量 INT 21H CLI MOV DX, 0EC4CH ; PCI9052 中断状态、控制寄存器地址低位 MOV AL, 43H ; 最低为 1,开中断 OUT DX, AL INC DX ; PCI9052 中断状态、控制寄存器地址高位 MOV AL, 1DH ; 清除可能的中断状态 OUT DX, AL IN AL, 21H AND AL, 10111111B ; D6=0、开放 IRQ6 中断

OUT 21H. AL MOV AX. DATA MOV DS, AX MOV CX. 10 设置中断循环次数 STI NEXT: MOV BH. 1 CMP BH. 0 进入中断服务程序的标志 JNE LL CALL DISPMSG LOOP NEXT IN AL. 21H OR AL, 40H 关闭IRQ6中断 OUT 21H, AL MOV DX. OEC4CH MOV AL. 42H OUT DX. AL 关闭PCI9052中断 MOV AH. 4CH INT 21H DISPMSG PROC MOV DX. OFFSET MESS MOV AH. 09 INT 21H DISPMSG ENDP IRQ PROC FA PUSH AX PUSH DX MOV BH. 0 MOV AL, 20H OUT 20H AL MOⅴDx,OEC4DH MOV AL, lDH OUT DX. AL 清除PCI9052的中断标志 POP DX IRET ENDP CODE ENDS END START 驱动微机扬声器发声 (1)用实验台上的8253作为定时器时钟源使其每秒产生一个脉冲连至总线的IRQ作 为中断请求信号 (2)由于微机内部也配备了一片8253,其GATE2由微机内部所配备的8255A芯片的 PB0控制、CLK2的输入时钟频率为1.19MHz、OUT2输出和8255A芯片的PBl 相“与”后经过驱动连接到了微机的扬声器上,试利用这一资源编程设置微机8253 使其通道2输出1KHz的音频信号,在中断发生时驱动扬声器发声

57 OUT 21H, AL MOV AX, DATA MOV DS, AX MOV CX, 10 ; 设置中断循环次数 STI NEXT: MOV BH, 1 LL: CMP BH, 0 ; 进入中断服务程序的标志 JNE LL CALL DISPMSG LOOP NEXT IN AL, 21H OR AL, 40H ; 关闭 IRQ6 中断 OUT 21H, AL MOV DX, 0EC4CH MOV AL, 42H OUT DX, AL ; 关闭 PCI 9052 中断 STI MOV AH, 4CH INT 21H DISPMSG PROC MOV DX, OFFSET MESS MOV AH, 09 INT 21H RET DISPMSG ENDP IRQ PROC FAR PUSH AX PUSH DX MOV BH, 0 MOV AL, 20H OUT 20H, AL MOV DX, 0EC4DH MOV AL, 1DH OUT DX, AL ; 清除 PCI 9052 的中断标志 POP DX POP AX IRET IRQ ENDP CODE ENDS END START 3. 驱动微机扬声器发声 (1) 用实验台上的 8253 作为定时器时钟源,使其每秒产生一个脉冲连至总线的 IRQ 作 为中断请求信号; (2) 由于微机内部也配备了一片 8253,其 GATE2 由微机内部所配备的 8255A 芯片的 PB0 控制、CLK2 的输入时钟频率为 1.19MHz、OUT2 输出和 8255A 芯片的 PB1 相“与”后经过驱动连接到了微机的扬声器上,试利用这一资源,编程设置微机 8253 使其通道 2 输出 1KHz 的音频信号,在中断发生时驱动扬声器发声;

(3)在此给出一个每秒产生一次中断并驱动扬声器发声的参考程序按任意键退出 (4)将上述内容扩展,编程在微机显示屏上显示一个具有时、分、秒的程序并使程序 能够在每分钟鸣响一次、按任意键程序返回DOS。 微机内部8253通道2的硬件相关逻辑如下图所示 8255A D7,D0 D7.D0 PB GATE2 GATEO OUT2 80x86 CLKO 1.19Hz CLKI CLK2 INTR INT 8259A INTA 图73微机内部8253通道2的硬件相关逻辑 扬声器发声参考子程序(调用时以BL中的数值决定发声时间的长短) (微机8253的端口地址为40H-43H、微机8255A的端口地址为60H-63H) BEEP PROC NEAR PUSH CX MOV AL,10110110B 微机8253计数器2方式3,16位二进制计数 OUT 43H AL 微机8253端口地址为40H43H MOV AX. 119 计数初值1.19MHZ/1KHZ=1190 OUT 42H. AL 先写计数器2低字节 MOV AL, AH OUT 42H. AL 再写计数器2高字节 IN AL. 61H 读微机8255APB口 MOV AH. AL 将微机8255B口数据暂存 OR AL, 03H 使微机8255PB口PB1(相与OUT2)、PB0(GATE2)均为1 OUT 61H. AL 打开GATE2、使OUT2输出至扬声器 MOV CX. 0 CX循环计数为最大值2^16 LOOP LO DEC BL JNZ LO MOV AL AH 恢复微机8255A的PB口原值,停止发声 OUT 61H. AL POP CX BEEP ENDP 五、思考题 1.在什么情况下需要用到8253的锁存命令? 2.在实验内容1或内容3中,若将采用单脉冲触发计数(或触发中断)改为直接由实验

58 (3) 在此给出一个每秒产生一次中断并驱动扬声器发声的参考程序,按任意键退出; (4) 将上述内容扩展, 编程在微机显示屏上显示一个具有时、分、秒的程序,并使程序 能够在每分钟鸣响一次、按任意键程序返回 DOS。 微机内部 8253 通道 2 的硬件相关逻辑如下图所示 图 7.3 微机内部 8253 通道 2 的硬件相关逻辑 扬声器发声参考子程序(调用时以 BL 中的数值决定发声时间的长短): (微机 8253 的端口地址为 40H~43H、微机 8255A 的端口地址为 60H~63H) BEEP PROC NEAR PUSH CX MOV AL,10110110B ;微机8253计数器2方式3,16位二进制计数 OUT 43H,AL ;微机8253端口地址为40H~43H MOV AX,1190 ;计数初值1.19MHZ/1KHZ=1190 OUT 42H,AL ;先写计数器2低字节 MOV AL,AH OUT 42H,AL ;再写计数器2高字节 IN AL,61H ;读微机8255A PB口 MOV AH,AL ;将微机8255B口数据暂存 OR AL,03H ;使微机8255 PB口PB1(相与OUT2)、PB0(GATE2)均为1 OUT 61H,AL ;打开GATE2、使OUT2输出至扬声器 MOV CX,0 ;CX循环计数为最大值2^16 L0: LOOP L0 DEC BL JNZ L0 MOV AL,AH ;恢复微机8255A的 PB口原值,停止发声 OUT 61H,AL POP CX RET BEEP ENDP 五、 思考题 1. 在什么情况下需要用到8253的锁存命令? 2. 在实验内容1或内容3中,若将采用单脉冲触发计数(或触发中断)改为直接由实验

板上的开关(如K7)触发计数(或触发中断),可否?为什么? 3.在含有中断服务的编程中,假定某些任务既可被安排在主程序中执行,亦可被安排 在中断服务程序中执行,你认为应当怎样来进行安排?为什么? 六、实验报告附加要求 1.画出实验内容4的程序流程图。 2.概要总结中断服务程序的编写要点

59 板上的开关(如K7)触发计数(或触发中断),可否?为什么? 3. 在含有中断服务的编程中,假定某些任务既可被安排在主程序中执行,亦可被安排 在中断服务程序中执行,你认为应当怎样来进行安排?为什么? 六、 实验报告附加要求 1.画出实验内容 4 的程序流程图。 2.概要总结中断服务程序的编写要点

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有