《基于单片机的电子日历设计1.doc》由会员分享,可在线阅读,更多相关《基于单片机的电子日历设计1.doc(35页珍藏版)》请在三一办公上搜索。
1、设计任务书设计题目: 基于单片机的电子日历设计设计要求:1.七段数码管正常显示阳历、阴历日期;2.七段数码管显示的格式为年-月-日;3.利用外部按键的操作实现阳历和阴历之间的转换;4.利用外部按键的操作实现阴历和阳历显示的暂停、运行等功能。设计进度要求:第一周:确定毕业设计题目第二周:查找资料第三周:收集和整理资料第四周:收集和整理资料第五周:完善设计内容、撰写报告第六周:上交设计论文电子稿第七周:修改论文第八周:论文答辩指导教师(签名): 毕业设计(论文)任务书 填表时间: (指导教师填表)学生姓名专业班级机电指导教师课题类型软件设计题目基于单片机的电子日历设计主要研究目标(或研究内容)本课
2、题在透彻了解电子日历的工作过程及功能的基础上,设计出简单实用的应用程序。主要内容有:1、开题报告;2、电子日历硬件设计;3、电子日历软件设计;4、编写说明书;5、翻译与设计有关的外文资料通过设计过程以考察学生的对于单片机的设计能力,并培养学生用以解决实际工程能力。课题要求、主要任务及数量(指图纸规格、张数,说明书页数、论文字数等)1、通过调查研究,撰写开题报告。2、通过分析论证,确定设计方案,正确绘制电子日历的硬件连接图;并且编制其应用程序。3、查阅20篇以上与题目相关的文献。4、按要求的格式独立撰写50008000字以上的说明书。5、翻译一篇本专业外文文献(500010000个以上印刷符号)
3、,并附译文进度计划57周,查阅资料,熟悉设计内容,拟订设计方案。814周,进行电子日历硬件设计,并编写其应用软件。1516周,修改完善设计,翻译资料,写说明书,准备答辩。主要参考文献1、单片机技术及应用2、单片机彻底研究实习篇3、单片机彻底研究基础篇4.单片机编程手册 指导教师签字: 教研室主任签字: 年 月 日摘 要设计以单片机AT89S51为核心部件的电子日历,利用74LS245作为驱动器,74LS138作为译码器使用,六个七段数码管均采用共阴极的方式,P0口作为段选码输出口,P2口作为位选码输出口。本次设计的题目是基于单片机的电子日历设计,可以正常的显示年、月、日,还可以利用外部按键实现
4、阴历和阳历之间的转换以及暂停等功能。电子日历具有性能稳定、精确度高、成本低、易于产品化,以及方便、实用等特点。适用于家庭、公司、机关等众多场所。为人们的日常生活、出行安排提供了方便,成为人们日常生活中不可缺少的一部分。本次设计可分为两部分:硬件系统、软件系统。硬件系统包括:AT89S51单片机、74LS245驱动器、74LS138译码器、RC复位电路、+5V直流电源电路、去抖电路、动态显示扫描电路。软件系统主要有单片机的编程构成。关键词:单片机,日历,位码,段码,显示Abstract Single-chip AT89S51 design as the core components of th
5、e electronic calendar, use as a 74LS245 drives, 74LS138 used as a decoder, six and seventh digits are a total of cathode way, P0 mouth as paragraph code output selection, P2 I, as bit selection code output. The design is based on the topic of single-chip design of the electronic calendar, you can sh
6、ow a normal year, month, day, can also be used to achieve external keys as well as conversion between阴阳历lunar and solar calendarsuspend functions. Electronic calendar with stable performance, high accuracy, low cost, ease of production, as well as convenient, practical and so on. Apply to families,
7、companies, agencies and many other places. For peoples daily life, travel arrangements, providing a convenient, daily life has become an indispensable part of. The design can be divided into two parts: hardware systems, software systems. Hardware system, including: AT89S51 Single-chip, 74LS245 drive
8、, 74LS138 decoder, RC reset circuit, +5 V DC power supply circuit, to stir up the circuit, dynamic display scanning circuit. There are single-chip microcomputer software system constitute the programming. Key words: single-chip, calendar, code, code above to show目 录摘 要II前 言11 设计方案111 设计思路112 系统总体框图1
9、2 硬件设计321 单片机AT89S51的简介322 动态显示电路的介绍823 去抖电路的工作原理1024 复位电路的方式1125 中断系统的介绍133 软件设计1531程序清单1532流程图21结 论26致 谢27参考文献28附 录29前 言随着社会不断的发展,科学技术不断的进步,单片机的问世和飞速发展掀起了计算机工程应用的一场新革命,使计算机技术冲破了实验室和机房的界限,广泛地应用于工业控制系统、数据采集系统、自动测试系统、智能仪表和接口以及各类功能模块等广阔的领域。单片机应用系统已经成为实现许多控制系统的常规性工具。我们说,单片机开辟了计算机应用的一个新时代是并不过分的。单片机的发展历史
10、虽然只有短短20年,但由于计算机科学和微电子集成技术的飞速发展,单片机自身也在不断地向更高层次和更大规模发展。世界各大半导体厂商纷至沓来争先挤入这一市场,激烈的市场竞争也促进了单片机迅速更新换代,带来了它们更为广泛的应用。由于单片机应用系统的高可靠性,硬、软件的高利用系数,优异的性能价格比,使它的应用范围由开始传统的过程控制,逐步进入数值处理、数字信号处理以及图像处理等高技术领域。我们在本次的设计中广泛用到了单片机的应用系统,下面我们就逐一的叙述。1 设计方案11 设计思路设计的题目是基于单片机的电子日历设计。根据设计要求日历显示正常的年、月、日,同时利用外部按键实现阴历和阳历之间的转换,以及
11、暂停等功能。要想实现上述功能,就必须将硬件系统和软件系统有机的结合在一起,方可实现我们设计任务中的各项要求。硬件系统主要有单片机AT89S51、74LS245驱动器、74LS138译码器、RC复位电路、独立式键盘接口去抖电路等。软件系统主要是单片机的编程。根据设计要求,电子日历要显示年、月、日就需要6个显示数码管,如(09年05月01日即显示为09-05-01),由于数码管的数量较多,必须采用动态显示扫描的方式。例如09-05-01,首先日分为个位和十位,个位显示到09时,应向日的十位自动进位,即个位清0,十位置1,显示为10,继续累计;当显示为31时,日的十位就自动向月的个位进位,显示为06
12、,当月显示到09时,月的个位自动向月的十位进位,个位清0,十位置1,即为10,当月至12时,月向年的个位进位,即显示08,同时月、日开始从01月01日继续显示,即显示为10-01-01,依次周而复始的循环运行。此外利用外部按键实现阴历和阳历的转换,当按下K1按键时,当前的阳历显示暂停,而由软件系统调用阴历的显示程序,即显示为阴历的日期;当按下K2键时,当前的显示暂停,松开按键时,当前的显示继续运行;当按下K3键时,显示的当前日期暂停。利用单片机将RC复位电路、动态显示电路、电源电路、去抖电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。12 系统总体框图硬件电路采用的是AT
13、89S51芯片来作CPU,显示部分采用74LS245作为驱动电路,74LS138作为译码器使用,七段共阴极数码管作为显示部分,采用RC复位电路以及独立式键盘接口电路去抖的方法来完成此次的设计。在确定系统的形式后,画出本系统的总体框图,如图1.1所示: 图1.1 系统框图系统总体框图包括:单片机、电源电路、复位电路、显示电路、去抖电路。单片机AT89S51芯片的主要功能是:存储程序,对存储程序进行相应的处理,并从I/O口输出;复位电路:在单片机上有一个复位引脚REST,在单片机外部用电容和电阻控制REST;电源电路:采用+5V的直流电源供电;显示电路:主要用于显示日历的结果;去抖电路:消除外部按
14、键按下时的抖动造成的误操作。2 硬件设计硬件电路主要包括:单片机、去抖电路、显示电路、复位电路、电源电路等。单片机的选择:选用AT89S51芯片, P0.0-P0.7作为段选码输出口,P2.1-P2.3作为位选码输出口。去抖电路的选择:采用独立式键盘电路;显示电路的选择:采用动态扫描显示,共阴极七段数码管;复位电路的选择:RC复位电路;电源电路的选择:+5V直流电源。21 单片机AT89S51的简介211 AT89S51简介1.AT89S51是一种低功耗,高性能的片内含有4KB的快闪可编程/擦处只读存储器(FPEROM-Flash Programmable and Erasable Read
15、only Memory )的8位COMS微控制器,使用高密度、非易失存储技术改造,并且与AT80C51引脚和指令系统完全兼容。芯片上的FPEROM 允许在线编程或者采用通用的非易失存储编程器对存储器重复编程。AT89S51具有多种的8位CPU与FPEROM 结合在一个芯片上,为很多嵌入式控制应用提供了非常灵活而有方便的方案,其性能价格比远低于AT87C51。由于片内带EPROM 的AT87C51价格偏高,而片内带EPROM的AT89S51价格低且与AT80S51兼容,这就显示了AT89S51的优越性。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器
16、可以反复擦除100次,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单一芯片上,ATMEL的AT89S51是一种高效微控制器,AT89C2051是它的一个精简版本。AT89S51单片机可以为很多嵌入式控制系统提供一种灵活性高且价格低廉的方案。212 AT89S51内部资源1.中央处理器(CPU)CPU是单片机内部的核心部件,是一个8位二进制数的中央处理单元,主要有运算器和控制器构成。运算器用来完成算术运算、逻辑运算、位变量处理和数据传送等功能。它是89S51内部处理各种信息的主要部件,运算器主要有算术
17、运算和逻辑运算组成。算术逻辑单元,89S51中算术逻辑单元由加法器和一个布尔处理器组成。主要是实现8位数据的加、减、乘、除算术运算和与、或、异或、循环、求反等逻辑运算;布尔处理器主要用来处理位操作,它是以进位标志位C为累加器的,可执行置位、复位、取反、等于1转移、等于0转移、等于1转移且清0以及进位标志位与其他位寻址的位之间进行数据传送等位操作,也能使进位标志位与其他可以寻址的位之间逻辑与、或操作。控制器:控制器是单片机内部各部件按一定时序协调工作的控制核心。是分析和执行指令的部件,控制器主要有程序计数器PC、指令寄存器IR、指令译码器ID、振荡器和定时控制逻辑电路等构成。程序计数器PC是专门
18、用于存放下一条将要执行指令的16位地址的一个部件,由8位计数器PCH(高8位)和PCL(低8位)组成。CPU就是根据PC中的地址到ROM中去读取程序指令码和数据。指令寄存器IR是用于存放CPU根据PC地址从ROM中读出的指令操作码并送给ID。指令译码器ID是用于分析指令操作的部件,指令操作码经译码后送至定时控制电路,产生一定序列的脉冲信号,来执行指令规定的操作。振荡器及定时控制逻辑电路,在它们外接石英晶体和微调电容(230pF),即可以产生1.2-12Mhz的脉冲信号,作为89S51工作的基本节拍。2存储器89S51单片机内部有128B的RAM数据存储器和4KB的掩膜式ROM,当不够使用时,可
19、以分别扩展为64KB外部RAM存储器和64KB外部程序存储器。程序存储器是可读不可写的,用于存放编好的程序和表格常数。数据存储器是既可以读也可以写的,用于存放运算的中间结果,进行数据暂存及数据缓冲等。3定时/计数器89S51内部有2个16位可编程定时器/计数器,简称为定时器0(T0)和定时器1(T1),T0和T1分别有两个8位寄存器构成,其中T0由TH0(高8位)和TL0(低8位)构成。T1由TH1(高8位)和TL1(低8位)构成。4中断控制系统 单片机的中断是指CPU暂停正在执行的原程序转而为中断源服务,在执行完中断服务程序后再回到原程序继续执行。中断系统是指能够处理中断过程部分的电路。89
20、S51单片机设有5个中断源(外中断2个,定时/计数中断2个,串行中断1个),2个优先级,可以实现两级中断嵌套。5内部总线总线是用于传送信息的公共通道。总线可以分为数据总线、地址总线、控制总线。单片机内的CPU、存储器、I/O接口等单元部件都是通过总线连接到一起的,采用总线结构可以减少信息传输线的根数,提高系统可靠性,增强系统灵活性。213 AT89S51性能及特点(1)与MCS-51微控制器产品兼容(2)片内有4KB可以在线重复编程的快闪擦写存储器(Flash Memory)(3)存储器可以循环写入/擦除100次(4)存储器数据可以保存时间为10年(5)较宽的工作电压范围:VCC可以为2.7-
21、6V(6)全静态工作 (7) 程序存储器具有3级加密保护(8)128*8位内部RAM(9)32条可编程I/O接口(10)2个16位定时/计数器(11)终端结构具有5个中断源和2个优先级(12)可编程全双工串行通道(13)空闲状态维持低功耗和掉电状态保存存储内容由于EPROM具有在线改写,并且在掉电状态下保存数据的特点,可以为用户的特殊应用提供方便。但是擦除和写入对于要求数据高速吞吐的应用还显的时间过长,这就是EPROM芯片的主要缺陷。AT89S51的内部硬件结构中除了程序存储器由FPEROM取代了87C51的EPROM外,其余部分完全相同。AT89S51的引脚和AT8051的引脚完全兼容。AT
22、89S51的引脚图如下图2.1所示:图2.1 AT89S51芯片引脚图Pin40: 电源脚,工作电压为+5VPin20:接地端P0口:P0口为一个8位漏极开路的双向I/O口,每脚可以吸收8TTL门电流。当P0口的管脚第一次写“1”时,被定义为高阻输入,P0口能够用于外部数据存储器,它可以被定义为数据/地址的第八位,在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0口输出原码,此时,P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流,P1口管脚写入1时,被内部上拉为高,可用作输出,P1口被外部下拉为低电平时,将输出
23、电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可以接收、输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。因此作为输入时,P2口的管脚被外部拉低,将输出电流,这就是内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位,。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收八位地址信号和控制信号。P3口:P3口管脚是8个带
24、内部上拉电阻的双向I/O口,可以接收输出4个TTL门电流。当P3口写入“1”时,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平;P3口将输出电流,这就是上拉的缘故。P3口也可以作为AT89S51的一些特殊功能口,如下所示:P3.0: RXD (串行输入口)P3.1: TXD (串行输出口)P3.2: (外部中断0)P3.3: (外部中断1)P3.4:T0 (定时/计数器0)P3.5: T1 (定时/计数器1)P3.6: (外部数据存储器写选通线)P3.7: (外部数据存储器读选通线)P3口同时为闪烁编程和编程校验接收一些控制信号RET 复位输出:当振荡器复位时,要保持RET
25、脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出脉冲信号,此频率为振荡器频率的1/6,因此它用作对外部输出的脉冲或用于定时目的。然而应注意的是,每当用作外部数据存储器时,将跳过一个ALE脉冲,如想禁止ALE的输出可在数据地址上置0。此时,ALE只有在执行MOVX、MOVC指令时ALE才其作用。另外,该引脚被略微拉高,如果处理器在外部执行状态ALE禁止,置位无效。XTAL1:反向振荡器的输入及内部时钟工作电路的输入XTAL2:来自反向振荡器的输出振荡器
26、特性:XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器,石英振荡器和陶瓷振荡器均可采用,如果采用外部时钟源驱动器件,XTAL2应不连接,有余的输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉冲没有任何严格的要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM系列和三个锁定位的电擦除可通过正确的控制信号组合,并保证ALE管脚处于低电平,在芯片擦除操作中,代码阵列全被写“1”,且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89S51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模
27、式下,CPU停止工作,但RAM、定时器、计数器、串口和中断系统仍工作;在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用芯片的其他功能,直到下一个硬件复位为止。为了满足一些应用系统的特殊要求,如在一些工业控制中系统中,有时要进行一些系统的扩展设计以弥补单片机内部资源的不足。单片机的扩展系统通过并行I/O接口作总线,在外部扩展程序存储器、数据存储器或输入输出接口以及其他功能的部件以满足一些控制系统的特殊要求。22 动态显示电路的介绍LED动态显示就是利用单片机依次输出每一位数码管的段选码和对应于该位数码管的位选控制信号,一位一位轮流点亮各七段数码管。对于数码管来说,每隔一段时间点亮一次,如此
28、循环,利用人眼的“视觉暂留”效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。在动态显示方式中,同一时刻,只有一位LED数码管在显示,其他各位是关闭的。在段选码和位选码每送出一次后,应保持1ms左右,这个时间应根据实际情况而定,不能太小,因为发光二极管从导通到发光有一定的延时,导通时间太小,发光太弱,人眼无法看清,但是也不能太大,因为毕竟要受限于临界闪烁频率,而且此时间越长,占用CPU时间也就越多。1. 采用动态显示方式比较节省I/O接口,硬件电路也比静态显示方式简单,在此次的设计中我们利用89S51作为I/O接口,六个七段数码管均采用共阴极的方式显示,P0口作为段选码输出口使用,P2口
29、作为位选码输出口使用,它们的显示缓冲区分别为:MOV 30H,#01H MOV 40H,#05HMOV 31H,#00H MOV 41H,#01HMOV 32H,#05H MOV 42H,#03HMOV 33H,#00H MOV 43H,#00HMOV 34H,#07H MOV 44H,#07HMOV 35H,#00H MOV 45H,#00H2显示部分我们利用动态显示电路,而其显示电路中的驱动部分我们则采用一片74LS245芯片作为驱动部分,来完成电路的动态显示。374LS245是一种三态输出的8总线收发驱动器,无锁存功能。它的端和DIP端是控制端,当它的端为低电平时,如果DIP为高电平,则
30、74LS245将A端数据传送至B端;如果DIP为低电平,则74LS245将B端数据传送至A端。在其他情况下不传送数据,并输出高阻态,它的引脚图如下图2.2所示,其功能表如表2.1所示。 474LS138是一种3-8译码器,其中G1、G2A、G2B脚为使能端,只有G1为高电平时,G2A、G2B为低电平时,译码器才可以使用。A、B、C为译码器的信号输入端,Y0-Y7为译码器的输出端,低电平有效。74LS138译码器如图2.3所示:图2.3 74LS138译码器23 去抖电路的工作原理1. 目前,MCS-51单片机应用系统上常采用键盘作为输入设备,通过键盘的操作将数据、内存地址、命令及指令等输入系统
31、中,来实现简单的人机通信。MCS-51单片机在应用系统上的按键常用机械触点式按键,它在闭合及断开的瞬间均有抖动的过程,时间长短与开关的机械特性有关。一般为510ms,由于抖动会造成被查询的开关状态无法正确读出,造成误操作。为了保证CPU对按键的一次闭合仅在按键稳定时作一次键输入处理,必须消除产生的(前沿)后沿的抖动影响,在本次设计中我们采用独立式键盘接口电路的方式来消除按键抖动的现象。2. 独立式键盘的接口电路独立式键盘的接口电路:在单片机应用系统中,有时只需要几个简单的按键向系统输入信息。这时,可将每个按键直接接在一根I/O接口线上,这种连接方式的键盘称为独立式键盘。每个独立按键单独占有一根
32、I/O接口线,每根I/O接口线的工作状态不会影响到其他I/O接口线。这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O线,I/O接口线浪费较大。在此电路中,按键输入都采用低电平有效。上拉电阻保证了按键断开时,I/O接口线有确定的高电平。当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻。如图2.4所示: 图2.4 独立式键盘接口电路24 复位电路的方式1单片机在开机时或者在工作中因干扰而使程序失控,或工作中程序处于某死循环状态,在这些情况下都需要复位,复位的作用是使中央处理器CPU以及其他功能部件都需要恢复到一个确定的初始状态,并从这个状态重新开始工作。289S51单片机
33、的复位靠外部的电路实现,信号由REST引脚输入,高电平有效,在振荡器工作时,主要保持REST引脚高电平两个机器周期,单片机即复位,复位后,PC程序计数器的内容为0000H。3智能系统一般应有手动或上电复位电路。复位电路可以采用简单的电阻,电容及按键开关构成上电自动复位电路入图2.5所示,而手动复位电路如图2.6所示,也可以选择专用的复位芯片。复位电路的实现通常有两种方式:即专用P监控电路和RC 复位电路。前者成本较高,但复位可靠性高,尤其是高可靠重复复位;后者电路实现简单,成本低,但复位可靠性相对较低。对于复位要求高、并对电源电压进行监视的场合,大多采用前者复位电路。图2.5 上电自动复位电路
34、图2.6 手动复位电路(1)专用监控P电路专用P监控电路又称为电源监视电路,具有上电时可以产生复位信号和电源电压跌落到“门槛值”时可以产生复位信号等功能。按有效电平分,有高电平输出、低电平输出两种;按功能分,有简单的电源监视复位电路、带“看门狗”定时器(WATCH DOG TIMER,WDT)的监控电路和WDT + E2PROM的监控电路等多种类型。比较常见的生产厂家有MAXIM、Philips、IMP 及DALLS 等,51系列微处理器中常用的型号有MAX8l3L、MAX8O9、X25043/5等。(2)RC复位电路本次设计采用的是RC复位方式。RC复位电路的实质是一阶充放电电路,结合图2.
35、7说明这种复位电路的特点。系统上电时该电路提供有效的复位信号RST(高电平)直至系统电源稳定后撤销复位信号(低电平)。从理论上说,51系列单片机复位引脚只要外加两个机器周期的有效信号即可复位,即只要保证t=RC 2M(机器周期)便可。但在实际设计中,通常C1取值为10F以上, Rl 通常取值10k左右。实践发现,Rl如果取值太小,例如lk,则会导致RST信号驱动能力变差而无法使系统可靠复位。图2.7 RC复位电路25 中断系统的介绍中断技术是计算机中在实时处理和实时控制中不可缺少的一个很重要的技术。它既和硬件有关,也和软件有关。而且中断是现代计算机必须具备的重要功能,也是计算机发展史上的一个里
36、程碑。1.中断的概念当计算机执行正常程序时,系统中出现了某种急需处理的异常情况和特殊请求,这时CPU暂时终止当时正在执行的程序,转而去对随机发生的紧迫事件进行处理(执行中断服务程序),待该事件处理完毕,CPU自动的返回到原来被中断的程序继续执行,这个过程称为“中断”。2.中断的作用(1)实现同步工作:计算机有了中断功能后,就解决了快速CPU与低速外设之间的矛盾,可以使CPU和外设同时工作。CPU启动外设后,继续执行主程序,同时外设也在工作。当外设把数据准备好后,就发出中断请求,请求CPU中断正在执行的程序,转而执行中断服务程序(I/O处理),中断服务程序执行完后,CPU恢复执行主程序,外设也继
37、续工作。这样,CPU可以指挥多个外设同时工作,从而大大提高了CPU的效率。(2)实现实时处理:在实时控制系统中,为使控制系统能保持在最佳的工作状态,被控系统的各种控制参量可随时向计算机发出中断请求,要求CPU处理。对此,CPU必须作出快速响应和及时处理,这种实时控制功能只有靠中断技术才能实现。(3)实现故障处理:若计算机在运行过程中出现了事先预料不到的情况或故障时,如电源掉电、存储出错、传输错误等,可以利用中断系统自行处理,而不必停机。3.中断系统的功能(1)进行中断优先权的排队(2)实现中断嵌套(3)自动响应中断并返回4.89S51的中断请求源89S51有5个中断源,它们是2个外部中断、2个
38、定时器中断和一个串行接口中断。它们分别是外部中断0、定时/计数器0、外部中断1、定时/计数器1和串行接口中断。它们的中断向量表如下表2.2所示:中断向量表2.2中断源入口地址外部中断00003H定时/计数器T0000BH外部中断10013H定时/计数器T1001BH串行接口中断0023H3 软件设计31程序清单ORG 0000HLJMP MAINORG 000BH ;定时器T1入口地址LJMP CTCO1ORG 001BH ;定时器T2入口地址LJMP CTCO2ORG 0030HMAIN:MOV 30H,#01HMOV 31H,#00HMOV 32H,#05HMOV 33H,#00HMOV
39、34H,#07HMOV 35H,#00H ;显示初始化MOV 40H,#05HMOV 41H,#01HMOV 42H,#03HMOV 43H,#00HMOV 44H,#07HMOV 45H,#00H ;显示初始化MOV R3,#10MOV R4,#10MOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV TH1,#3CHMOV TL1,#0B0HSETB EASETB ET0SETB TR0SETB ET1SETB TR1NEXT:JB P1.0,MMM ;判P1.0是否等于1?LCALL DISPLAY1 ;调阳历显示程序MMM:LACLL DEALY ;调用延
40、时程序LCALL DISPLAY2 ;调阴历显示程序JB P1.1,WWW ;判位P1.1是否等于1?SJMP NEXT ;中断返回WWW:CLR EA ;暂停JB P1.2,QQQ ;判P1.2是否等于1?CLR EA ;暂停QQQ:SETB EA ;开启定时SJMP NEXTCTCO1:PUSH ACC ;开启中断1PUSH PSWDJNZ R3,BACK1 ;减1不为0转移MOV R3,#10HINC 30HMOV A,31HCJNE A,#03H,LOOP9 ;判断十位是否等于3?MOV A,30HCJNE A,#02H,BACK1 ;判断个位是否等于01?MOV 30H,#01HMO
41、V 31H,#00HSJMP BACK1LOOP9:MOV A,30HCJNE A,#0AH,BACK1 ;判断个位是否等于10?INC 31H ;十位加1MOV A,31HMOV 30H,#00H ;个位清0SJMP BACK1BACK1:MOV TH0,#3CHMOV TL0,#0B0H ;重装初值,恢复现场POP PSWPOP ACCRETI ;中断返回CTCO2:PUSH ACC ;开启中断2PUSH PSWDJNZ R4,BACK2MOV R4,#10INC 40HMOV A,42HCJNE A,#04H,LOOP1 ;判断百位是否等于4?MOV A,41HCJNE A,#02H,L
42、OOP3 ;判断十位是否等于1?MOV A,40HCJNE A,#07H,BACK2 ;判断个位是否等于6?MOV 40H,#05HMOV 41H,#01HMOV 42H,#03HSJMP BACK2LOOP1:MOV A,41HCJNE A,#03H,LOOP3 ;判断十位是否等于3?MOV A,40HCJNE A,#02H,BACK2 ;判断个位是否等于1?INC 42H ;百位置1MOV 41H,#00H ;十位清0MOV 40H,#01H ;个位置1SJMP BACK2LOOP2:MOV A,40HCJNE A,#0AH,BACK2 ;判断个位是否等于10?INC 41H ;十位加1MOV 40H,#00H ;个位清0SJMP LOOP1LOOP3:MOV A,40HCJNE A,#0AH,BACK2 ;判断个位是否等于10?INC 41H ;十位加1MOV 40H,#00H