您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 用8253和8259实现电子表
预习报告一、实验目的1.学习8253编程定时/计数器的工作方式。2.掌握中断控制器8259A与微处理机接口的原理和方法。3..掌握中断控制器8259A的应用编程。二、预习内容(一)实验中应用的芯片的结构、引脚、工作原理及工作方式。(1)8253芯片。8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。六种方式分别是:1)方式0:计数结束则中断;2)方式1:单脉冲发生器;3)方式2:速率波发生器;4)方式3:方波发生器;5)方式4:软件触发方式计数;6)方式5:硬件触发方式计数。图1,8253结构图图2,8253引脚图8253引脚图如图1-2示,各引脚功能如下。D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器地址输入信号;CLK——计数输入,用于输入定时基准脉冲或计数脉冲;OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。(2)8259芯片。一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。但CPU这时可能正在执行一条指令,因此CPU不会立即响应。而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。8259A有多种工作方式,可以通过编程来设置。具体有1)设置优先级的方式a)全嵌套方式b)特殊全嵌套方式c)优先级自动循环方式d)优先级特殊循环方式2)屏蔽中断源的方式a)普通屏蔽方式只允许优先级高的中断源申请中断,不允许与该级同级或低级的中断源申请中断。b)特殊屏蔽方式CPU正在处理某一级中断时,只可对本级中断进行屏蔽,允许高级或低级中断源申请中断。3)引入中断请求的方式a)边沿触发方式b)电平触发方式c)中断查询方式图3,8259结构图图4,8259引脚图8259引脚图如图3.3,各引脚功能如下。D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0——地址信号;INT——中断请求信号;INTA(低电平有效)——中断响应信号;CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;SP/EN——从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;IR0~IR7——外部中断请求输入线。要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。(二)硬件系统设计本实验要使用的8253芯片的四个端口地址为48H,49H,4AH,4BH,采用8253的通道2,令其工作在方式3模式下。本实验使用的8259芯片的端口地址为20H,21H,并利用8253的OUT2作为8259的输入脉冲。实验中采用3号中断源,把IRQ3和8253的OUT2相连接。(三)软件系统设计本程序主要分为6个模块。用模块FORMAT来初始化数码管的显示;模块TINT1用来写入8253芯片和8259A芯片的各项命令字;模块WRINTVER用来获得中断的入口地址;用模块INTERUPT3来记录1/20秒定时中断的次数,来实现每个一秒更新一下数码管显示内容;用INTERUPT7模块来处理异常中断;利用NEWTIME模块按照计数来实现数码管相应数字的在内存中值得更新。(四)实验仪器设备:PC机一台、windowsXP系统、实验箱、导线若干。8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。8259中断控制器:用于产生中断。LED:六个LED用于显示时:分:秒值。三、实施方案(1)硬件系统实现:根据实验内容完成实验的硬件方案的实现,要求画出的详细的电路原理图如下:图5,原理连线图VCC1MHzD0CLK1D1GATE1D2OUT1D3D4OUT2D5GATE2D6CLK2D7A0A1GATE0RDCLK0WRCSOUT08253IR0D0IR1D1IR2D2IR3D3IR4D4IR5D5IR6D6IR7D7A0WRRDCSINTINTACAS2CAS1CAS0SP/EN8259(2)软件系统实现软件方案的程序流程图如下::图6,主程序流程图图7,中断服务程序流程图关中断显示时间发中断结束命令中断返回时间缓冲区的时间加1开中断设计数初值填8259中断向量表开中断等待中断置8253工作方式控制字8259初始化开始始用8253和8259实现电子秒表一、实验目的1.学习8253编程定时/计数器的工作方式。2.掌握中断控制器8259A与微处理机接口的原理和方法。3.掌握中断控制器8259A的应用编程。二、实验原理利用8253的定时器功能。8253的四个端口地址为48H,49H,4AH,4BH,本实验采用8253的通道2,工作在方式3(方波发生器方式)输入CLK2为1KHZ。输出OUT2作为8259的断请求信号。8259有两个口地址,本实验为20H和21H,其中20H用来写ICW1,21H用来写ICW2、ICW4,本实验中8259为单片,边沿触发,中断类型号的起始值是8,采用3号中断源,即IRQ3和8253输出口OUT2相连,每过1秒接收到一个中断,向8259发出中断请求信号,CPU响应后,在中断处理程序中,把时间缓冲区中的时间加1,并将其输入到显示缓冲区,以便显示器显示更新后的时间。三、实验线路连接实验连线如下图所示:1.8253A芯片的CLK2引出插孔连分频输出插孔1KHZ。2.8253A的GATE2插孔和电源相连。3.8259A的IRQ3插孔和8253A的OUT2插孔相连。四、实验步骤1.连接好实验线路。2.运行程序,实验仪显示器上显示一电子秒表。五、实验记录在实验中,因为8253A的GATE2插孔未和5v电源相连导致电子表计时数值不变。虽然是常识,但很容易被忽略。当8253A的GATE2插孔未和5v电源相连之时,电子表正常计数。,图8,实验连线图六、软件清单CODESEGMENTASSUMECS:CODEINTPORT1EQU0020H;8259口地址1INTPORT2EQU0021H;8259口地址2INTQ3EQUINTERUPT3;中断程序的入口地址INTQ7EQUINTERUPT7;中断程序的入口地址CONTPORTEQU00DFH;8279命令状态口地址DATAPORTEQU00DEH;8279键盘显示数据口地址DATA1EQU0500H;错误信息显示缓冲区起始地址DATA2EQU0508H;显示译码表起始地址DATA3EQU0518H;初始状态显示缓冲区DATA4EQU0520H;时间显示缓冲区起始地址DATA5EQU0528H;存放已重新刷新数码管个数DATA6EQU0529H;存放1/20秒定时中断次数DATA7EQU052AH;时DATA8EQU052BH;分DATA9EQU052CH;秒DATA10EQU052EH;等更新的显示区内的地址ORG1800H;把代码放到ORG指定内存空间START:JMPTINT1TINT1:CALLFORMATCLD;清除方向标志MOVDX,004BH;设置8253工作方式MOVAL,0B6HOUTDX,ALMOVDX,004AH;写8253的时间常数MOVAL,50HOUTDX,ALMOVAL,0C3HOUTDX,ALMOVSI,DATA3CALLLEDDISP;显示00-00-00MOVAX,0HMOVDS,AX;设置数据段为0HCALLWRINTVER;更改中断向量地址MOVAL,13H;设置ICW1初始化命令字MOVDX,INTPORT1;设置8259A的偶地址端口OUTDX,AL;将ICW1输出到偶地址端口MOVAL,08H;设置ICW2中断类型号基值MOVDX,INTPORT2OUTDX,ALMOVAL,0BHOUTDX,ALMOVAL,0F7HOUTDX,ALWAITING:ST;设置中断标志为1,IF=1,允许CPU响应外设的中断请求JMPWAITINGWRINTVER:MOVAX,0HMOVES,AX;这时:ES为0H,这是中断向量的开始地址MOVDI,002CH;DI是002CH,ES:DI组成的地址是002CH,这是我们要更改的中断向量地址LEAAX,INTQ3;将中断过程的入口地址INTERUPT3(偏移地址IP)放到AX中;INTQ3是外部中断IRQ3产生时调用的STOSW;改变中断向量的入口地址,AX-ES:DI,也就是将AX的值放到002CH中MOVAX,CS;送段地址(CS)到AXSTOSW;保存段地址,来到这里中断向量的入口地址为CS:IP,它是由CS和IP组成的MOVDI,003CH;设置下一个中断向量的入口地址LEAAX,INTQ7;将中断过程的入口地址INTERUPT7(偏移地址IP)放到AX中;INTQ7是电平信号不符合要求时的中断例程STOSWMOVAX,CS;送段地址(CS)到AXSTOSWRETINTERUPT3:CLI;清除中断允许MOVAL,DS:[DATA6];读入现在存放1/20秒定时中断次数INCAL;计数值加1MOVDS:[DATA6],AL;写回到DS:[DATA6]CMPAL,14H;比较,是否已经中断了20次了(14H即是十进制的20),CMP只会修改标志位;两数相等时,CF=0,否则CF=1JCPLAY;标志位CF=1,就跳到PLAY处执行MOVBYTEPTRDS:[DATA6],00H;清除计数,置为0,重新开始计数MOVSI,DATA4;CALLLEDDISPCALLNEWTIMECALLCONVERSALLPLAY:MOVAL,20H;定义OCW2,普通EOI结束方式MOVDX,INTPORT1OUTDX,ALSTI;设置中断允许IRET;中断返回,也就是结束中断INTERUPT7:CLIMOVSI,DATA1CALLLEDDISPMOVAL,20HMOVDX,INTPORT1OUTDX,ALIRETLEDDISP:MOVAL,90H;LED数码管初始显示MOVDX,CONTPORTOUTDX,ALMOVBYTEPTRDS:[DATA5],00HLED1:CMPBYTEPTRDS:[DATA5],07HJALED2MOVBL,DS:[DATA5]MOVBH,0HMOVAL,CS:[BX+SI]MOVDX,DATAPORTOUTDX,ALADDBYTEPTRDS:[DATA5],01HJNZLED1LED2:RETFORMAT:MOVBX,0;初始化数码管显示内容MOVWORDPTRDS:[BX+DATA1],5050HADDBX,2MOVWORDPTRDS:[BX+DATA1],0079HADDBX,2MOVWORDPTRDS:[BX+DATA1],0000HADDBX,2MOVWORDPTRDS:[BX+DATA1],0000HADDBX,2MOVWORDPTRDS:[BX+DATA1],063FHADDBX,2MOVWORDPTRDS:[BX+DATA1],4F5BHADDBX,2MOVWORDPTRDS:[BX+DATA1],6D66HADDBX,2MOVWORDPTRDS:[BX+DATA1],077DHA
本文标题:用8253和8259实现电子表
链接地址:https://www.777doc.com/doc-2756524 .html