当前位置:文档之家› 惠州学院微机报告讲解

惠州学院微机报告讲解

惠州学院计算机科学系课程设计(综合实验)报告( 2015--2016年度第一学期)课程名称:微型计算机技术题目:多功能实时时钟班级:最牛逼班学号:111111222222学生姓名:杰克指导教师:老师设计周数:1周同组人:路飞,鸣人日期:2015年12 月31 日一、课程设计的目的与要求。

1.1设计的目的。

通过本次课程设计要掌握芯片使用的方法,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。

1.2设计的要求。

(1) 实时时钟由时钟信号产生部分和时间显示部分组成时钟计时器,计算中断时间准确计时、分、秒;(2) 小键盘控制多功能选择采用小键盘输入,通过小键盘LED数码管显示,不同键输入对应不同功能(如时间暂停开始,设置时间等)。

1.3 设计的意义。

通过了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。

二、设计正文。

2.1设计的基本原理。

2.1.1设计所用芯片结构8253的功能用途是:(1)延时中断(2)可编程频率发生器(3)事件计数器(4)二进倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器8253有六种工作方式:(1)方式0:计数结束中断(2)方式1:可编程频率发生器(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8253各引脚功能如下。

D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器地址输入信号;CLK——计数输入,用于输入定时基准脉冲或计数脉冲;OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。

2.2 设计方案。

2.2.1 总体方案。

(见附录)2.2.2 硬件原理图。

2.3 具体模块设计。

2.3.1主程序模块:;*******************************;;* 键盘显示控制实验*;;*******************************;inta00 equ 20h ;8259a port,口地址inta01 equ 21h ;8259a port,口地址port0 equ 2b0h ;8279 data port,8279数据口port1 equ 2b1h ;8279 ctrl port,8279控制口time0 equ 280h ;8253 time0 port,8253定时器0口地址time1 equ 281h ;8253 time1 port,8253定时器1口地址timec equ 283h ;8253 ctrl port,8253控制口地址stacks segment stacksta dw 512 dup(?)top equ length stastacks endsdata segmentcsreg dw ?ipreg dw ?irq_times dw 00hbuf db 0 ;count,计数单元sign db 0 ;flage,计数标志sec1 db 0 ;hour hight,秒高位sec2 db 0 ;houp low,秒低位min1 db 0 ;min hight,分高位min2 db 0 ;min low,分低位hour1 db 0 ;sec hight,时高位hour2 db 0 ;sec low,时低位err1 db 0 ;error flage,出错标志hms db 0 ;00 is hour,11 is min,22 is sec,预置时、分、秒标志led db 3fh,06,5bh,4fh,66h,6dh,7dh,07,7fh,6fh,79h,40hmes db 'pleas first create the irq pulse!',0ah,0dh,0ah,0dhdb 'in small keybord:',0ah,0dhdb 'c--clear to zero; g--go ahead',0ah,0dhdb 'd--stop the disply;e--exit',0ah,0dhdb 'p--position the beginning time',0ah,0dh,'$'data endscode segmentmain proc farassume cs:code,ds:data,ss:stacks,es:datastart: climov ax,datamov ds,axmov buf,0mov sign,01mov sec1,0mov sec2,0mov min1,0mov min2,0mov hour1,0mov hour2,0mov err1,0mov dx,timec ;8253初始化mov al,36hout dx,almov dx,time0mov ax,1000out dx,almov al,ahout dx,almov dx,timecmov al, 74hout dx,almov dx,time1 ;定时器1每0.1秒中断一次out dx,almov al,ahout dx,almov ax,stacksmov ss,axmov sp,topmov ax,datamov ds,axmov es,axmov dx,offset mesmov ah,09int 21hmov ax,csmov ds,axmov dx,offset int_procmov ax,250bhint 21hin al,21hand al,0f7hout 21h,almov dx,port1mov al,0d3hout dx,al ;8279 clear,清零mov al,2ahout dx,al ;8279 clock,置时钟命令mov al,40hout dx,al ;read fifo ram command,fifo ram命令mov al,00hout dx,al ;keybord disply mode,置键盘显示模式mov al,80hout dx,al ;write ram command,写ram命令stikey1:call key2 ;call keybord and disply,调键盘显示子命令cmp hour2,0ah ;err flagejz next2next1: cmp al,0ch ;'c' command,'c'命令否jnz lp0next2: mov sign,00hmov hour1,00hmov min2,00hmov min1,00hmov sec2,00hmov sec1,00hlp0: cmp al,0eh ;'e' command,'e'命令退出程序jnz lp1mov sign,00hjmp exitlp1: cmp al,10h ;'g' command,'g'命令否jnz lp2mov sign,01hjmp key1lp2: cmp al,0dh ;'d' command,'d'命令否jnz setimov sign,00hkey3: jmp key1seti: cmp al,12h ;'p' command,'p'命令否jnz key1mov sign,00h ;add 1 flage,'00'为预置时标志mov hms,00h ;hour flagecall high0cmp err1,01hjz key3call low0cmp err1,01hjz key3mov hms,11h ;min flage,'11'为预置分标志call high0cmp err1,01hjz key3call low0cmp err1,01hjz key3mov hms,22h ;sec flage,'22'为预置秒标志call high0cmp err1,01hjz key3call low0jmp key1exit:in al,21h ;关中断IRQ3out 21h,alstimov ax,4c00hint 21hmain endpint_proc proc farclipush axpush bxpush cxpush dxpush sipush dipush dscmp sign,00 ;sign is add 1 flage,是否允许计数jz endt1inc buf ;buf is count,计数单元加1cmp buf,10jl endtmov buf,0inc sec1cmp sec1,10jl endtmov sec1,0inc sec2cmp sec2,6jl endtmov sec2,0inc min1cmp min1,10jl endtmov min1,0inc min2cmp min2,6jl endtmov min2,0inc hour1cmp hour2,2jl hhcmp hour1,4jl endtmov hour1,0mov hour2,0hh: cmp hour1,10jl endtmov hour1,0inc hour2endt:mov al,20h ;send EOImov dx,inta00out dx,almov cx,0ffffhloopx:noploop loopx ;延时pop dspop dipop sipop dxpop cxpop bxpop axmov al,20hout 20h,aliretint_proc endpkey2 proc nearmov dx,port1mov al,0d1hout dx,al ;clear display,清显示wrep: call disp ;调显示子程序mov dx,port1in al,dxand al,07hjz wrepkeyn: mov dx,port0 ;读状态in al,dxmov bl,aland al,07hand bl,38hmov cl,03shr bl,cljnz line1add al,08hjmp quit1line1: cmp bl,01hjnz line2 ;是否第二行键jmp quit1line2: add al,10hquit1: retkey2 endpdisp proc nearpush cxmov ax,datamov ds,axmov dx,port1mov al,90hout dx,almov si,offset sec1mov cx,0006mov bx,offset leddisp1: cldlodsbxlatmov dx,port0out dx,alloop disp1pop cxretdisp endperrs proc nearmov hour2,0ahmov hour1,0bh ;errormov min2,0bh ;disply 'E-----'显示出错标志mov min1,0bhmov sec2,0bhmov sec1,0bhmov err1,01h ;err flage,标记出错reterrs endphigh0 proc nearcall key2mov err1,00cmp hms,00h ;hms is hour min sc flage,预置时、分、秒cmp al,02h ;00 is hour,预置时jg error ;11 is min,预置分mov hour2,al ;22 is sec,预置秒jmp hqut1min0: cmp hms,11hjnz sec0cmp al,05hjg errormov min2,aljmp hqut1sec0:cmp al,05hjg errormov sec2,alhqut1: reterror: call errsrethigh0 endplow0 proc nearcall key2 ;get hour min sec low,预置时、分、秒低位mov err1,00cmp hms,00hjnz min3mov dl,hour2cmp dl,01jg hour3cmp al,09hjg errormov hour1,aljmp lqut1hour3:cmp al,03hjg errormov hour1,aljmp lqut1min3: cmp hms,11hjnz sec3cmp al,09hjg errormov min1,aljmp lqut1sec3:cmp al,09hmov sec1,allqut1: retlow0 endpcode endsend start三、课程设计的结论。

相关主题