资源描述
接口技术基本
实
验
报
告
学院:计算机科学与技术学院
班级:计091
学号:
姓名:曹恒楼
指引教师:顾 晖
时间:/6/16
目 录
数字钟设计………………………………………………………………………3
1 设计需求分析与解决方案……………………………………………………3
1.1 设计需求分析…………………………………………………………………………3
1.1.1 题目规定……………………………………………………………………3
1.1.2 依照题目规定提出问题……………………………………………………3
1.2 解决问题办法及思路…………………………………………………………………3
1.2.1 硬件设计选取某些…………………………………………………………3
1.2.2 软件设计分析………………………………………………………………4
2 硬件设计…………………………………………………………………………5
2.1 选取芯片8255…………………………………………………………………………5
2.1.1 芯片8255 A在本设计中功能作用………………………………………5
2.1.2 芯片8255 A功能分析……………………………………………………5
2.1.3 8255 A 方式控制字…………………………………………………………5
2.1.4 8255 A与外设相连逻辑图………………………………………………6
2.2 选取器件 LED…………………………………………………………………………6
2.2.1 LED在本设计中作用……………………………………………………6
2.2.2 LED功能分析………………………………………………………………6
2.2.3 LED技术参数………………………………………………………………7
2.3 硬件设计思路及连线图………………………………………………………………7
2.3.1 硬件设计思路………………………………………………………………7
2.3.2 硬件接线原理图、连接图…………………………………………………7
3 软件设计思路及程序控制流程框图……………………………………… …8
3.1 软件设计思路…………………………………………………………………………8
3.2 程序流程图有关阐明………………………………………………………………9
3.3 程序控制流程框图……………………………………………………………………9
3.4 程序清单(见附录)…………………………………………………………………11
4 实验环境………………………………………………………………………11
5 上机调试过程…………………………………………………………………11
5.1 硬件调试………………………………………………………………………………11
5.2 软件调试………………………………………………………………………………13
5.3 软、硬件联立调试……………………………………………………………………13
5.4 调试成果………………………………………………………………………………13
6 实验运营成果、分析…………………………………………………………15
6.1 实验运营成果与分析…………………………………………………………………15
6.2 问题讨论………………………………………………………………………………15
7 实验心得………………………………………………………………………16
8 参照文献………………………………………………………………………17
附录(源代码)……………………………………………………………………17
数字钟设计
一、 设计需求分析与解决方案
1.1 设计需求分析
1.1.1 题目规定
设计一种接口与七段LED显示屏,显示一种计时时钟,显示初值为0,每隔一秒变化一次显示值,60s为一分钟,60min为一小时,LED显示屏循环显示时、分、秒动态值。
1.1.2 依照题目规定提出问题
1、选取用于显示时间显示屏;
2、如何使显示屏实现显示时间;
3、如何实现计时功能,是用软件还是硬件实现;
4、选取何种接口芯片以及考虑该接口芯片及LED显示屏技术参数,考虑最大工作电流,需不需要其她辅助芯片等;
5、对设计题目功能扩展,在设计中加入其她功能;
6、可否用不同设计办法完毕设计,与其她计算机语言设计相比异同之处。
1.2 解决问题办法及思路
1.2.1 硬件设计选取某些
1、接口芯片选取
秒位设立完毕后,如何将时间信息传送到外设中,即选取何种芯片用于CPU与外设之间传送信息。接口芯片是微型机系统中实现输入输出惯用器件,是CPU与外设之间界面,一方面要接受CPU进行输入/输出所发出一系列信息,另一方面又要与外设互换数据以及某些联系信号等。为增长本设计灵活性,在接口选取上规定是可编程输入/输出接口8255A芯片或8251A芯片。
8255A芯片:它是一种可编程通用并行接口芯片,它有24条可编程I/O引脚,采用40脚双列直插式封装,单一+5V电源,所有输入/输出均与TTL电平兼容。在8255A中有A、B、C三个并行输入/输出端口,其功能所有由程序设定,每个端口均有自己特点。A口、B口普通作为独立I/O端口使用,C口也可以作为普通I/O端口使用,但当A口、B口作为应答式I/O端口使用时,C口分别以来为A口、B口提供应答控制信号。如果采用8255A作为计时时钟输入/输出接口,那么8255A三个端口设立如下:A口工作与方式0,作为输出口,其PA0~PA6分别与外设段选码相连,用以拟定在何时显示时间哪一位;B口工作与方式0,作为输出口,其PB0~PB7分别与外设相连,作为位选线;C口用来为A口、B口提供应答控制信号。
8251A芯片:它是一种可编程通用串行接口芯片,是通用同步异步接受/发送器,它作用是把计算机并行数据转换成串行数据发送出去,把接受到外部串行数据转换成并行数据送入计算机内部,它可以通过编程选用同步/异步通信方式,它具备独立发送器和接受器,可以以单工、半双工或全双工方式进行通信,并提供相应控制信号。
最佳解决方案:如果采用8251A作为计时时钟输入/输出接口,那么就需要把计算机并行数据转换成串行数据发送出去,把接受到外部串行数据转换成并行数据送入计算机内部,这个过程是需要时间,因此从时间效率方面来说并没有8255A芯片适当;此外,可编程并行接口芯片(8255A)数据传播速度快,虽然使用通信线多,但是传播距离并不算远,因此在解决接口问题时,采用可编程并行接口芯片8255A是比较适当。
2、时间显示
为实现计时时钟显示,可选取共阴极(或共阳极)七段LED上,芯片LCD或LED,表1-1为两种芯片比较:发光二极管,是由发光二极管排列构成显示屏件,它采用低电压扫描技术,具备耗电少,使用寿命长,成本低,亮度高,故障少,视角大,视角大,可视距离远特点。
通过度析和对比以及实验室实验条件可知LED显示屏要较优于LCD显示屏,因而本实验选取LED来实现时间显示。
3、秒钟设计
秒钟设计有两种解决方案:硬件实现、软件实现:
(1)硬件分析:可选取8253A芯片,8253A是一种定期精确、使用以便、灵活性大可编程定期器/计数器,其定期时间长度可以通过软件来设立,对芯片设立处置初值后,计数器开始工作,微解决器就可以去做其她工作,定期时间到,电路会产生一种信号,向微解决器提出中断祈求,告诉解决器定期时间已到。
(2)软件分析:为实现1秒长度设定,可执行一种循环程序,通过循环次数和循环嵌套层数来调节计时时间长短,该办法长处是不需要专用硬件,从而成本低,办法简朴灵活,使用起来也比较容易。
(3)最佳解决方案:通过以上分析,硬件实现1秒设定虽然较精确,但用软件来实现可以极大节约成本,并且通过周密计算循环次数和循环嵌套层数也可以将计时精确度提高,因此在实现计时时间方面选取软件是比较好方案。
1.2.2 软件设计分析
1、初始值设立
在程序中数据段定义秒位数据second,分位数据minute,时位数据hour,初始值都设为00H,并在LED显示屏上显示初值。
2、8255初始化
设立8255工作方式:B口和C口都用于输出,且都工作在方式0。
3、计时过程
从初始值开始显示,当显示了1s时,秒位加1,并判断秒位与否为60,若不是,则直接显示时间;若是,则将秒位置0,分位加1,接着判断分位与否为60,若不是,则直接显示;若是,则将分位置0,时位加1,然后判断时位与否为25,若不是,则直接显示;若是,则将时位置0,日期加1,并判断日期与否加到31,若是,则将日期清零,重新计时。如此循环。
4、1秒时间设定
执行一种循环程序,通过循环次数和循环嵌套层数来调节计时时间长短,该循环次数处定为0100h。
二、 硬件设计
2.1 选取芯片8255
2.1.1 芯片8255 A在本设计中功能作用
8255是并行I/0接口芯片,内部有三个互相独立8位数据端口。8255实现了外设与8086之间数据传播。8255B口工作于方式0,作为输出口,其PB0~PB7分别与LED数码管显示屏显示屏八段a,b,c,d,e,f,g,dp相连,C口作为输出口,其PC7~PC0与LED数码管显示屏LED0~LED7相连,作为位选。
2.1.2 芯片8255 A功能分析
1、8255A是可编程并行接口,内部有3个互相独立8位数据端口,即A口、B口和C口。三个端口都可以作为输入端口或输出端口。A口有三种工作方式:方式0、方式1和方式2;B口可以工作在方式0或方式1下;C口普通作为联系信号使用。8255工作只有当片选CS有效时才干进行工作,而控制逻辑端口实现对其她端口控制。当8255 A工作在方式0时,即基本输入输出方式时,可将三个数据端口划分为四个独立某些:A口和B口作为两个8位端口,C口高4位和低4位可以用作两个4位输入输出口,各个端口都可独立地用作输入或输出。
2、数据总线缓冲器是一种8位双向三态缓冲器,三态是由读/写控制逻辑控制,它可与系统DB直接相连,实现CPU和8255A之间信息传送;读写控制器用于管理数据、控制字或状态字传送,接受来自CPU地址信息及某些控制信号,然后向A组、B组控制电路发送命令,控制端口数据传送方向。
2.1.3 8255 A方式控制字
8255A方式控制字(见图2-1)
图2-1 8255A方式控制字
2.1.4 8255 A 与外设相连逻辑图
图2-3 8255与外设相连逻辑图
PA7~PA0:A口数据信号线;
PB7~PB0:B口数据信号线;
PC7~PC0:C口数据信号线。
2.2 选取器件 LED
2.2.1 LED在本设计中作用
LED发光二极管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,是作为终端用来显示计时时钟时、分、秒、毫秒值。
2.2.2 LED功能分析
LED发光二级管分为共阳极和共阴极两种,共阳就是7段显示字码共用一种电源正极,同理共阴就是7段显示字码共用一种电源阴极,共阴极数码管原理示意图如下:(见图2-4)
图2-4 LED原理图
LED数码管采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部构造为一种PN结,具备单向导电性。从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才干显示。将七个发光管进行组合,排列成数字图形8,再依照需要控制七个管亮与灭,即可显示出定义数字。
2.2.3 LED技术参数
数字
DP
g
f
e
d
c
b
a
二进制编码(字形)
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
0
1
1
03H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
A
0
1
1
1
0
1
1
1
77H
B
0
1
1
1
1
1
0
0
7CH
C
0
0
1
1
1
0
0
1
69H
D
0
1
0
1
1
1
1
0
5EH
E
0
1
1
1
1
0
0
1
79H
F
0
1
1
1
0
0
0
1
71H
表2-5 LED共阴极显示管段选码编码表
2.3 硬件设计思路及连线图
2.3.1 硬件设计思路
80868位数据线D7~D0与8255D7~D0相连,地址线经74LS373锁存后其低位A0、A1分别与8255A0、A1相连,其她地址线经74LS138译码后,其CS0接8255片选CS引脚,其入口地址为00F0H~00F3H。
8255A口PA0~PA7分别与逻辑开关K1~K8相连,其中开关量K7用于判断与否修改时间,K5~K6用于判断修改哪一位,K1~K4为要修改值;B口作为段选;C口作为位选段码信号。
2.3.2 硬件接线原理图
图2-6 硬件连线原理图
图2-7 硬件连接图
三、 软件设计思路及程序控制流程框图
3.1 软件设计思路
1、初始化8255A,设立其工作方式。
2、设立初值,定义相应十六进制数七段代码表及其时间区表。
3、显示计时并循环判断,当1秒时间到是则秒位加1计时显示。
4、8255A芯片个端口地址为:控制端口地址:206H
A口地址:200H
B口地址:202H
C口地址:204H
3.2 程序流程图有关阐明
一方面对8255A进行初始化,然后开始读取开关量,判断与否要修改时间,若需修改,则判断需修改哪位,随后将该位相应时间区数据修改为逻辑开关K1~K4相应值,若不需要修改则继续显示并循环判断,当1秒时间到达时,则秒位加1计时显示。
3.3 程序控制流程框图
开始
8255初始化
送1秒时间常数数
读取开关量
修改时间
修改秒低位
修改秒高位
修改分低位
修改分高位
修改时低位
修改时高位
显示时间
1秒时间
秒位加1
秒=60
秒为00分加1
分=60
分为00时加1
时=23
时为00重计时
N
N
N
修改日低位
修改日高位
图3-1 程序流程图
图3-2中断操作流程图
3.4 程序清单(见附录)
四、 实验环境
系统环境: Win-7系统
软件环境: Proteus
五、 上机调试过程
5.1 硬件调试
本次课程设计采用是Proteus集成软件开发环境,把总体分为3大块,第一块就是8086CPU译码电路,如下图5-1,第二块为8255A控制时间显示电路,如下图5-2,第三块为8255A不可屏蔽中断控制电路,如下图5-3.
在硬件接线连接时,应将8255AA口与端控制端口相连,用于决定显示值,B口也同段控制端口相连,决定显示值,而C口8位接两个位控制端口,用于决定哪个数码管显示。中断电路与8086CPU译码电路均参照课本先有实验图连接,至此,硬件线路已经接好。
图 5-1 8086CPU译码电路
图 5-2 数码管显示电路
图 5-3 中断控制电路
5.2 软件调试
在软件某些,程序分为三个某些:8255A初始化某些,读入初值、循环操作某些,显示出数字量某些。
5.3 联立调试
软件和硬件分别调试完毕后,进行联机调试,浮现了新问题:显示在LED数码管上数字不断跳跃,变幻不定,数值显示不稳定,控制不好。
要解决这个问题,我问了几种同窗,分别进行修改,刚开始采用6位,改了好久总是控制显示不好,要么奇数位显示要么偶数位显示,修改了延时操作,又增长了清屏操作,但是数码管还是显示不好。因此最后决定用两个4位数码管显示,增长毫秒位,这样在软件设计时没有浮现显示问题,除此之外,每个数字显示后延时是运用延时子程序循环次数来控制,为了使数字编码显示得清晰,应当通过调试,拟定延时子程序循环次数。在本设计中,循环次数设为16(10h)次。
5.4 调试成果
调试后编码成果对的,显示清晰,稳定,且可通过按键进行清零,及校时操作。
图 5-4-1 程序运营效果
图 5-4-2 清零操作
图 5-4-3 校时操作
六、实验运营成果、分析
6.1 实验运营成果与分析
成果:当程序开始全速运营时,LED显示屏上显示“00 00 00 00”,一秒后变为“00 00 01”这样每隔一秒秒位加1,显示“ 00 00 59”后一秒显示为“00 01 00”,显示“23 59 59”后一秒显示为“ 00 00 00”。
三个按键分别用于实现复位清零、分钟加一、小时加一系列校时操作,按下复位后,数码管显示初值,加一即在本来基本上进行。
分析:将8255A A口(PA0-PA7)作为输出用,A口(PA0-PA7)作为输出用(送段选码),B口(PB0-PB7)作为输出用(送段选码),C口作为输出用(送位选码)。程序一方面从8255AA口读取初始值,并进行显示时间,若按键有中断则响应中断操作。在8255AB口送段选码,C口送位选码后在LED显示屏上显示时间;若中断操作为分钟加一或小时加一,则将相应值经段码表转换及程序转换后在B口(PB0-PB7)输出作为段选码,在C口输出位选码后在LED显示屏上显示时间。然后程序判断之前设立一秒时间常量有无到,若一秒时间到,则将时间加一后接着显示。
6.2 问题讨论
该实验一开始较简朴仅显示分秒,没有浮现什么问题,日后加上时日和毫秒以及按键后致使程序变得复杂,条件跳转超过范畴而调用子程序又有错,日后终于使用JMP指令完毕了程序,成果达到了规定但程序太繁杂条理不清,然后自己又将程序进行某些优化,把多余操作删掉后,终使程序较为抱负。
七、实验心得
微机原理与接口技术是一门很有趣课程,任何一种计算机系统都是一种复杂整体,学习计算机原理是要涉及到整体每一某些。讨论某一某些原理时又要涉及到其他某些工作原理。这样一来,不但不能在短时间内较进一步理解计算机工作原理,并且也很难孤立地理解某一某些工作原理。因此,在循序渐进课堂教学过程中,我总是处在“学会了某些新知识,弄清了某些本来保存问题,又浮现了某些新问题”循环中,直到课程结束时,才把保存问题基本弄清晰。
学习该门课程知识时,其思维办法也和其他课程不同,该课程偏重于工程思维,详细地说,在理解了微解决器各种芯片功能和外部特性后来,剩余是如何将它们用于实际系统中,其创造性劳动在于如何用计算机关于技术和厂家提供各种芯片,设计实用电路和系统,再配上相应应用程序,完毕各种实际应用项目。
这次实验我选取题目有是数字钟,由于一开始感觉并不是很难,因此就想一种人独自完毕本次课程设计,刚开始我想法是硬件重要运用两个芯片,8255和8253,运用8253通道0实现计时单元,同步运用软件进行计数,而时间显示则采用6个7段数码管分别显示时、分、秒,并采用动态扫描方式来实现。但我依着这个总体设计想法做了两天后,硬件也连接好了,代码也写好了,但是数码管总是显示不对,然后又花了一天时间去调代码,可是最后还是没调出来,重要就是对数码管控制不好,用8255C口PC0~PC6来分别控制六个数码管,但是总是显示不对,请同窗帮看看后,也没有得到较好解决。因此我立即改了方案,运用软件计数,同步用8255C口控制8个7段数码管,多余两位用来增长毫秒显示功能,同步运用不可屏蔽中断NMI实现始终复位、校时功能,固然这样设计也不是一帆风顺,重要困难来自对程序理解,例如始终两位,逢十就要向十位进一,余数用作个位显示,同步每100ms要向秒进1,每逢60s要向分进1,每逢60min要向小时进1,而一天只有24小时,整个过程要用软件进行控制,其实是有难度,还涉及到内存存取原理,低位高位转换等等,都是需要我一种人去解决,功夫不负有心人,通过我摸索以及向同窗某些请教,我最后对实验原理有了清晰结识。虽然重要芯片就是用了8255,但是在那么短时间内可以完毕设计既定功能,我对这个成果还是很满意。
总之,通过这次课程设计,我更加清晰结识了计算机中惯用接口电路及8255A应用和设计技术,也结识到了理论知识相应用技术指引性作用。通过实践,我进一步加深了对专业知识和理论知识学习结识和理解,使自己设计水平和对所学知识应用能力以及分析问题、解决问题能力得到了一定提高。我也更加进一步地理解了,微机原理课程上讲到各种芯片功能,以及引脚作用,同步加深了对于重要芯片应用结识。
在实验过程中,我也遇到了某些困难,但是我通过及时请教同窗,查询有关资料,及时解决了问题,但仍有局限性之处,我将会在此后学习中更加努力。
八、参照文献
[1] 顾晖,梁惺彦等.微机原理与接口技术.北京:电子工业出版社,.8
[2] 沈美明,温冬婵.IBM-PC汇编语言程序设计(第2版). 北京:清华大学出版社,
附录(源代码):
IO1 EQU 200H
IO2 EQU 400H
CODE SEGMENT 'CODE'
ASSUME CS:CODE
START:MOV ES,AX
MOV SI,2H*4 ;不可屏蔽中断NMI向量设立
MOV AX,OFFSET UPDATETIME ;偏移地址
MOV ES:[SI],UPDATETIME
MOV AX,SEG UPDATETIME ;段地址
MOV ES:[SI+2],AX
MOV AL,10001001B ;显示8255A初始化,A,B,C三端口均工作在方式0,基本输出
MOV DX,IO1+6
OUT DX,AL
MOV AL,10000000B ;控制器8255A初始化,C端口输出
MOV DX,IO2+6
OUT DX,AL
LOP1: CALL TIMEDISPLAY ;调用时间显示屏
CALL TIMESET ;调用设立时间
JMP LOP1
MOV AH,4CH
INT 21H
TIMESET PROC ;设立时间显示屏
PUSH DX
PUSH CX
PUSH BX
PUSH AX
PUSH SI
PUSH DI
PUSHF
LEA DI,TIMEOUT
MOV DX,WORD PTR[DI] ;取计时器分钟
MOV CX,WORD PTR[DI+2] ;取计时器秒钟
MOV BX,WORD PTR[DI+4] ;取计时器分钟
MOV AX,WORD PTR[DI+6] ;取计时器秒钟
XCHG AH,AL ;由于内存关系,高低位互换
XCHG BH,BL
XCHG CH,CL ;由于内存关系,高低位互换
XCHG DH,DL
CMP AL,9 ;毫秒100进1,与9相比,如果相等则加一后向高位进一;否则直接加一
JNZ NEXT2
MOV AL,-1 ;由于都要加一,因此要显示0这里给-1值
CMP AH,9
JNZ NEXT3
MOV AH,-1
CMP BL,9
JNZ NEXT4
MOV BL,-1
CMP BH,5 ;秒60进1
JNZ NEXT5
MOV BH,-1
CMP CL,9
JNZ NEXT6
MOV CL,-1
CMP CH,5 ;分60进1
JNZ NEXT7
MOV CH,-1
CMP DL,9
JNZ NEXT8
MOV DL,-1
CMP DH,2 ;24小时
JNZ NEXT9
MOV DH,-1
NEXT9:INC DH ;加1操作
NEXT8:INC DL
NEXT7:INC CH
NEXT6:INC CL
NEXT5:INC BH
NEXT4:INC BL
NEXT3:INC AH
NEXT2:INC AL
XCHG AH,AL ;由于内存关系,高低位互换
XCHG BH,BL
XCHG CH,CL ;由于内存关系,高低位互换
XCHG DH,DL
MOV WORD PTR[DI],DX ;取计时器分钟
MOV WORD PTR[DI+2],CX ;取计时器秒钟
MOV WORD PTR[DI+4],BX ;取计时器分钟
MOV WORD PTR[DI+6],AX ;取计时器秒钟
POPF
POP DI
POP SI
POP AX
POP BX
POP CX
POP DX
RET
TIMESET ENDP
TIMEDISPLAY PROC ;调用时间显示屏
PUSH CX
PUSH BX
PUSH AX
PUSH SI
PUSH DI
PUSHF
MOV CL,77H ;01110111循环右移
MOV CH,0
LEA SI,TIMEOUT
MOV DI,SI
ADD DI,4
DISP2: MOV AL,CL ;输出位码
MOV DX,IO2+4
OUT DX,AL
MOV BX,OFFSET LEDTAB ;输出A段码
MOV AL,[SI]
XLAT
MOV DX,IO2
OUT DX,AL
MOV BX,OFFSET LEDTAB ;输出B段码
MOV AL,[DI]
XLAT
MOV DX,IO2+2
OUT DX,AL
CALL DISPLAY ;延时
MOV AL,0H ;清空A端口内容
MOV DX,IO2
OUT DX,AL
MOV AL,0H ;清空B端口内容
MOV DX,IO2+2
OUT DX,AL
INC DI
INC SI
ROR CL,1
INC CH
CMP CH,4
JZ NEXTTIME
JMP DISP2
NEXTTIME: POPF
POP DI
POP SI
POP AX
POP BX
POP CX
RET
TIMEDISPLAY ENDP
DISPLAY PROC ;延时
PUSH CX
PUSH BX
MOV BX,10H
D1: MOV CX,0FH
D2: LOOP D2
DEC BX
JNZ D1
POP BX
POP CX
RET
DISPLAY ENDP
UPDATETIME PROC
CLI
PUSH DX
PUSH CX
PUSH AX
PUSH SI
PUSHF
MOV DX,IO1+4
IN AL,DX
CMP AL,11111110B ;清零
JZ A5
CMP AL,11111101B ;分钟加1
JZ A4
CMP AL,11111011B ;小时加1
JZ A3
JMP NEXTOUT
A5: LEA DI,TIMEOUT
MOV AX,0
MOV WORD PTR[DI],0 ;取计时器分钟
MOV WORD PTR[DI+2],0 ;取计时器秒钟
MOV WORD PTR[DI+4],0 ;取计时器分钟
MOV WORD PTR[DI+6],0 ;取计时器秒钟
JMP NEXTOUT
A4: LEA DI,TIMEOUT
MOV DX,WORD PTR[DI] ;取计时器分钟
MOV CX,WORD PTR[DI+2] ;取计时器秒钟
XCHG CH,CL ;由于内存关系,高低位互换
XCHG DH,DL
CMP CL,9
JNZ N6
MOV CL,-1
CMP CH,5
JNZ N7
MOV CH,-1
CMP DL,9
JNZ N8
MOV DL,-1
CMP DH,2
JNZ N9
MOV DH,-1
N9: INC DH
N8: INC DL
N7: INC CH
N6: INC CL
XCHG CH,CL ;由于内存关系,高低位互换
XCHG DH,DL
MOV WORD PTR[DI],DX ;取计时器分钟
MOV WORD PTR[DI+2],CX ;取计时器秒钟
JMP NEXTOUT
A3: LEA DI,TIMEOUT
MOV DX,WORD PTR[DI] ;取计时器分钟
XCHG DH,DL
CMP DL,9
JNZ X8
MOV DL,-1
CMP DH,2
JNZ X9
MOV DH,-1
X9: INC DH
X8: INC DL
XCHG DH,DL
MOV WORD PTR[DI],DX ;取计时器分钟
NEXTOUT:POPF
POP SI
POP AX
POP CX
POP DX
STI
IRET
UPDATETIME ENDP
TIMEOUT DB 0,0,0,0,0,0,0,0 ;初值显示小时分钟,秒毫秒
LEDTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码表
CODE ENDS
END START
展开阅读全文