数字电子钟8255 8253 8259

合集下载

8253 8259报告

8253 8259报告

预习报告一、实验目的1.学习8253编程定时/计数器的工作方式。

2.掌握中断控制器8259A与微处理机接口的原理和方法。

3..掌握中断控制器8259A的应用编程。

二、预习内容(一)实验中应用的芯片的结构、引脚、工作原理及工作方式。

(1)8253芯片。

8253具有3个独立的计数通道,采用减1计数方式。

在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。

当计数脉冲是已知周期的时钟信号时,计数就成为定时。

8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。

六种方式分别是:1)方式0:计数结束则中断;2)方式1:单脉冲发生器;3)方式2:速率波发生器;4)方式3:方波发生器;5)方式4:软件触发方式计数;6)方式5:硬件触发方式计数。

图1,8253结构图图2,8253引脚图8253引脚图如图1-2示,各引脚功能如下。

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

(2)8259芯片。

一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。

如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。

但CPU这时可能正在执行一条指令,因此CPU不会立即响应。

而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。

如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。

8259、8253实验报告

8259、8253实验报告

数字逻辑与CPU实验报告实验内容:8259中断控制器、8253可编程定时/计数器接口实验姓名:班级:学号:实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。

2、掌握编写中断服务程序的方法。

3、掌握初始化中断向量的方法。

二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。

三、实验方法(1)连线1、单脉冲发生器输出P+与8259的IR0相连;2、8259的片选CS8259与CS0相连;3、8259的INT与8086的INT相连;4、CS273与CS1相连;5、00与LED1相连;其他线均已连好。

(2)在8086实验系统软件中编辑程序,编译链接后,调试程序,程序流程图如图2。

(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。

四、程序源代码CODE SEGMENT PUBLICASSUME CS:CODEORG 100H;设置堆栈起点0100HSTART: 图2 程序流程图 MOV DX,4A0HMOV AX,13H ;写ICW1,单片8259,要写ICW4OUT DX,AXMOV DX,4A2HMOV AX,80H ;写入ICW2,设定IR0中断类型吗为80HOUT DX,AXMOV AX,01 ;写入ICW4,设定一般嵌套,非自动EOI方式 OUT DX,AXMOV AX,0 ;写入OCW1,设定允许中断。

OUT DX,AXMOV AX,0MOV DS,AXMOV SI,200H ;中断向量预存放在0100:0200H(向量码80H) MOV AX,OFFSET HINT;取中断服务程序的入口地址MOV DS:[SI],AXADD SI 2MOV AX,CSMOV DS:[SI],AXSTI;开中断JMP $;原地跳转HINT:;中断服务程序XOR CX,0FFH;CX全部取反(8位)MOV DX,4B0H;CS273接口的地址,与8个LED灯相连MOV AX,CX;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的的地址MOV AX,20H;写入OCW2,一般EOI命令,全嵌套方式OUT DX,AXIRET;中断返回CODE ENDSEND START五、实验结果程序调试通过后,当我们按一次单脉冲发生器的输出开关,对应连好的灯就会亮。

8253的工作原理

8253的工作原理

8253的工作原理8253是一种计数器/定时器芯片,它通过与计算机的输入输出接口相连接,用来执行各种计数和定时操作。

8253具有三个可独立使用的计数器,分别称为计数器0、计数器1和计数器2。

计数器0和计数器1是16位计数器,可以被配置为16位二进制计数器或BCD (二进制编码十进制)计数器。

计数器2是一个8位计数器,只能是二进制计数器。

8253工作的基本原理是通过对计数器寄存器的编程配置,将计数器模式、分频因子和初始计数值设置为期望的值。

然后,8253开始计数,每经过一个时钟周期,计数器的值会递增一次。

当计数器的值和设定的目标值相等时,8253可以产生一个触发信号,可以用来触发中断或产生特定的定时操作。

计数器0和计数器1能够按照不同的计数模式工作。

其中,计数模式0是16位二进制计数器或BCD计数器,计数器值递增或递减,直到计数器达到最大值或最小值时就会重置。

计数模式1是16位计数器,当计数器的值和设定的目标值相等时,计数器会重置为初始值。

计数模式2与计数模式1相似,但在计数器达到目标值时,会产生一个短脉冲。

计数模式3是计数器1和计数器2之间的模式,计数器1会根据计数器2的值进行递增或递减。

计数模式4和模式5分别是软件触发的单脉冲发生器和硬件触发的单脉冲发生器。

除了计数模式之外,8253还提供了可编程的分频器。

分频器可以将输入时钟信号进行分频,从而改变计数器的计数速度。

分频因子可以设置为2、4、8、...、2^16,因此可以根据需要选择合适的分频因子来控制计数速度。

综上所述,8253是一种可编程的计数器/定时器芯片,根据计数模式和分频器配置可以实现各种计数和定时操作。

它通过与计算机接口相连接,可以广泛应用于许多需要计数和定时功能的电子设备和系统中。

8253、8259、8255综合设计题

8253、8259、8255综合设计题

1.键盘中断(8255,8259),设计一程序当按下任意键或任意组合键时从8255的A口读出按键扫描码并显示,按“ESC”键退出。

2.交通灯控制系统:按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。

可利用8255、8253、8259等接口电路。

(可到实验室完成)
3.键盘电子乐器:利用并行接口8255作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。

8255电子钟课程设计

8255电子钟课程设计

8255电子钟课程设计一、课程目标知识目标:1. 理解8255可编程定时器/计数器的工作原理,掌握其在电子时钟设计中的应用。

2. 学会使用8255芯片与微控制器(如8051)的接口技术,并能正确编程控制电子钟的时、分、秒显示。

3. 掌握电子时钟的时间计数与显示的基础算法,能够运用所学知识设计简单的电子时钟程序。

技能目标:1. 培养学生动手能力,通过搭建8255电子时钟电路,提高学生的电路连接与调试技巧。

2. 培养学生编程能力,让学生能够独立编写8255控制电子时钟的程序代码,并实现功能。

3. 培养学生问题解决能力,面对电子时钟设计中的问题,能够进行故障排查和程序优化。

情感态度价值观目标:1. 培养学生对电子技术和编程的兴趣,激发学生的学习热情和创新精神。

2. 培养学生团队协作精神,通过小组合作完成课程设计,增强集体荣誉感和责任感。

3. 培养学生科学严谨的态度,在设计过程中注重细节,遵循操作规程,确保安全与可靠性。

本课程针对高年级电子信息技术或计算机科学与技术相关专业学生,结合教材内容,注重理论联系实际,旨在提高学生电子电路设计、编程及实际应用能力。

课程目标明确、具体,可衡量,为后续教学设计和评估提供依据。

二、教学内容本课程教学内容紧密围绕课程目标,结合教材以下章节:1. 8255可编程定时器/计数器原理与功能- 8255芯片内部结构- 工作模式及时序分析- 接口技术及其在微控制器中的应用2. 电子时钟基础知识- 电子时钟原理概述- 时、分、秒计数与显示方法- 电子时钟程序设计基础3. 8255电子时钟设计与实现- 电路设计与搭建- 程序编写与调试- 故障排查与优化教学内容安排与进度:第一周:8255可编程定时器/计数器原理学习,接口技术了解。

第二周:电子时钟基础知识学习,程序设计基础掌握。

第三周:分组讨论,确定电子时钟设计方案,开始电路搭建与程序编写。

第四周:电路调试,程序优化,完成8255电子时钟设计。

8259,8253芯片资料

8259,8253芯片资料

8259芯片:8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。

单个的8259A能管理8级向量优先级中断。

在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。

8259A有多种工作方式,能用于各种系统。

各种工作方式的设定是在初始化时通过软件进行的。

在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态,编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。

8259工作原理:一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。

如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。

但CPU这时可能正在执行一条指令,因此CPU不会立即响应。

而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。

如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。

当CPU执行完一条指令时后,会检查一下INTR管脚是否有信号。

如果发现有信号,就会转到中断服务,此时,CPU会立即向8259A芯片的INTA(中断应答)管脚发送一个信号。

当芯片收到此信号后,判优部件开始工作,它在IRR中,挑选优先级最高的中断,将中断请求送到ISR(中断服务寄存器),也即将ISR 中代表此IRQ的位置位,并将IRR中相应位置零,表明此中断正在接受CPU的处理。

同时,将它的编号写入中断向量寄存器IVR 的低三位(IVR正是由ICW2所指定的,不知你是否还记得ICW2的最低三位在指定时都是0,而在这里,它们被利用了!)这时,CPU还会送来第二个INTA信号,当收到此信号后,芯片将IVR中的内容,也就是此中断的中断号送上通向CPU的数据线。

8255电子钟课程设计

8255电子钟课程设计

8255电子钟课程设计一、教学目标本课程的目标是让学生了解和掌握8255芯片的基本原理和应用方法,能够利用8255芯片设计和制作一个简易的电子钟。

具体的学习目标包括:1.知识目标:学生需要了解8255芯片的结构、工作原理和编程方法;掌握电子钟的设计原理和制作流程。

2.技能目标:学生能够熟练使用8255芯片和相关电子元器件设计并制作电子钟;能够运用编程语言进行程序设计,实现电子钟的功能。

3.情感态度价值观目标:培养学生对电子技术的兴趣和好奇心,提高学生动手实践的能力,培养学生团队合作的精神。

二、教学内容本课程的教学内容主要包括8255芯片的基本原理、编程方法以及电子钟的设计和制作。

具体的教学大纲如下:1.第一章:8255芯片的基本原理和工作原理;2.第二章:8255芯片的编程方法;3.第三章:电子钟的设计原理;4.第四章:电子钟的制作方法和步骤。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

具体的教学方法如下:1.讲授法:用于讲解8255芯片的基本原理、编程方法和电子钟的设计原理;2.讨论法:用于引导学生讨论电子钟的制作过程中遇到的问题和解决方案;3.案例分析法:通过分析典型的电子钟设计案例,让学生了解电子钟的制作方法和技巧;4.实验法:让学生动手实践,实际操作制作电子钟,增强学生的实际操作能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《8255电子钟设计与应用》;2.参考书:电子技术相关书籍;3.多媒体资料:电子钟设计原理和制作的视频教程;4.实验设备:8255芯片、电子元器件、编程器、实验板等。

五、教学评估本课程的评估方式将包括平时表现、作业、考试等多个方面,以全面客观地评估学生的学习成果。

具体评估方式如下:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现来评估;2.作业:布置相关的设计任务和编程练习,评估学生对知识的掌握和应用能力;3.考试:进行理论知识考试和实际操作考试,评估学生对8255芯片原理和电子钟设计的理解和掌握程度。

8253的内部结构与工作方式

8253的内部结构与工作方式

8253的内部结构与工作方式8253是一种通用计数器/定时器芯片,由Intel公司于1975年研发。

它在计算机系统中主要用于计时、定时和频率发生的应用。

8253的内部结构和工作方式如下:1.内部结构:8253由一个16位计数器和三个16位计数器/分频器组成。

其中,计数器0和计数器2可以用作定时器,计数器1可以用作计数器或分频器。

-计数器0(工作于16位模式):它可以生成一个周期性的方波信号。

它的输入时钟源可以是外部引脚CLK0或者是计数器2的输出CLK2、计数器0还可以分为两个8位计数器,其下方8位由计数器1的输出加法器控制。

-计数器1(工作于16位模式):它可以将计数器0的输出值与一个可编程的初始计数值进行相加或相减。

它的输出可以用作计数器或分频器。

-计数器2(工作于8位模式):它通常用于分频器功能。

它可以接收来自外部引脚CLK2的时钟输入,并将其分频为不同的输出频率。

2.工作方式:- 定时器模式:8253可以工作在三种不同的定时器模式:比率发生器模式(Mode 0)、硬件单触发模式(Mode 1)和软件可编程单脉冲模式(Mode 2)。

在这些模式下,计数器的工作频率和输出信号的脉冲宽度都可以通过编程来设定。

-计数器模式:计数器1可以通过读取或写入操作来读取或设置计数器的值。

当计数器溢出时,可以触发中断。

-分频器模式:计数器2可以工作为一个分频器,将输入时钟分频为指定的输出频率。

在应用方面,8253的工作方式与内部结构密切相关。

通过编程设置不同的计数器模式和计数器值,可以实现各种计时和频率发生的功能。

例如,可以使用8253来测量时间间隔、生成周期性信号、控制器件的定时操作等。

总结起来,8253的内部结构由三个计数器模块组成,分别用于不同的定时和计数功能。

通过设置不同的模式和计数值,可以实现各种计时和频率发生的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hefei University微机原理与接口技术课程设计学科专业:自动化(3)班课程题目:数字电子钟完成时间:2011-1-12自动化专业微机原理课程设计任务书引言 (3)1.设计目的 (1)2.设计要求 (1)3.总体设计: (1)4.硬件设计: (2)4.1、8259A芯片的内部结构及引脚 (2)4.2、8255芯片的内部结构及引脚 (3)4.3、8253芯片的内部结构及引脚 (3)4.4.设计方案 (5)5.软件设计: (6)5.1原理框图 (6)5.2系统模块详细设计与调试 (6)5.3用定时器8253输出的脉冲 (7)5.4完整程序如下: (9)6.设计总结: (15)引言计算机的产生加快了人类改造世界的步伐,但是体积大,随着人们的生活越来越离不开计算机。

微型处理器在这种情况下应运而生。

纵观各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及生活中使用的各种智能IC卡、电子宠物等,这些都离不开微型计算机。

微机即是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。

它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

这次课程设计的题目是:数字电子钟的设计。

计时精确的电子钟在我们生活中能处处能见到。

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

通过对一个学期的微机原理与接口技术的学习,我们可以利用我们所学过的知识来实现数字电子钟的工作过程。

我们选择LED显示, 8253定时功能、8255基本输入输出的功能、8259的中断功能来实现数字电子钟的设计。

其中附有电路原理图,电路接线图和源程序。

因水平有限,难免有疏落不足之处,敬请指导老师批评指正。

1.设计目的熟悉编程及调试程序的方法。

掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。

掌握8255的各种工作方式及其应用编程。

掌握8253定时/计数器的工作原理、工作方式及其应用编程。

数码管的显示编程方法。

2.设计要求设计一个接口与七段LED显示器,显示一个计时时钟,显示初值为0,LED显示器循环显示时、分的动态值,具有校时校分功能。

3.总体设计:利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子钟的电路,并编制一程序使得该电子钟能正常运行。

电子钟除了能够完成正常的计时、显示功能外,还必须具备正常时、分、秒的数值显示功能、时间设定功能等。

绘制相应的硬件电路原理图并完成接线。

编制相应控制程序实现电子钟的计时、显示等功能。

控制程序设计规范,应有适当的注释,表达清楚。

钟的时分秒显示分别采用6个7段LED数码管实现。

利用8253做定时器,对其送入一个计数初值,然后将输出的脉冲送到的8259的IR0产生中断,在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循环中,采用8255芯片,利用LED显示时间,将8255的两个输出端口A口与B 口实现其位选与段选。

在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数器1可在方式3下工作。

时、分、秒分别对应6个存储单元,分别存放时、分、秒的个位和十位。

当中断来时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到了6,如到了则十位清零,分的个位加1,同理对分、时作相应处理。

七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的代码,利用缓冲区和延时子程序进行显示。

修改时间通过8255的C口低三位实现,当K1按下的时候将时间复位为初始时间00:00:00,当K2按下的一次将时位加1,当K3按下的一次将分位加1.4.硬件设计:4.1、8259A芯片的内部结构及引脚中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。

因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。

在MD微机系统中,8259芯片工作于单片方式。

8259引脚图如图3.3,各引脚功能如下。

D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0——地址信号;INT——中断请求信号;INTA(低电平有效)——中断响应信号;CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;SP/EN——从编程/允许级联。

在缓冲方式中,图3.1 8259A引脚图可用做输出信号以控制总线缓冲器的接收和发送。

在非缓冲方式中,作为输入信号用于表示主片还是从片;IR0~IR7——外部中断请求输入线。

要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。

4.2、8255芯片的内部结构及引脚8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:方式0—基本输入/输出方式方式1—选通输入/输出方式方式2—双向选通输入/输出方式8255引脚图如图3.2示,各引脚功能如下。

D7~D0——与CPU侧连接的八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器选择输入信号;PA7~PA0——A口外设双向数据线;图3.2 8255引脚图PB7~PB0——B口外设双向数据线;PC7~PC0——C口外设双向数据线;RESET——复位输入信号4.3、8253芯片的内部结构及引脚8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。

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——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。

4.4.设计方案在整个电子钟的设计中。

我们使用8253用于定时功能,由于8259的中断只能是电平与电缘触发,所以我们选择电缘触发。

由于我们选择一次写入计数初值后的能循环进行,所以我们选择工作方式2在每次的计数初值的N-1是产生一个脉冲。

在CLK0引脚接入10KHZ的时钟周期,而将计数初值写为10000时,继而在OUT0会在每1s产生脉冲,在控制字的时候采用十进制计数,所以其控制字为35H,所以8253能产生准确的计时功能。

8255A芯片,将8255A的A,B口均工作在工作方式0的下,且为输出控制LED的位选与片选,而C口用于修改时间用,同样工作于方式0低四位输出。

所以其控制字为81H。

8259A芯片用于产生中断信号去自动修改秒针。

所以只需将8259的IR0产生中断,其他未屏蔽,单片8259,上升沿中断,要写ICW4,中断号为20H,工作在8086/88方式。

硬件连接图:5.软件设计:5.1、原理框图上图为主程序流程图;5.2.系统模块详细设计与调试1.在主程序中要分别对8253、8259、8255进行初始化编程。

具体如下:8253的方式控制字:MOV AX,0MOV DS, AXMOV AL,35 HMOV DX,CONTROLOUT DX,AL利用8253计数器0:MOV AX,00HMOV DX,COUNT1OUT DX,ALMOV AX,00HOUT DX,AL8259初始化命令字和操作命令字:MOV DX,CS8259AMOV AL,ICW1OUT DX,ALMOV DX,CS8259BMOV AL,ICW2OUT DX,ALMOV AL,ICW4OUT DX,ALMOV AL,OCW1OUT DX,AL利用计算机内部8255:MOV AL,MD8255MOV DX,CTL8255OUT DX,AL5.3.用定时器8253输出的脉冲8259产生中断一次时、分、秒的处理。

中断服务程序详见程序中IENTER模块:IENTER PROC NEARPUSH AXPUSH DXINC SECOND ;秒加1MOV AL,SECONDCMP AL,60 ;秒数与60比较JNE EXITMOV SECOND,0 ;秒清零INC MINUTE ;分加1MOV AL,MINUTECMP AL,60 ;分数与60比较JNE EXITMOV MINUTE,0 ;分清零INC HOUR ;时加1MOV AL,HOURCMP AL,24 ;时数与24比较JNE EXITMOV HOUR,0 ;时清零利用按键K1,K2,K3修改时间程序:CHANGE PROC NEARMOV DX,34HIN AL.DX ;读入C口是否有键按下AND AL,07H ;屏蔽高5位CMP AL,07H ;检查是否全为零JZ EXIT ;没有键按下不需要修改退出CALL DELAY ;延迟20ms消键盘抖动IN AL,DX ;再次读入C口AND AL,07HCMP AL,07JZ EXIT ;确认第一次检查为干扰键盘退出MOV BL,AL ;不是干扰存开关量入寄存器BL RESET :AND AL,01H ;复位JZ MINMOV HOUR,00HMOV MINUTE,00HMOV SECOND,00HJMP EXITMIN: MOV AL,BLAND AL,02HJZ HOUINC MINUTEHOU: MOV AL,BLAND AL,04HINC HOUREXIT: NOPCHANGE EDNP5.4完整程序如下:MD8253 EQU 35H ;8253控制字CONTROL EQU 86H ;8253控制口COUNT0 EQU 80HCOUNT1 EQU 82HCOUNT2 EQU 84HMD8255 EQU 81H ;8255控制字CTL8255 EQU 36H ;8255控制口OUTBIT EQU 30H ;位控制口OUTSEG EQU 32H ;段控制口CHANGE EQU 34H ;C口地址用于修改时间ICW1 EQU 00010011B ;单片8259,上升沿中断,要写ICW4 ICW2 EQU 00100000B ;中断号为20HICW4 EQU 00000001B ;工作在8086/88方式OCW1 EQU 11111110B ;只响应INT0中断CS8259A EQU 0D000H ;8259地址CS8259B EQU 0D001HDATA SEGMENTCNT DB 0LEDBUF DB 6 DUP(?) ;显示缓冲NUM DB 1 DUP(?) ;显示的数据DELAYT DB 1 DUP(?)HOUR DB 0MINUTE DB 0SECOND DB 0LEDMAP ;七段管显示码DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATADELAY PROC NEAR ;延时子程序在显示时能供调用PUSH AXPUSH CXMOV AL,0MOV CX,AXLOOP $POP CXPOP AXRETDELAY ENDPCHANGE PROC NEARMOV DX,34HIN AL.DX ;读入C口是否有键按下AND AL,07H ;屏蔽高5位CMP AL,07H ;检查是否全为零JZ EXIT ;没有键按下不需要修改退出CALL DELAY ;延迟20ms消键盘抖动IN AL,DX ;再次读入C口AND AL,07HCMP AL,07JZ EXIT ;确认第一次检查为干扰键盘退出MOV BL,AL ;不是干扰存开关量入寄存器BL RESET :AND AL,01H ;复位JZ MINMOV HOUR,00HMOV MINUTE,00HMOV SECOND,00HJMP EXITMIN: MOV AL,BLAND AL,02HJZ HOUINC MINUTEHOU: MOV AL,BLAND AL,04HINC HOUREXIT: NOPCHANGE EDNPDISPLAYLED PROC NEARMOV BX,OFFSET LEDBUFMOV CL,6 ;共6个八段管MOV AH,00100000B ;从左边开始显示DLOOP:MOV DX,OUTBITMOV AL,0OUT DX,AL ;关所有八段管MOV AL,[BX]MOV DX,OUTSEGOUT DX,ALMOV DX,OUTBITMOV AL,AHOUT DX,AL ;显示一位八段管 PUSH AXMOV AH,1CALL DELAYPOP AXSHR AH,1INC BXDEC CLJNZ DLOOPMOV DX,OUTBITMOV AL,0OUT DX,AL ;关所有八段管RETDISPLAYLED ENDPIENTER PROC NEARPUSH AXPUSH DXINC SECOND ;秒加1MOV AL,SECONDCMP AL,60 ;秒数与60比较 JNE EXITMOV SECOND,0 ;秒清零INC MINUTE ;分加1MOV AL,MINUTECMP AL,60 ;分数与60比较 JNE EXITMOV MINUTE,0 ;分清零INC HOUR ;时加1MOV AL,HOURCMP AL,24 ;时数与24比较JNE EXITMOV HOUR,0 ;时清零EXIT:MOV DX,CS8259A ;结束中断MOV AL,20HOUT DX,ALPOP AX ;恢复AXIRETIENTER ENDPIINIT PROC NEAR ;初始化8259的命令字和操作命令字 MOV DX,CS8259AMOV AL,ICW1OUT DX,ALMOV DX,CS8259BMOV AL,ICW2OUT DX,ALMOV AL,ICW4OUT DX,ALMOV AL,OCW1OUT DX,ALRETIINIT ENDPSTART:MOV AX,DATAMOV DS,AXMOV HOUR,0 ;时、分、秒清零MOV MINUTE,0MOV SECOND,0CLI ;清除中断标志位MOV AX,0MOV DS,AXMOV AL,MD8253 ;8253控制字MOV DX,CONTROLOUT DX,ALMOV AL,00 ;利用8253计数器0MOV DX,COUNT0OUT DX,ALMOV AL,00OUT DX,AL ;两次写入,先写低字节,后写入高字节 MOV AL,MD8255 ;8255初始化MOV DX,CTL8255OUT DX,ALMOV BX,4*ICW2 ;中断号*4得到入口地址MOV AX,CODESHL AX,4 ;*16ADD AX,OFFSET IENTER ;中断入口地址(段地址为0)MOV [BX],AXMOV AX,0INC BXINC BXMOV [BX],AX ;代码段地址为0CALL IINITMOV AX,DATAMOV DS,AXSTI ;开中断LP: MOV AL,HOURMOV AH,0MOV CL,10DIV CLMOV CH,AHMOV AH,0MOV BX,OFFSET LEDMAPADD BX,AXMOV AL,[BX] ;时的十位转换成显示码MOV LEDBUF,AL ;显示码存入显示缓冲区MOV BX,OFFSET LEDMAPMOV AL,CHMOV AH,0ADD BX,AXMOV AL,[BX] ;时的个位转换成显示码OR AL,80HMOV LEDBUF+1,AL ;显示码存入后一位显示缓冲区 MOV AL,MINUTEMOV AH,0MOV CL,10DIV CLMOV CH,AHMOV AH,0MOV BX,OFFSET LEDMAPADD BX,AXMOV AL,[BX] ;分的十位转换成显示码MOV LEDBUF+2,ALMOV BX,OFFSET LEDMAPMOV AL,CHMOV AH,0ADD BX,AXMOV AL,[BX] ;分的个位转换成显示码OR AL,80HMOV LEDBUF+3,ALMOV AL,SECONDMOV AH,0MOV CL,10DIV CLMOV CH,AHMOV AH,0MOV BX,OFFSET LEDMAPADD BX,AXMOV AL,[BX] ;秒的十位转换成显示码MOV LEDBUF+4,ALMOV BX,OFFSET LEDMAPMOV AL,CHMOV AH,0ADD BX,AXMOV AL,[BX] ;分的个位转换成显示码OR AL,80HMOV LEDBUF+5,ALCALL DISPLAYLEDCALL CHANGE ;检查按键K1,K2,K3是否按下JMP LPCODE ENDSEND START6.设计总结:微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。

相关文档
最新文档