课程设计定时器的设计

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

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

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

资源描述

1信息工程学院课程设计报告设计题目:定时器的设计名称:微机原理与接口课程设计班级:姓名:学号:设计时间:12.09至12.22指导教师:评语:评阅成绩:评阅教师:2一、课程设计的性质和目的通过课程设计,进行硬件设计和程序设计的方法和技能训练,巩固在课堂上学到的有关软件程序设计和硬件电路设计的基本知识和基本方法,通过具体课题的训练,进一步熟悉汇编语言的结构和使用方法,掌握软硬结合的控制程序设计,达到能独立阅读、查阅资料、编制和调试完善特定功能的目的。二、课程设计的要求1、遵循硬件设计模块化。2、要求程序设计结构化。3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。4、要求程序结构合理,语句使用得当。5、适当追求编程技巧和程序运行效率。三、主要仪器设备及软件PC机、MASM汇编软件、绘图软件及仿真等。四、课程设计题目及要求要求:采用8086系列CPU构建控制系统,采用定时器完成定时功能,延时控制LED灯的点亮与熄灭。五、课题分析及设计思路1.设计方法与步骤:1.设计系统的硬件部分(1)进行方案选择,采用中断方式,硬件中断(2)选择设计可能用到的芯片,分析他们的工作特点(3)按照各芯片的使用特点和系统设计逐步连接,画出硬件连接图2.设计系统的软件部分(1)将程序的编程方式决定是子程序调用(2)确定本系统设计的源程序的各个模块,明确各个模块的系统功能(3)画出各个模块的程序流程图(4)依据流程图写出信号灯全部汇编程序芯片选择:选择8086作为CPU,输入输出用8255,定时用8253,中断用8259,因为8086的地址线和数据线是分时复用的,即先传送地址,在传送数据。所以选用74LS373作为地址锁存器,然后用74LS138作为地址译码器来接到各个芯片的片选端。选用74LS245做数据缓冲器。考虑到1HZ脉冲定时不精确,所以用1.19MHZ的脉冲,而且用查询方式来实现的话,CPU利用率不高,还是选择中断来实现!2.设计思路:3要求通过8086控制定时器,来实现信号灯功能,将此设计分成几部分。首先通过8255的A端口输入八位二进制数,将A端口设置为1方式输入,通过开关拨动的高低电平将二进制送到8255内。B端口接输出的发光二极管,设置为1方式输出,用以显示定时的数据。当8253定时器没有启动时,没用中断请求,此时8255B端口没输出,C端口接的信号灯控制输出低电平,信号灯熄灭。定时启动时,通过开关电源下降沿触发,将信号通过D触发器,接非门输出24V电压,继电器的常开开关闭合,接到8253的GATE接口,使8253开始工作,8253接1M赫兹脉冲!每一秒后8253内的计数器会进行减一,将8253OUT输出接到8259的中断端IN0,向CPU申请中断,CPU响应后,转向处理中断服务程序,会控制8255的B端口输出的数减一,C端口继续输出高电平,,信号灯继续亮!表明正在计时。中断处理完后,8086返回断点,等待下一个中断.8253每减一都中断一次,使8255输出减一,当减到0时,C端口输出低电平,信号灯熄灭,定时过程结束。否是开始设定定时初始值开关电源触发,8253工作,减一8259收到中断8259向8086申请中断CPU响应中断处理中断服务程序8255输出减一返回断点信号灯亮,定时8255输出为0C输出电平,信号灯熄灭定时结束4硬件设计:一.输入输出(8255实现)8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种;方式0:基本的输入输出方式,即无须联络就可以直接进行的I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。方式1:选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.方式2:双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。此次设计的具体操作首先将待输入的计数值通过开关以BCD码送到8255A端口中,A端口为0方式的输入,B端口为0方式的输出,接到发光二极管上。将8255的地址线与8066的低八位相连,通过地址锁存器74LS273接到8255,将片选端通过地址译码器接到8086上,C端口作为普通的输出端,接信号灯,即发光二极管。读写分别接到8086的读写上,8086的数据线通过锁存器后选择Q0,Q1接到8255的A0,A1上。二、定时器(8253实现)58253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。(一)、8253内部结构1.数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。2.读/写控制读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。接收CPU送入的读/写控制信号,A1A0:端口选择信号,由CPU输入。8253内部有3个独立的通道和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。这4个端口地址由最低2位地址码A1A0来选择。。3.通道选择(1)CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。(2)RD#、WR#——读/写控制命令,由CPU输入,低电平有效。RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。WR#有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。。4.计数通道0~2每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。采用二进制计数时,最大计数值是FFFFH,采用BCD码计数时。最大计数值是9999。与此计数器相对应,每个通道内设有一个16位计数值锁存器。必要时可用来锁存计数值。(二)、8253定时器的工作步骤①设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;②计数/定时:向通道写入计数值,启动计数操作;③读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。④计数到:当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。(三)、具体的实现方法将8253的数据线接在8086上,读写控制端也分别接在8086的读写上,CLK接一个时钟脉冲,GATE接到开关电源控制的继电器上,OUT端接到8259的中断信号上,每一次减一都申请一次中断。6三、中断服务(8059实现)(一)、8259工作原理8259A通过发送一个INTR(InterruptRequest)信号给CPU,通知CPU有一个中断到达。CPU收到这个信号后,会暂停执行下一条指令,然后发送一个INTA(InterruptAcknowledge)信号给8259A。8259A收到这个信号之后,马上将ISR中对应此中断请求的Bit设置,同时IRR中相应的bit会被reset。比如,如果当前的中断请求是IR3的话,那么ISR中的bit-3就会被设置,IRR中IR3对应的bit就会被reset。这表示此中断请求正在被CPU处理,而不是正在等待CPU处理。CPU从DataBus上得到这个中断向量之后,就去IDT中找到相应的中断服务程序ISR,并调用它。如果8259A的EndofInterrupt(EOI)通知被设定位人工模式,那么当ISR处理完该处理的事情之后,应该发送一个EOI给8259A。(二)、具体实现过程将8259的数据线与8086相连,INT和INTA分别和8086的INTR和INTA相连,中断IR0与8253的OUT端口连接。读写控制端接到8086的读写上,片选通过译码后接到一个输出端四、启动部分(继电器实现)7开关电源控制继电器电气隔离启动8253整体框图OUTA0A1硬件电路连接图8086825574LS37374LS13874LS2458253开关输出二极管信号灯启动装置82598RDWRAD0AD1AD2AD3AD4AD5AD6AD7D3D5D6D7D8D1D2D4AD0AD1AD2AD3AD4AD5AD6AD7AD0AD1AD2AD3AD4AD5AD6AD7A0A1A0A1AD0AD1AD2AD3AD4AD5AD6AD7A0A1RDWRWRRDOUT0OUT0AD[0..15]READY22INTR18NMI17RESET21CLK19MN/MX33HOLD/GT131HLDA/GT030A[16..19]M/IO/S028ALE/QS025DT/R/S127INTA/QS124TEST23BHE34DEN/S226RD32WR/LOCK29U18086D034D133D232D331D430D529D628D727RD5WR36A09A18RESET35CS6PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710U28255AD08D17D26D35D44D53D62D71RD22WR23A019A120CS21CLK09GATE011OUT010CLK115GATE114OUT113CLK218GATE216OUT217U38253AD1LEDD2LEDD3LEDD4LEDD5LEDD6LEDD7LEDD8LEDR110kR210kR310kR410kR510kR610kR710kR810kD03D14D27D38D413D514D617D718CLK11MR1Q02Q15Q26Q39Q412Q515Q616Q719U474LS273A1B2C3E16E24E35Y015Y114Y213Y312Y411Y510Y69Y77U574LS138D03D14D27D38D413D514D617D718CLK11MR1Q02Q15Q26Q39Q412Q515Q616Q719U674LS273RL1T73S5D15-24VU3(CLK0)ABCDS1VSWITCH24D9LEDIR018IR119IR220IR321IR422IR523IR624IR725INT17INTA26CS1WR2RD3A027SP/EN16D[0..7]CAS[0..2]U78259软件编程:中断程序流程图程序流程图:开始AX,BX推入堆栈标志寄存器入栈调用子程序,使8255B端口输出减1标志寄存器出栈AX,BX出栈中断返回开始将8255置控制字确定设定8253的工作方式确定8259的各个中断的方式建立中断地址入口表9否是六、程序主要代码与分析(关键代码要有注释):datasegmentaadb0c3hdataendsstack1segmentstackdw64dup(?)退出10stack1endscodesegmentassumecs:code,ds:datastart:movax,datamovds,axcli;关中断开始初始化;把中断服务程序的入口地址写入中断向量表中,使用的中断类型号为0FHpushdsxorax,axmovds,axmovsi,4*0fh;找到该中断类型号在中断向量表中的首地址movax,offsetirq7addax,2000hmovwordptr[si],ax;把中断服务程序的偏移地址放入低字中movax,0movwordptr[si+2],ax;

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

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

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

×
保存成功