收藏 分享(赏)

基于8086的电子时钟设计(汇编语音).doc

上传人:精品资料 文档编号:10762103 上传时间:2020-01-08 格式:DOC 页数:20 大小:652.08KB
下载 相关 举报
基于8086的电子时钟设计(汇编语音).doc_第1页
第1页 / 共20页
基于8086的电子时钟设计(汇编语音).doc_第2页
第2页 / 共20页
基于8086的电子时钟设计(汇编语音).doc_第3页
第3页 / 共20页
基于8086的电子时钟设计(汇编语音).doc_第4页
第4页 / 共20页
基于8086的电子时钟设计(汇编语音).doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、基于 8086 的电子钟设计成都大学电子信息工程学院1目 录摘要 1Abstract1第一章 电子钟设计总体方案设计21.1 设计目的21.2 设计要求21.3 方案比较21.3.1 非中断方式与中断方式的比较 21.3.2 LED 显示与液晶显的比较 31.4 总体方案设计 思路3第二章 系统硬 件设计42.1 8255 与 CPU 之间的连接 关系 42.2 8253 与周边电路的连接关系42.3 8259 与周边电路连 接关系52.4 液晶显示模块与 8255 之间的连线关系 52.5 地址译码器 与按键62.6 系统总体硬件电路图6第三章 系统软件设计73.1 编址及 控制字的确定73

2、.1.1 编址 73.1.2 控制字 73.2 分块子程序73.2.1 1602 读写操作子程序 73.2.2 中断子程序93.3 主程序设计11总结与 致谢: 13基于 8086 的电子钟设计成都大学电子信息工程学院2参考文献: 14附录: 15基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 3 页3摘要本设计以微机原理与接口技术为基础,以 8086CPU 为核心,利用 INTER 8253 可编程定时/计数器,通过引入时钟发生器产生标准时钟进行精准定时;经定时器产生中断源,采用可编程中断控制器 8259A 进行中断扩展,用可屏蔽中断方式进行时间的采集;以可编程并行 I

3、/O 接口芯片 8255A 扩展接口,驱动 MSC1602 液晶模块进行时间显示。第一章 电子钟设计总体方案设计1.1 设计目的电子钟是一种基于微电子技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。通过该题目的设计和分析,学习微机软、硬件系统设计开发的过程,加深微机原理及其应用课程基础知识的理解和综合运用能力,熟悉集成电路芯片的使用方法,熟悉微机编程及接口电路,学会体会工程实际设计过程,培养学生独立解决实际工程问题的综合能力。初步得到用汇编语言书写程序的训练,全面培养程序设计的分析、设计、编测试及文档规范书写的能力

4、,得到运用汇编语言的综合训练,提高解决实际问题的能力。1.2 设计任务通过该题目的设计过程,可以初步掌握汇编语言的运用、软件开发方法并提高解决实际问题的综合能力。电子时钟实际是一个多重的定时技术系统。对于秒、分技术系统,逢 60 进 1,即当秒计数到 60 时,秒计数器向分计数器输入一个计数脉冲;而当分计数器计数到 60 时,向小时计数器输入一个计数脉冲。当小时计数器逢 24 进 1.把秒计数器、分计数器和小时计数器的内容通过七段数码管或其他芯片显示出来,就完成了时间信息的输出。本课程设计要求利用 8086系统模拟电子时钟结构,完成以下设计任务:基于 8086 的电子钟设计电子信息工程学院 电

5、工 3 班 沈虎 第 4 页41、时间初值输入:利用键盘输入时间初值;2、电子钟计数:电子钟通过计数器自动计数,实现时间的自动更新;3、时间显示:可选用 LED 七段数码管输出时间,显示给用户;4、程序采用汇编语言在 PC 机上完成;5、完成复核学习要求的设计计算说明书。1.3 设计要求1、利用 Intel 8086 CPU 及其相应的外围扩展电路及其接口电路,设计系统硬件原理图,并绘制于 2 号工程图纸。2、给出程序的设计思路,设计系统软件流程框图,并绘制于 2 号工程图纸。3、完成设计计算说明书。1.3 方案比较为实现设计要求,在 8086 微机系统中实现计时功能可有多种方式,同时实现显示

6、的方式也有多种,现主要比较计时方式中的中断与非中断方式,及显示常用的LED 显示与液晶显示。1.3.1 非中断方式与中断方式的比较在非中断方式设计常使用的方式为查询法,查询法的设计,可将定时/计数器8253 的 OUT 引脚接至并行 I/O 扩展芯片 8255 的 PA,PB,PC 的任一口上,CPU 通过不断的检测该引脚上的高低电平变化,来进行计数。该方式的优点:实现思路相对简单;由于不要引入中断则可不用中断扩展芯片8259 电路相对简单;该方式的缺点:由于 CPU 要不断的去检测单一引脚高低电平的变化,占用的时间比较长,利用率较低;与此同时,CPU 要进行数据的运算与控制数据的传输,如果二

7、者冲突,可能会发生计时不准的现象。中断方式的设计思路,将定时/计数器 8253 的 OUT 脚接至中断扩展芯片 8259的 IR 引脚上,定时器产生相同频率的计数脉冲,形成中断源。8259 再通过 INTR 引脚向 CPU 发出中断请求信号,CPU 通过中断检测进行计数/计时。该方式的主要缺点:由于芯片 8259 的引进,使电路相对复杂;该方式的主要优点是:用中断的方式可以大大提高 CPU 的利用效率,同时可以在该系统上进行更多功能的扩展,同时用中断的方式进行计数/计时,计时更加的准确可靠。基于以上的考虑本设计,采用电路稍微复杂,但可靠性强,利用效率高的中断方式。基于 8086 的电子钟设计电

8、子信息工程学院 电工 3 班 沈虎 第 5 页51.3.2 LED 显示与液晶显的比较为完成本设计的要求,若采用 LED 则需 6 块以上,可以采用二片 8255 来驱动动这六片 LED 进行静态显示。也可以采用动态扫描的方式,用一片 8255 加锁存器(如 74LS573)来进行动态显示。若采用液晶显示,则只需用一片 8255 芯片进行接口的扩展(具体扩展方案将在下面进行介绍) ,可以得到较为满意的显示效果,但操作的技巧性要求相对较高,成本相对较高。不论从硬件电路驱动的复杂性,还是从软件设计的简洁性及整个系统的外观来看,时尚的液晶显示更能满足系统的需求。鉴于以上考虑,本次设计采用操作要求相对

9、较高的液晶进行数码显示。1.4 总体方案设计思路本方按主要设计思路如右下图所示:以 8086CPU 最小系统为核心,控制可编程定时/计数器INTER 8253,可编程中断控制器 8259A,可编程并行 I/O 接口芯片 8255A。通过 8253 的输出记数脉冲为 8259 产生中断源,8259 将中断信号反馈到 CPU,从而产生可屏蔽中断的申请信号,在CPU 的合理响应下进行计数,通过 8255 驱动 16*2 的液晶显示模块 LCM1602 进行时间显示。第二章 系统硬件设计在本章中,将分模块对本次设计的硬件设计进行简述,分块介绍系统的主要功能及连线方式。8086CPU8255825982

10、531602驱动产生中断控制中断源控制控制基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 6 页62.1 8255 与 CPU 之间的连接关系通过 CPU 与 8255 的读写控制线对接,有效的控制接口芯片的输入输出状态,用第 11 和 12 根地址线再加上 2-4 译码器的的 Y0 脚接 8255 片选,为 8255 的A,B, C 及控制口分配了可靠的地址。将 8086 的低八位数据线与 8255 数据端对接,为 8255 的输入输出提供数据。由于为芯片提供的都是偶地址,系统默认访问低八位的数据线。具体连线图见右图:2.2 8253 与周边电路的连接关系在系统中定时/

11、计数芯片 8253 主要与CPU 及中断扩展芯片 8259 之间存在着连接关系。同 8255,8253 的读写控制线与 CPU的读写控制线对接,正确控制 CPU 对 8253的读写控制(本次设计只用到了 CPU 往8253 中写入数据,没用到读出状态的功能) ,第 2 和 3 位数据/地址复用线加上译码器的Y1 端为 8253 的定时器 0,1,2 及控制口确定了可靠的地址(仅用到 T0 及控制地址) ,CPU 低八位数据线为控制 8253 提供数据。通过 CLK0 端引入时钟发生器所产生的标准时钟(本设计采用 10KHZ 的外部时钟) ,将 OUT0 接至 8259 的 IR0 引脚上,作为

12、中断源。具体电路如上示:2.3 8259 与周边电路连接关系为了对 8259 进行合理分配奇、偶地址,从 CPU 引入了第 A13 作为地址线,再加上译码器的 Y2 端作为片选信号,8259 获得了两个可靠的地址。同 8255 与 8253相似 8086 同样靠低八位的数据线,与 8259 进行数据交换。IR0 为 8253 的计数输出基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 7 页7端,8259 通过检测 IR 一组引脚的输入情况,经过中断判优以后,对当前优先级最高的中断进行响应,同时向 CPU 发送 INTR 信号请求中断,在可屏蔽中断允许的情况下 CPU 对其

13、进行响应,返回 INTA 非的信号,8259 此时发出当中断的中断类型号给8086。程序跳到中断子程序的入口地址处去执行中断操作。具体电路连线如右图所示:2.4 液晶显示模块与 8255 之间的连线关系液晶显示模块 1602 的数据线接在 8255 的 A 口上,通过对 A 口进行读写操作,为显示模块提供控制指令及显示数据。8255 的 PC0 和 PC1 分别接 1602 的 RS(指令/数据控制脚)和 EN(使能脚)上,控制指令/数据的输入。其它引脚按典型接法接线,要说明的是,本次对 1602 只进行了写的操作,故将读写控制脚接低电平。通过延时的方式来解决 1602 读写操作忙的问题(具体

14、时序见第三章 系统软件设计) 。连线图如右示:2.5 地址译码器与按键在本次设计中,由于有多片芯片要进行地址编码,使用了一片 2-4 译码器74LS139进行译码,使地址编码更加的方便。使用的 CPU 地址端口为第 9 和 10 号地址线,基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 8 页8输出的 Y0,Y1,Y2 分别接 8255,8253,8259。由于设计要求,在本设计中进行了按键设计,其电路简单,当 K 未按下时输出为高电平,当 K 按下时输入给 8255PB0 口一个低电平,系统通过检测这一引脚是否为低电平来判断系统是否开始从当前时间开始计时。具体设计电路图

15、见 2.6 总体硬件电路图。2.6 系统总体硬件电路图基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 9 页9第三章 系统软件设计3.1 编址及控制字的确定3.1.1 编址按照第二章硬件设计电路中,CPU 对 8253,8255,8259 进行的地址分配地址(仅为在编程过程过要使用的地址进行编制) ,本设计所用编址无用位均置 0;8253 定时器 0 的地址:0200H;控制口:020CH8255 A 口地址:0;B 口地址:0800H; C 口地址:1000H ;控制口:1800H8259 奇地址:2400H; 3.1.2 控制字根据系统的需要,合理选择各芯片的工作方式

16、。8253:选取定时器 0,采用先写高八拉后写低八的初值写入方式,工作方式 3方波发生器,采取二进制的方式输入初值,从而 CW00110110B 36H8255:分别选取 A,C 口为输出端口,B 口为输入端口均采用工作方式 0简单的输入/输出方式,故工作方式控制字为;10000010B 82H ;同时要对 PC0 和 PC1进行复位和置位操作,其复位/置位控制字分别为: PCO 复位/ 置位控制字为:0/01H;PC1 口的置位/复位控制字:02H/03H8259:本设计中只有一片 8259 无从片,故无须写入 ICW3,不需要写 ICW4 采用上升沿触发的方式可得:ICW100010010

17、H12H ;使用 60H 号中断故ICW260H3.2 分块子程序3.2.1 1602 读写操作子程序如右图所示,为 1602 液晶显示的写时序图:1602 的写操作通过不同的时序进行控制,可分为写指令操作(子程序WRITECOM )和写数据(子程序WRITEDATA ) 。写指令的时序为,先拉低 RS 小延时基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 10 页10(约 0.5ms)后将 EN 拉低,小延时后拉高电平输入指令到液晶,然后拉低 EN;写数据的操作时序与之基本类似,只是先拉低指令/数据控制信号 RS,然后拉低 EN。最体子程序代码如下示:WRITE_COM

18、 PROC FAR ;1602写指令子程序PUSH AX ;将AX压入堆栈PUSH CX;MOV DX,1800H;MOV AL,1 ;OUT DX,AL ;将PC0即RS拉为高电平MOV AL,2 ;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0 ;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3 ;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2 ;拉低EN;OUT DX,AL;POP CX;POP AX;RET;WRITE_COM ENDPWRITE_DATA PROC

19、 FAR ;1602写数据子程序PUSH AX ;将AX压入堆栈PUSH CX;MOV DX,1800H;MOV AL,0 ;OUT DX,AL ;将PC0即RS拉为低电平MOV AL,2 ;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0 ;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3 ;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2 ;拉低EN;OUT DX,AL;POP CX;POP AX;基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 11

20、页11RET;WRITE_DATA ENDP3.2.2 中断子程序中断子程序的设计流程图如右示,进入中断后先保护现场(将寄存器CX,AX ,DX 及标志寄存器中的内容压入堆栈中) ,然后恢复中断现场(分别将秒时分计数寄存器BX,SI,DI 的数值进行恢复继续计数)然后进行时钟的操作,最后要保护中断现场,即将时分计数寄存器BX,SI,DI 的当前数值进行压栈操作进行保护方便下一次的计数,接着要进行现场的恢复(对寄存器CX,AX ,DX 及标志寄存器进行弹栈操作,并进行开启中断方便下一次中断的到来) 。具体子程序设计如下:TIMER PROC FARPUSH CX;保护现场PUSH AX;PUSH

21、 DX;PUSHF;POP BX; 恢复秒计数寄存器POP SI; 恢复分计数寄存器POP DI; 恢复时计数寄存器INC BX; 秒加一操作MOV AL,80H+40H+0AH;写指令给1602进行输出定位CALL WRITE_COMMOV AX,BX;AAD; BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前秒的十位和个位CALL WRITE_DATA ;写入秒十位MOV AL,AH;CALL WRITE_DATA;写入秒个位CMP BX,60;比较是否到了60JNZ EXIT; 不是60跳到EXIT的位置中断开始保护现场恢复中断现场秒加 1 并输出秒60秒清 0 分

22、加 1 并输出分60分清 0 时加 1 并输出时24时清 0恢复现场并开中断中断返回保护中断现场NNNYYY基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 12 页12MOV BX,0;秒清0INC SI;分加1MOV AL,80H+40H+08H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,SI;AAD; BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前分的十位和个位CALL WRITE_DATA ;写入分的十位MOV AL,AH;CALL WRITE_DATA;写入分的个位CMP SI,60;检测分是否到60JNZ EX

23、IT;不是60跳转到EXIT处MOV SI,0;分清0INC DI;时加1MOV AL,80H+40H+05H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,DI;AAD; BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前时的十位和个位CALL WRITE_DATA;写入时的十位MOV AL,AH;CALL WRITE_DATA;写入时的个位CMP DI,24;检测时是否为24JNZ EXIT;跳到公共点EXITMOV SI,0;时清零EXIT:PUSH DI; 保护中断现场PUSH SI;PUSH BX;POP DX;恢复现场POP AX;POP

24、 CX;STI;开启中断IRET;中断返回TIMER ENDP基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 13 页133.3 主程序设计主程序的主要功能是:1. 完成各主要芯片的初始化;2. 完成液晶显示模块的初始化;3. 检测开关按键是否按下;4. 实时检测有无可屏蔽中断其主要流程如右图所示:具体设计代码如下:START:MOV AX,DATASMOV DS,AXMOV AL,82H ;8255初始化MOV DX,1800HOUT DX,AL;MOV AL,36H;8253初始化MOV DX,020CH;OUT DX,AL;MOV AL,27H;MOV DX,020

25、0HOUT DX,AL;MOV AL,10H;OUT DX,AL;MOV AL,12H;8259初始化MOV DX,0204H;OUT DX,AL;MOV AL,60H;OUT DX,AL;MOV AL,60H;将TIMER对应的60号中断写入中断向量表,本设计采用DOS功能调用法写入MOV AH,25H;MOV CX,SEG TIMER;MOV DS,CX;开始8255 初始化8253 初始化8259 初始化1602 初始化检测 K0等待中断NY基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 14 页14MOV DX,OFFSET TIMER;INT 21H;MOV A

26、L,38H;设置1602为16*2行 5*7点阵CALL WRITE_COM;MOV AL,0BH;开显示,不显示光标,光标不闪烁CALL WRITE_COM;MOV AL,06H;指针自动加一,整屏不移动CALL WRITE_COM;MOV AL,1; 清屏指令CALL WRITE_COM;MOV AL,80H+40H+05H;在1602的第二行第5个位置写入数据,正好在1602的正中位置CALL WRITE_COM;MOV CX,8;MOV SI,-1;AA1:INC SI; 将BUF里边的内容写入1602,其初始化完成MOV AL,BUFSI;CALL WRITE_DATA;LOOP A

27、A1;MOV BX,0;MOV SI,0;MOV DI,0;AA2:MOV DX,0800H; 检测按键K是否按下IN AL,DX;TEST AL,1;JNZ AA2 ;不为0表明K未按下跳转STI ;开中断JMP $;等待中断总结经过一周的微机原理及应用课程设计,深化了我对微机原理及其接口技术的理基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 15 页15解与认识。在接到课到课题以后我先对设计的要求进行了分析,通过方案的比校最终确定了所要使用的芯片,然后开始利用 PROTEL 99 进行硬件设计,在硬件设计完成后开始着手程序的设计,并成功运行原代码的书写,最后完成了文档

28、的制作。在这一周的实习时间内让我受益良多,不仅让我平时所学的内容在本次设计中得到了应用,也让我更熟悉了各主要芯片的工作方式,同时通过文档的制作也让我在文档的制作上有了一定的进步,这将为我以后的毕业设计和以后的工作奠定良好的基础。在此首先要感谢我的课程设计指导老师王南兰老师,她在设计之前对设计的要求与实现方式进行了详细的说明,为我的设计方案提供了思路;也为我们的文档设计提供了模板,让我在文档制作时更具有方向性和标准性。其次要感谢的是我的微机原理及接口技术的任课老师张晓虎老师,他在这一学期内教会了我程序设计的方法及对各主要芯片应用与控制,也教会了我一个完整的去做一个课题设计的步骤。再次向两位老师表

29、示衷心的感谢!但是,这次的实习唯一感到遗憾的是,由于实验器材的限制,也无法做出直观可见的仿真结果,所以这次的设计仅是基于理想化的设计。附录:源程序代码:DATAS SEGMENTBUF DB 00:00:00,$;此处输入数据段代码 DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AL,82H ;8255初始化MOV DX,1800H基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎

30、第 16 页16OUT DX,AL;MOV AL,36H;8253初始化MOV DX,020CH;OUT DX,AL;MOV AL,27H;MOV DX,0200HOUT DX,AL;MOV AL,10H;OUT DX,AL;MOV AL,12H;8259初始化MOV DX,0204H;OUT DX,AL;MOV AL,60H;OUT DX,AL;MOV AL,60H;将TIMER对应的60号中断写入中断向量表,本设计采用DOS功能调用法写入MOV AH,25H;MOV CX,SEG TIMER;MOV DS,CX;MOV DX,OFFSET TIMER;INT 21H;MOV AL,38H;

31、设置1602为16*2行 5*7点阵CALL WRITE_COM;MOV AL,0BH;开显示,不显示光标,光标不闪烁CALL WRITE_COM;MOV AL,06H;指针自动加一,整屏不移动CALL WRITE_COM;MOV AL,1; 清屏指令CALL WRITE_COM;MOV AL,80H+40H+05H;在1602的第二行第5个位置写入数据,正好在1602的正中位置CALL WRITE_COM;MOV CX,8;MOV SI,-1;AA1:INC SI; 将BUF里边的内容写入1602,其初始化完成MOV AL,BUFSI;CALL WRITE_DATA;LOOP AA1;基于

32、8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 17 页17MOV BX,0;MOV SI,0;MOV DI,0;AA2:MOV DX,0800H; 检测按键K是否按下IN AL,DX;TEST AL,1;JNZ AA2 ;不为0表明K未按下跳转STI ;开中断JMP $ ;等待中断DELAY PROC FARPUSH CX;AA3:MOV CX,50LOOP AA3;POP CX;RETDELAY ENDPWRITE_COM PROC FAR ;1602写指令子程序PUSH AX ;将AX压入堆栈PUSH CX;MOV DX,1800H;MOV AL,1 ;OUT DX,AL

33、 ;将PC0即RS拉为高电平MOV AL,2 ;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0 ;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3 ;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2 ;拉低EN;OUT DX,AL;POP CX;基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 18 页18POP AX;RET;WRITE_COM ENDPWRITE_DATA PROC FAR ;1602写指令子程序PUSH AX ;将AX压入堆栈PUSH

34、 CX;MOV DX,1800H;MOV AL,0 ;OUT DX,AL ;将PC0即RS拉为低电平MOV AL,2 ;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0 ;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3 ;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2 ;拉低EN;OUT DX,AL;POP CX;POP AX;RET;WRITE_DATAENDPTIMER PROC FARPUSH CX;保护现场PUSH AX;PUSH DX;PUSHF;POP BX;

35、恢复秒计数寄存器POP SI; 恢复分计数寄存器POP DI; 恢复时计数寄存器INC BX; 秒加一操作MOV AL,80H+40H+0AH;写指令给1602进行输出定位基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 19 页19CALL WRITE_COMMOV AX,BX;AAD; BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前秒的十位和个位CALL WRITE_DATA ;写入秒十位MOV AL,AH;CALL WRITE_DATA;写入秒个位CMP BX,60;比较是否到了60JNZ EXIT; 不是60跳到EXIT的位置MOV BX,0

36、;秒清0INC SI;分加1MOV AL,80H+40H+08H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,SI;AAD; BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前分的十位和个位CALL WRITE_DATA ;写入分的十位MOV AL,AH;CALL WRITE_DATA;写入分的个位CMP SI,60;检测分是否到60JNZ EXIT;不是60跳转到EXIT处MOV SI,0;分清0INC DI;时加1MOV AL,80H+40H+05H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,DI;AAD; BCD码

37、调整指令MOV CX,10;DIV CX; AX除以10得当前时的十位和个位CALL WRITE_DATA;写入时的十位MOV AL,AH;CALL WRITE_DATA;写入时的个位CMP DI,24;检测时是否为24JNZ EXIT;跳到公共点EXITMOV SI,0;时清零EXIT:PUSH DI; 保护中断现场基于 8086 的电子钟设计电子信息工程学院 电工 3 班 沈虎 第 20 页20PUSH SI;PUSH BX;POP DX;恢复现场POP AX;POP CX;STI;开启中断IRET;中断返回TIMER ENDPMOV AH,4CHINT 21HCODES ENDSEND START

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报