微机原理电子时钟.docx
《微机原理电子时钟.docx》由会员分享,可在线阅读,更多相关《微机原理电子时钟.docx(12页珍藏版)》请在冰豆网上搜索。
微机原理电子时钟
一、课程设计的目的
通过本次课程设计学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使设计者的设计水平和对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。
1.熟练掌握8086/88教学系统的基本操作和调试程序的各种指令。
2.掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。
3.掌握8255的各种工作方式及其应用编程。
4.掌握8253定时/计数器的工作原理、工作方式及其应用编程。
5.熟悉编程及调试程序的方法。
二、课程设计要求:
(1)用8255的A口驱动六个七段数码管(LED)的字段,B口驱动六位七段数码管(LED)的位控端,右侧开始各两位分别显示:
时、分、秒。
(2)七段数码管采用动态扫描工作方式,每位轮流显示的时间<2ms,扫描频率>50HZ,采用8253定时中断方式,在中断服务程序中完成显示位和内容的轮换。
(3)以8253定时中断的时间2ms为基本单位,可设置计数变量单元Tim2ms、Tim1(秒单元)、Tim2(分单元)、Tim3(时单元)。
每进入中断服务程序一次Tim2ms+1,当Tim2ms=500时清0,Tim1+1;当Tim1=60时清0,Tim2+1;当Tim2=60时清0,Tim3+1;Tim3=24时清0
三:
基本工作原理及系统框图:
系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。
以8086微处理器作CPU,8253做定时器对一个频率为1MHZ的时钟信号定时,在写入控制字与计数初值后,每到2ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,接8259,向CPU申请中断,主要用8259A的IRQ2的中断服务程序完成秒、分、时的运算即计时功能,8255A负责将内存里的时位,分位,秒位值输出到数码管。
.
本设计由8259A中断控制器、8253定时/计数器、8255A接口芯片、LED数码显示管组成。
电子时钟的显示格式HH:
MM:
SS由左到右分别为时、分、秒,每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。
最大记时23:
59:
59超过这个时间时分秒位都清零从00:
00:
00重新开始。
设计过程:
(1)在主程序中要分别对8253、8259、8255进行初
始化编程。
(2)8255的A口、B口都设为方式0,为基本的输入输出方式。
(3)在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。
时、分、秒分别对应6个存储单元,分别存放时、分、秒的十位和个位。
当中断次数满10次时,将秒的个位加1,同理对分,时作相应处理。
(4)七段数码管显示作为子程序,对时、分、秒对应存储单元的内容分别取出并转换成相应的段码,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示。
系统框图:
四、芯片简介及初始化
4.18259芯片介绍及初始化
中断控制器8259A是专门为控制优先级中断而设计开发的芯片。
它将中断源优先排队、辨别中断源以及提供中断矢量的电路集于一片中。
因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需要增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。
8259A的主要功能如下:
①一片8259A可以接受并管理8级可屏蔽中断请求,通过9片8259A级联可扩展至64级可屏蔽中断优先控制。
②对每一级中断都可以通过程序来屏蔽或允许
③在中断响应周期,8259A可为CPU提供相应的中断类型码。
④具有多种工作方式,并可通过编程来加以选择。
通过初始化编程向8259A写入相应的初始化命令ICW,可以使芯片处于一个规定的基本工作方式,并在此方式下
进行工作。
8259A的初始化命令字共有4个ICW1-ICW4,进行初始化时要求ICW1-ICW4按一定的顺序写入。
中断控制器8259的初始化为:
ICW1,用来指示ICW1的标志的D4=1,LTIM为0(即中断请求为边沿触发方式),系统只用一片8259,所以SNGL为1,因为初始化程序将用到ICW4,所以,ICW4为1;
ICW2设置中断类型码的初始化命令字,必须写到8259的奇地址端口中,ICW2是任选的,而ICW2一旦确定下来,8259的8个中断请求信号输入引脚IR0~IR7所对应的8个中断类型码也确定了;
ICW4方式控制初始化命令字,它也要求写入奇地址端口,不过ICW4并不总是需要写入的,只有在ICW1的第0位为1时,才有必要设置ICW4,其中,D7~D5三位总是为0,作为ICW4的标识码,SFNM位为0,BUF位为0,M/S位为0,AEOL位为0,D0为为1表示8259当前所在的系统为16位或32位系统
初始化程序:
moval,13h
movdx,0020h
outdx,al;icw1
moval,08h
movdx,0021h
outdx,al;icw2
moval,01h
outdx,al;icw4
moval,0fbh
out21h,al;8259ocw1
4.28253芯片介绍及初始化
8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
8253初始化:
做为计数器的计数器/定时器8253,在设置好计数初值(即定时常数)后,便开始减1计数,为0时,输出一个信号;控制字设置:
BCD为设置为计数值为二进制格式,模式选择为模式2(即为分频器,当控制字写入后,输出段OUT变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数初值被写到计数执行部件,然后计数执行部件做减1计数,减到1时,输出端OUT变为低电平;完成一次计数过程后,输出端OUT又变为高电平,开始一个新的计数过程,由此可以周而复始的进行下去),读写指示位为先写低8位字节,在读写高8位字节,计数器选择计数器0。
其中8253的计数初值为2000,当接1MHZ的脉冲时,分频后的输出值为0.01S。
8253的初始化程序:
moval,34h
movdx,4Bh
outdx,al
movdx,48h
movax,2000
outdx,al
moval,ah
outdx,al;8253
4.38255芯片介绍及初始化
8255特性:
(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.
(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.
图3
8255芯片
8255引脚功能:
RESET:
复位输入线
CS:
芯片选择信号线
RD:
读信号线
WR:
写入信号
D0~D7:
三态双向数据总线
PA0~PA7:
端口A输入输出线
PB0~PB7:
端口B输入输出线
PC0~PC7:
端口C输入输出线
A0,A1:
地址选择线
8255初始化:
可并行通信接口8255的控制字是方式选择控制字,A口工作在方式0(即基本输入输出方式)下,并且为输出状态,B口工作在方式0下,为输出口,C口为输出口,其初始化为:
8255控制口地址为63h
8255初始化程序:
movdx,63h
moval,10000000b
outdx,al;8255
五、软件程序设计
5.1程序主流程图:
5.2电子时钟中断处理程序流程图:
5.3显示模块流程图:
5.4总程序代码:
PORTBITEQU61H
PORTSEGEQU60H
CODESEGMENT
ASSUMECS:
CODE
ORG1000H
START:
MOVAX,CS
MOVDS,AX
MOVDX,63H;8255控制寄存器地址
MOVAL,10000000B;CW1=80H
OUTDX,AL;8255
MOVAL,34H;00110100BCW0方式2
MOVDX,4BH;8253控
OUTDX,AL
MOVDX,48H
MOVAX,2000;500Hz,2ms
OUTDX,AL
MOVAL,AH
OUTDX,AL;8253
MOVAL,13H;00010011BICW1单片,边沿触发,要ICW4
MOVDX,0020H;PC/XT偶地址
OUTDX,AL;ICW1
MOVAL,0BH;00001011B中断类型号B
MOVDX,0021H;PC/XT奇地址
OUTDX,AL;ICW2
MOVAL,01H;8259D7-D0与总线直连,中断非自动结束,处于8086系统
OUTDX,AL;ICW4
MOVAL,0F7H;11110111开放IR3
OUT21H,AL;8259OCW1
MOVAX,0
MOVDS,AX
MOVAX,OFFSETINTR1
MOVDI,002CH
MOV[DI],AX
INCDI
INCDI
MOVAX,CS
MOV[DI],AX
INCDI
INCDI
MOVBP,0H
MOVAL,CS:
[BP+BIT]
OUTPORTBIT,AL
ROLAL,1
MOVCS:
[BP+BIT],AL
MOVSI,OFFSETBUF
MOVAL,[SI]
MOVBX,OFFSETTABLE
XLAT
OUTPORTSEG,AL
INCSI
STI
BEGIN:
CMPCS:
[BP+TIME],1000
JNZBEGIN
MOVAL,0
MOVCS:
[BP+TIME],0
MOVDI,OFFSETBUF
MOVAL,[DI+00]
MOVCH,[DI+01]
MOVCL,4
ROLCH,CL
ORAL,CH
ADDAL,1
DAA
MOVCH,AL
ANDAL,0FH
MOV[DI+00],AL
MOVAL,CH
ANDAL,0F0H
RORAL,CL
MOV[DI+01],AL
MOVAL,CH
CMPAL,60H
JNZBEGIN
MOVAL,00
MOV[DI+00],AL
MOV[DI+01],AL
MOVAL,[DI+02]
MOVCH,[DI+03]
MOVCL,4
ROLCH,CL
ORAL,CH
ADDAL,1
DAA
MOVCH,AL
ANDAL,0FH
MOV[DI+02],AL
MOVAL,CH
ANDAL,0F0H
RORAL,CL
MOV[DI+03],AL
MOVAL,CH
CMPAL,60H
JNZBEGIN
MOVAL,00
MOV[DI+02],AL
MOV[DI+03],AL
MOVAL,[DI+04]
MOVCH,[DI+05]
MOVCL,4
ROLCH,CL
ORAL,CH
ADDAL,1
DAA
MOVCH,AL
ANDAL,0FH
MOV[DI+04],AL
MOVAL,CH
ANDAL,0F0H
RORAL,CL
MOV[DI+05],AL
MOVAL,CH
CMPAL,24H
JNZA
MOVAL,00
MOV[DI+04],AL;时低
MOV[DI+05],AL
A:
JMPBEGIN
INTR1:
;中断程序
MOVBX,OFFSETTABLE
MOVAL,CS:
[BP+BIT]
OUT61H,AL
MOVAL,[SI]
XLAT
OUT60H,AL
INCSI
MOVAL,CS:
[BP+BIT]
ROLAL,1
CMPAL,0BFH
JNZBEGIN1
MOVAL,0FEH
MOVSI,OFFSETBUF
BEGIN1:
MOVCS:
[BP+BIT],AL
ADDCS:
[BP+TIME],1
MOVDX,0020H
MOVAL,20H
OUTDX,AL
STI;结束中断
IRET
TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
BUFDB5,5,9,5,3,2
BITDB0FEH
TIMEDW0
CODEENDS
ENDSTART