接口技术基础

学院:计算机科学与技术学院

班级:计091

学号:0913022032

姓名:曹恒楼

指导老师:顾 晖

时间:2012/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

– 2 –

接口技术课程设计

数字钟的设计

一、设计需求分析与解决方案

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芯片:它是一种可编程通用串行接口芯片,是通用的同步异步接收/ – 3 –

接口技术课程设计

发送器,它的作用是把计算机的并行数据转换成串行数据发送出去,把接收到的外部串行数据转换成并行数据送入计算机内部,它可以通过编程选用同步/异步通信方式,它具有独立的发送器和接收器,能够以单工、半双工或全双工方式进行通信,并提供相应的控制信号。

最佳解决方案:如果采用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,然后判断时位是否 – 4 –

接口技术课程设计

为25,若不是,则直接显示;若是,则将时位置0,日期加1,并判断日期是否加到31,若是,则将日期清零,重新计时。如此循环。

4、1秒时间的设定

执行一个循环程序,通过循环次数和循环嵌套的层数来调节计时时间的长短,该循环次数处定为0100h。

二、硬件设计

2.1 选择芯片8255

2.1.1 芯片8255 A在本设计中的功能作用

8255是并行的I/0接口芯片,内部有三个相互独立的8位数据端口。8255实现了外设与8086之间的数据传输。8255的B口工作于方式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)

– 5 –

接口技术课程设计

图2-1 8255A的方式控制字

2.1.4 8255 A 与外设相连的逻辑图

数字钟接口课设报告8086微机原理与接口技术课程设计

图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段的显示字码共用

数字钟接口课设报告8086微机原理与接口技术课程设计

– 6 –

接口技术课程设计

一个电源的正极,同理共阴就是7段的显示字码共用一个电源的阴极,共阴极数码管原理示意图如下:(见图2-4)

数字钟接口课设报告8086微机原理与接口技术课程设计

图2-4 LED原理图

LED数码管采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。

2.2.3 LED技术参数

数字钟接口课设报告8086微机原理与接口技术课程设计

– 7 –

接口技术课程设计

2.3 硬件设计思路及连线图

2.3.1 硬件设计思路

8086的8位数据线D7~D0与8255的D7~D0相连,地址线经74LS373锁存后其低位A0、A1分别与8255的A0、A1相连,其他地址线经74LS138译码后,其CS0接8255的片选CS引脚,其入口地址为00F0H~00F3H。

8255的A口PA0~PA7分别与逻辑开关的K1~K8相连,其中开关量K7用于判断是否修改时间,K5~K6用于判断修改哪一位,K1~K4为要修改的值;B口作为段选;C口作为位选段码信号。

2.3.2 硬件接线原理图

数字钟接口课设报告8086微机原理与接口技术课程设计

图2-6 硬件连线原理图

数字钟接口课设报告8086微机原理与接口技术课程设计

图2-7 硬件连接图

– 8 –

接口技术课程设计

三、软件设计思路及程序控制流程框图

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 程序控制流程框图

– 9 –

接口技术课程设计

图3-1 程序流程图

数字钟接口课设报告8086微机原理与接口技术课程设计

– 10 – N

接口技术课程设计

图3-2中断操作流程图

3.4 程序清单(见附录)

四、实验环境

系统环境:

软件环境: Win-7系统 Proteus

五、上机调试过程

5.1 硬件调试

本次课程设计采用的是Proteus集成软件开发环境,把总体分为3大块,第一块就是8086CPU译码电路,如下图5-1,第二块为8255A控制的时间显示电路,如下图5-2,第三块为8255A不可屏蔽中断控制电路,如下图5-3.

数字钟接口课设报告8086微机原理与接口技术课程设计

– 11 –

接口技术课程设计

在硬件接线连接时,应将8255A的A口与端控制端口相连,用于决定显示值,B口也同段控制端口相连,决定显示值,而C口8位接两个位控制端口,用于决定哪个数码管显示。中断电路与8086CPU译码电路均参照课本先有实验图连接,至此,硬件线路已经接好。

数字钟接口课设报告8086微机原理与接口技术课程设计

图 5-1 8086CPU译码电路

数字钟接口课设报告8086微机原理与接口技术课程设计

图 5-2 数码管显示电路

– 12 –

接口技术课程设计

图 5-3 中断控制电路

5.2 软件调试

在软件部分,程序分为三个部分:8255A初始化部分,读入初值、循环操作部分,显示出数字量部分。

5.3 联立调试

软件和硬件分别调试完毕后,进行联机调试,出现了新的问题:显示在LED数码管上的数字不停跳跃,变幻不定,数值显示不稳定,控制不好。

要解决这个问题,我问了几个同学,分别进行修改,刚开始采用6位,改了好久总是控制显示的不好,要么奇数位显示要么偶数位显示,修改了延时操作,又增加了清屏操作,但是数码管还是显示不好。所以最后决定用两个4位数码管显示,增加毫秒位,这样在软件设计时没有出现显示问题,除此之外,每个数字显示后的延时是利用延时子程序的循环次数来控制的,为了使数字编码显示得清楚,应该通过调试,确定延时子程序的循环次数。在本设计中,循环次数设为16(10h)次。

5.4 调试结果

调试后编码结果正确,显示清楚,稳定,且可通过按键进行清零,及校时操作。

数字钟接口课设报告8086微机原理与接口技术课程设计

– 13 –

接口技术课程设计

图 5-4-1 程序运行效果

数字钟接口课设报告8086微机原理与接口技术课程设计

图 5-4-2 清零操作

数字钟接口课设报告8086微机原理与接口技术课程设计

– 14 –

接口技术课程设计

图 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口作为输出用(送位选码)。程序首先从8255A的A口读取初始值,并进行显示时间,若按键有中断则响应中断操作。在8255A的B口送段选码,C口送位选码后在LED显示器上显示时间;若中断操作为分钟加一或小时加一,则将对应的值经段码表转换及程序转换后在B口(PB0-PB7)输出作为段选码,在C口输出位选码后在LED显示器上显示时间。然后程序判断之前设置的一秒的时间常量有没有到,若一秒时间到,则将时间加一后接着显示。

6.2 问题讨论

该试验一开始较简单仅显示分秒,没有出现什么问题,后来加上时日和毫秒以及按键后致使程序变得复杂,条件跳转超出范围而调用子程序又有错,后来终于使用JMP指令完成了程序,结果达到了要求但程序太繁杂条理不清,然后自己又将程序进行一些优化,把多余的操作删掉后,终使程序较为理想。

数字钟接口课设报告8086微机原理与接口技术课程设计

– 15 –

接口技术课程设计

七、实验心得

微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。

学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下的是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。

这次实验我选择的题目有是数字钟,因为一开始感觉并不是很难,所以就想一个人独自完成本次的课程设计,刚开始我的想法是硬件主要利用两个芯片,8255和8253,利用8253的通道0实现计时单元,同时利用软件进行计数,而时间显示则采用6个7段数码管分别显示时、分、秒,并采用动态扫描方式来实现。但我依着这个总体设计想法做了两天后,硬件也连接好了,代码也写好了,但是数码管总是显示的不对,然后又花了一天的时间去调代码,可是最后还是没调出来,主要就是对数码管的控制不好,用8255的C口PC0~PC6来分别控制六个数码管,但是总是显示的不对,请同学帮看看后,也没有得到很好的解决。所以我立刻改了方案,利用软件计数,同时用8255的C口控制8个7段数码管,多出的两位用来增加毫秒的显示功能,同时利用不可屏蔽中断NMI实现始终的复位、校时的功能,当然这样的设计也不是一帆风顺的,主要的困难来自对程序的理解,例如始终的两位,逢十就要向十位进一,余数用作个位的显示,同时每100ms要向秒进1,每逢60s要向分进1,每逢60min要向小时进1,而一天只有24小时,整个过程要用软件进行控制,其实是有难度的,还涉及到内存的存取原理,低位高位的转换等等,都是需要我一个人去解决的,功夫不负有心人,经过我的摸索以及向同学的一些请教,我最终对实验的原理有了清晰的认识。虽然主要芯片就是用了8255,但是在那么短的时间内能够完成设计既定的功能,我对这个结果还是很满意的。

总之,通过这次课程设计,我更加清晰的认识了计算机中常用接口电路及8255A的应用和设计技术,也认识到了理论知识对应用技术的指导性作用。通过实践,我进一步加深了对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题、解决问题的能力得到了一定的提高。我也更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识。

在实验过程中,我也遇到了一些困难,但是我通过及时请教同学,查询相关资料,及时解决了问题,但仍有不足之处,我将会在今后学习中更加努力。

– 16 –

接口技术课程设计

八、参考文献

[1] 顾晖,梁惺彦等.微机原理与接口技术.北京:电子工业出版社,2011.8

[2] 沈美明,温冬婵.IBM-PC汇编语言程序设计(第2版). 北京:清华大学出版社,2001

附录(源代码):

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

– 17 –

接口技术课程设计

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

– 18 –

接口技术课程设计

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

– 19 –

接口技术课程设计 PUSH PUSH PUSH PUSHF CX AX SI

MOV IN CMP JZ CMP JZ CMP JZ JMP A5: LEA MOV MOV MOV MOV MOV JMP A4: LEA MOV MOV XCHG XCHG

CMP JNZ MOV CMP JNZ MOV CMP JNZ MOV CMP JNZ MOV N9: INC N8: INC N7: INC N6: INC XCHG XCHG MOV MOV JMP A3: LEA MOV

XCHG

CMP JNZ MOV CMP JNZ DX,IO1+4 AL,DX AL,11111110B ;清零 A5 AL,11111101B ;分钟加1 A4 AL,11111011B ;小时加1 A3 NEXTOUT DI,TIMEOUT AX,0 WORD PTR[DI],0 ;取计时器分钟 WORD PTR[DI+2],0 ;取计时器秒钟 WORD PTR[DI+4],0 ;取计时器分钟 WORD PTR[DI+6],0 ;取计时器秒钟 NEXTOUT DI,TIMEOUT DX,WORD PTR[DI] ;取计时器分钟 CX,WORD PTR[DI+2] ;取计时器秒钟 CH,CL ;由于内存关系,高低位交换DH,DL CL,9 N6 CL,-1 CH,5 N7 CH,-1 DL,9 N8 DL,-1 DH,2 N9 DH,-1 DH DL CH CL CH,CL ;由于内存关系,高低位交换DH,DL WORD PTR[DI],DX ;取计时器分钟 WORD PTR[DI+2],CX ;取计时器秒钟 NEXTOUT DI,TIMEOUT DX,WORD PTR[DI] ;取计时器分钟 DH,DL DL,9 X8 DL,-1 DH,2 X9 – 20 –

接口技术课程设计

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

– 21 – ;段码表

类似文章