8253定时器实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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.18253的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地址、51IO基地址+3对应控制寄存器地址)8253控制字的格式:表7.28253控制字格式设置时应注意如下要点:①设置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=503.微机系统的中断结构简要说明微机系统的中断结构示意如图7.1: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.3OCW1格式操作命令字OCW2用于设置中断优先级方式和中断结束方式(写OCW2所采用的I/O地址为20H),OCW2的格式及功能含义如表7.4所示。表7.4OCW2格式操作命令字OCW3用于设置或清除特殊屏蔽方式和读取寄存器的状态(写OCW3所采用的I/O地址为20H),OCW3的格式及功能含义如表7.5所示。53表7.5OCW3格式三、实验环境TPC-H微机接口实验箱上配备有一片定时/计数器芯片8253,其通道0和通道1的信号引脚CLKx、GATEx、OUTx与芯片的片选信号引脚CS均已引出,实验箱上与此项实验内容相关的信号或控制端子还包括:1MHz脉冲源、2MHz脉冲源、+5V(高电平)接线端、中断申请输入端、微机上经地址译码后输出的I/O片选信号端以及逻辑笔端子等,同学们可根据具体的实验内容确定其间的连接关系。由于微机内部已将中断控制器(8259A)集成在控制芯片组中,微机接口实验箱上不含有另外的中断控制器,因而实验中不允许对微机上的控制芯片组进行初始化操作,若仅对与中断属性相关的内容进行设置(写入操作命令字OCW以及读IMR、IRR、ISR状态等),对于主片8259A可访问的I/O端口地址分别为20H和21H(例如中断屏蔽字的地址是21H、设置优先级循环方式和中断结束方式操作命令字的地址是20H)。从片8259A的对应端口地址是A0H和A1H。表7.6IRQ与中断向量对应关系IRQ值MasterSlave中断向量功能008系统时钟109键盘20A级连到从8259870实时时钟971从定向到IRQ21072系统可用1173系统可用1274鼠标或系统可用1375数字协处理器1476硬盘控制器1577系统可用30B串行通讯40C串行通讯50D并行口5460E磁盘控制器70F并行口我们实验所使用的IRQ资源在系统启动时被BIOS设置,通过读取配置空间可以得到IRQ的值,系统中IRQ值与中断向量的对应关系参考表7.6。在实验中还要对PCI9052芯片的中断逻辑进行设置,相关的寄存器是PCI9052的中断状态寄存器,偏移地址为4CH和4DH(低8位与高8位),参考表7.7。表7.7PCI9052中断状态与控制寄存器二进制位含义缺省值0LINT1有效(1为有效,0为禁止)01LINT1极性(1为高电平有效,0为低电平有效)12LINT1状态(1表示有中断,0表示没有中断)03LINT2有效(1为有效,0为禁止)04LINT2极性(1为高电平有效,0为低电平有效)05LINT2状态(1表示有中断,0表示没有中断)06PCI中断控制(1允许中断,0禁止中断)17软中断控制(1触发一次PCI中断)08LINT1边沿触发/电平触发(1为边沿触发,极性必须为1)19LINT2边沿触发/电平触发(1为边沿触发,极性必须为1)010LINT1边沿触发中断状态清除(写入1为清除)011LINT2边沿触发中断状态清除(写入1为清除)012PCI9052是否工作在ISA状态(必须为1)113~15保留我们的硬件只使用了LINT1。当要使用中断功能的时候,先要设置第0位为1,每次发生中断后,要设置第10位为1以清除中断。另外,编写中断服务程序还要先设置中断向量、开放IRQ中断;每次中断处理结束后应发出EOI中断结束命令将中断服务寄存器ISR相应位清0,不再响应该中断源时应置中断屏蔽寄存器而关闭IRQ中断。以下给出部分编程示例。读取ISR内容的程序段为:MOVAL,00001011B;写入OCW3OUT20H,ALINAL,20H;读ISR读取IRR内容的程序段为:MOVAL,00001010B;写入OCW3OUT20H,ALINAL,20H;读IRR读取中断状态的程序段为:MOVAL,00001100B;写入OCW3OUT20H,ALINAL,20H;读中断状态55设置中断向量的方法是:MOVAX,CSMOVDS,AX;DS、DX分别是中断处理程序INT7的段地址和偏移量MOVDX,OFFSETINT7MOVAX,250FH;AH=25H,是置中断向量的功能调用号INT21H;AL=0FH,是中断向量值开放IRQ中断的语句是:INAL,21HANDAL,7FH;对中断屏蔽寄存器置D7=0,开放IRQ7中断OUT21H,AL;用与指令可以不破坏除D7外其它位的设置本题送中断结束EOI的指令是:MOVAL,20H;EOI=20H表示以普通结束方式结束中断OUT20H,AL此外,微机内部也配备有一片8253,其通道0用于系统实时钟定时、通道1用于DRAM刷新、通道2的输出端与扬声器相连,因此微机上8253的通道2可在实验中做辅助应用,微机上8253的I/O端口地址为40H~43H。四、实验内容8253通道0工作在方式0(脉冲计数产生中断),由按键产生单脉冲接入CLK0、令计数初值为0FH,手动逐个输入单脉冲,编程在计算机屏幕上显示计数值,并用逻辑笔观察OUT0的状态,键盘有键按下时返回DOS。图7.28253接线示意图参考程序:CODESEGMENTASSUMECS:CODESTART:MOVAL,10H;设置8253通道0为工作方式0,二进制计数MOVDX,283H;写8253控制寄存器OUTDX,ALMOVDX,280H;送计数初值为0FHMOVAL,0FHOUTDX,ALNNN:INAL,DX;读计数初值CALLDISP;调显示子程序MOVAH,1INT16HCLK0/CSOUT0GATE0单脉冲+5V逻辑笔280-287H56JZNNNMOVAH,4CH;退出(返回DOS)INT21HDISPPROCNEAR;显示子程序PUSHDXANDAL,0FH;首先取低四位MOVDL,ALCMPDL,9;判断是否=9JLENUM;若是则为'0'-'9',ASCII码加30HADDDL,7;否则为'A'-'F',ASCII码加37HNUM:ADDDL,30HMOVAH,02H;显示INT21HMOVDL,0DH;加回车符INT21HMOVDL,0AH;加换行符INT21HPOPDXRET;子程序返回DISPENDPCODEENDSENDSTART1.令8253作为分频器(级连通道0和通道1,且均为工作方式3),CLK0输入2MHz、OUT1输出1Hz,计算计数初值、设计实验箱的连线和编写程序,用逻辑笔观察OUT1的状态。2.实验台上单脉冲输出端连接总线的IRQ,以手动产生单个中断请求信号,每次中断在屏幕上显示一次“THISISANIRQ7INTERRUPT!”、中断10次后返回到DOS。参考程序:DATASEGMENTMESSDB'THISISANIRQINTERRUPT!',0AH,0DH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,CSMOVDS,AXMOVDX,OFFSETIRQ;DS中断服务程序段地址、DX为偏移量MOVAX,250EH;AH=25H置中断向量INT21HCLIMOVDX,0EC4CH;PCI9052中断状态、控制寄存器地址低位MOVAL,43H;昀低为1,开中断OUTDX,ALINCDX;PCI9052中断状态、控制寄存器地址高位MOVAL,1DH;清除可能的中断状态OUTDX,ALINAL,21HANDAL,10111111B;D6=0、开放IRQ6中断57OUT21H,ALMOVAX,DATAMOVDS,AXMOVCX,10;设置中断循环次数STINEXT:MOVBH,1LL:CMPBH,0;进入中断服务程序的标志JNELLCALLDISPMSGLOOPNEXTINAL,21HORAL,40H;关闭IRQ6中断OUT21H,ALMOVDX,0EC4CHMOVAL,42HOUTDX,AL;关闭PCI9052中断STIMOVAH,4CHINT21HDISPMSGPROCMOVDX,OFFSETMESSMOVAH,09INT21HRETDISPMSGENDPIRQPROCFARPUSHAXPUSHDXMOVBH,0MOVAL

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功