《本科毕业设计--基于单片机的时钟设计.doc》由会员分享,可在线阅读,更多相关《本科毕业设计--基于单片机的时钟设计.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 兰州文理学院学生毕业论文 题 目: 基于单片机的时钟设计 摘要:本文设计的是基于单片机的时钟设计。该设计主要利用单片机来实现其功能,在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数,并采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置,具有显示时间的基本功能,还可以实现对时间的调整,时钟走时精度高,使用方便,功能多,便于集成化,在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的
2、设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。实验证明效果良好,可以投入使用。因此,设计开发时钟具有良好的应用前景。关键词:单片机;时钟;定时器;数码管Abstract: This design is the clock design based on mcu. The design mainly uses single chip to achieve its function, in this design, we use LED digital display hours,minutes, seconds, to 24
3、 hour time, according to the principle of dynamic display of digital tube to display, use the 12MHz crystal oscillation pulse, the timer count,and a digital circuit implementation of the when, sub, seconds the figures show that the timing device, can display the basic function of time, also can real
4、ize the adjustment of the time, the clock of high precision, convenient use,multiple functions, easy integration, based on introducing the development situation of the micro controller, the design and implementation of the function, as well as the experimental board hardware conditions, and the func
5、tion of each circuit are analyzed. The main work in the software programming, using experimental board to realize the time, date, time and setting of their functions,the software programming and debugging process in detail are described, and the timing error analysis and correction, the timing and t
6、one and display conflict problems and solutions. The experiment proved that the effect is good, can be put into use. Therefore, the design and development of the clock has a good application prospect.Keywords: single chip microcomputer; clock; timer; digital tube目录0 引言- 2 -1 设计任务分析- 2 -1.1电子时钟的背景- 2
7、 -1.2 设计意义- 3 -1.3 时钟的应用- 3 -2 单片机的选择.- 3 -3 系统功能及操作- 5 -3.1 系统功能的确定- 5 -3.1.1 基本功能- 5 -3.1.2 扩展功能- 5 -3.2 系统操作说明- 6 -4 系统硬件设计- 6 -4.1 芯片的选择- 6 -4.2 实验板电路原理图- 7 -4.3 功能电路分析- 8 -4.3.1 时钟电路- 8 -4.3.2 复位电路- 8 -4.3.3 键盘电路- 9 -4.3.4 数码显示电路- 9 -4.3.5 蜂鸣器电路- 10 -5 系统软件设计- 10 -5.1 数据单元分配- 11 -5.1.1 数据存储单元分配
8、- 11 -5.1.2 标志位单元分配- 11 -5.2 计时时钟实现的基本方法- 11 -5.3 实现时钟程序设计步骤- 11 -5.3.1 主程序模块设计- 12 -5.3.2 计时子程序模块的实现- 12 -5.3.3 显示子程序模块的实现- 13 -5.3.4 时钟设定子程序模块的实现- 13 -5.3.5 日期、定时设定子程序模块的实现- 13 -5.4 程序说明- 13 -5.4.1 定时器初值计算- 13 -5.4.2 程序初始化- 13 -5.4.3 误差分析及校正- 13 -5.4.4 实现闪动设定- 13 -5.4.5 实现连续加1- 14 -5.4.6 定时音与显示相冲突
9、问题及解决方案- 14 -6 设计程序- 14 -7 系统调试与功能说明- 25 -7.1 硬盘调试- 25 -7.2 系统性能测试与功能说明- 26 -7.3 系统时钟误差分析- 26 -7.4 软件调试问题及解决- 26 -结束语- 27 -致谢- 27 -参考文献- 27 -0 引言在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性价比的不断提高,新一代产品的应用也越来越广泛。大则可以构成复杂的工业过程控制系统,完成复杂的控制功能;
10、小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大、体积小、质量轻、灵活好用,配以适当的接口芯片,可以构成各种各样、功能各异的微电子产品。随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。这些具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。 根据这种实际情况,本文设计了一个单片机多功能时钟系统,它有基本的时间功能,还有定时功能,既可作为闹铃,也可扩展为定时对家电等电气产品的自动控制,可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制;可增加温度传感器,进行实时温度显示,进一步扩展为利
11、用不同的温度某些电气产品进行自动控制;也可增加湿度传感器,进行实时湿度显示,以便对湿度进行控制,方便人们的生活。1 设计任务分析1.1电子时钟的背景 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS
12、化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。1.2 设计意义在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。
13、早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性价比的不断提高,新一代产品的应用也越来越广泛。大则可以构成复杂的工业过程控制系统,完成复杂的控制功能;小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大、体积小、质量轻、灵活好用,配以适当的接口芯片,可以构成各种各样、功能各异的微电子产品。随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。这些具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。根据这种实际情
14、况,设计了一个单片机多功能时钟系统,它有基本的时间功能,还有定时功能,既可作为闹铃,也可扩展为定时对家电等电气产品的自动控制,可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制;可增加温度传感器,进行实时温度显示,进一步扩展为利用不同的温度某些电气产品进行自动控制;也可增加湿度传感器,进行实时湿度显示,以便对湿度进行控制,方便人们的生活。1.3 时钟的应用 时钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带
15、方便等优点,它还用于计时、自动报时及自动控制等各个领域。2 单片机的选择 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:1、多功能 单片机中尽可能地把所需要的存储器和
16、I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、高速I/O口及计数器的捕获/比较逻辑等。 有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器、SMART CARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。2、高效率和高性能 为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高
17、;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。 由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发 难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3、低电压和低功耗 单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。4、低价格 单片机应用面广,使用数量
18、大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。下面大致介绍一下单片机的主要应用领域和特点。(1)家用电器领域 用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。(2)办公自动化领域 单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。(3)商业应用领域 商业应用系统部分与家用和办公应用系统相似,但更加注重设备的稳定性、可靠性和安全性。商用系统中广泛使用的电子计量仪器、收款机、条形码阅读器、安
19、全监测系统、空气调节系统和冷冻保鲜系统等,都采用了单片机构成的专用系统。与通用计算机相比,这些系统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。(4)工业自动化 在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都是以单片机为核心的单片机和多机系统。(5)智能仪表与集成智能传感器 目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。将单片机和传感器相结合,可以构成新一代的智能传感器。它将传感器变换后的物理量作进一步的变化和处理,使其成为数字信号,可以远距离传输并与计算机接口。(6)现代交通与航空航天
20、领域通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高,因此采用单片机系统更加重要。3 系统功能及操作3.1 系统功能的确定3.1.1 基本功能系统具有时间、日期、三路定时功能,并可以对时间、日期、定时进行设定,有定时提示音。要求计时精度尽量提高。显示格式为:时间:“时”(第1、2位)、“分”(第3、4位)、“秒”(第5、6位);日期:“年”(第1、2位,如2007年显示为07)、“月”(第3、4位)、“日” (第5、6位);定时:“时”(第1、2位)、“分”(第3、4位)、“状态标志”(第5、6位
21、)。键盘及数码管排列如图2-1所示。3.1.2 扩展功能该系统可以增加温度传感器,实现温度测量,以实时显示温度,用1、2位数码管显示;还可以增加湿度传感器,实现湿度测量,以实时显示湿度,用5、6位数码管显示。多路定时器功能也可扩展为对多种家电等电气产品的自动控制,比如电饭煲等;也可利用温度对某些电气产品进行自动控制,比如空调等;还可利用湿度传感器对湿度进行调节。如图3-1所示。图3-1 系统功能图3.2 系统操作说明(1)按K1键显示日期,3秒后自动返回时间显示,3秒内按K2键进入日期设置,此时年位闪烁,按K1键进行年位加1或连续加1调整。按K2键依次切换到月位、日位,分别按K1键进行月位、日
22、位调整,日位设置好后,再按K2键保存日期设定值,并返回显示时间。(2)按K2键大于1秒进入时间设置,此时小时位闪烁,秒位自动清零,按K1键进行小时调整,按K2键切换到分钟位,按K1键进行分钟调整,分位设置好后,再按K2键保存时间设定值,并返回显示时间,按所设定的时间值进行计时。(3)连续按K3键显示3路定时及其开关状态,当显示某一路定时时,3秒后自动返回时间显示,3秒内按K2键进入定时设置,设置同日期(5、6位显示00为当路定时关,显示01为当路定时开)。当路定时设置完后按K2键保存定时设定值并返回时间显示。(4)按K4键显示实时温度和湿度,5秒后自动返回时间显示。4 系统硬件设计4.1 芯片
23、的选择本设计选用AT89S52芯片,它是一种低功耗、高性能CMOS 8位微控制器,具有8K(0000H1FFFH)在线系统可编程Flash存储器。片上Flash允许程序存储器在线编程,也适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供灵活、高效的解决方案。AT89S52具有以下标准功能:8K(0000H1FFFH)Flash,256字节(00HFFH)数据存储器(RAM),64K(0000HFFFFH)程序存储器(ROM),32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全
24、双工串行口内晶振及时钟电路。其中,数据存储器(RAM)用于存放各种运算的中间结果,作缓存和数据暂存,以及设置特征标志等。AT89S52的片内数据存储器用位寻址方式,最大寻址范围为256字节(00HFFH)。按使用情况不同可分成低128字节(00H7FH)和高128字节(80HFFH)。其中低128字节为真正的RAM存储器,高128字节为特殊功能寄存器(SFR)区,如累加器ACC、程序状态字PSW、数据指针DPTR、程序计数器PC等。整个片内RAM区分布如图4-1所示。图4-1 片内RAM区4.2 实验板电路原理图实验板电路结构框图如图4-2所示,原理电路图如图4-3所示。图4-2 实验板结构框
25、图图4-3 实验板原理图4.3 功能电路分析4.3.1 时钟电路实验板的时钟振荡源电路如图4-4所示。其中JT 为11.0592MHz 的晶振,改变两电容CB的值即可对此晶振频率进行调节。该电路提供单片机工作所需的振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以对波特率进行计算。图 4-4 时钟电路4.3.2 复位电路如图4-5所示为实验板的复位电路,当RESET 信号为低电平时,实验板为工作状态,当RESET信号为高电平时,实验板为复位或下载程序状态。由于AT89S52具有ISP 的功能,即可以通过并口线直接将程序下载到单片机内,因此, AT89S52 具有两种状态,下载
26、程序状态和运行状态。该复位电路能实现上电自动复位,也能手动复位,一般复位时RESET应保持20毫秒以上高电平,此复位时间由接地电容控制。图 4-5 复位电路4.3.3 键盘电路如图4-6所示为阵列按键电路,各设置及转换信号由此电路输入,实验板提供了16个按键,由P1口经SN74F244(驱动芯片)输出扩展成44的阵列按键,P1.0P1.3为行线,P1.4P1.7为列线。SN74F244有一片选信号线,当此口线为低电平时,A1A4与Y1Y4接通,反之,A1A4与Y1Y4断开。此键盘用扫描工作方式,若有键按下,则相应位端口被拉低为低电平,由于本系统只用了4个按键,所以只需对4个按键进行扫描。扫描时
27、,先置P3.3口为高电平,向P1口送0EFH(MOV P1,#0EFH),再置P3.3口为低电平,读P1口(MOV A,P1),最后判断P1口低4位哪位是低电平,若某位为低电平,则相应按键被按下,如P1.0为低电平(ACC.0=0),则K1键被按下。图 4-6 阵列按键4.3.4 数码显示电路如图4-7所示为数码显示电路,实验板使用了6个共阳数码管,P0口为段码信号线,B1B6为位控线,是P1口经SN74F573(反向驱动芯片,即输入为高电平,则输出为低电平,反之则输出为高电平,该芯片也有一片选信号C,当此信号为高电平时有效)反向得到,再由B1B6控制晶体管Q1Q6,以达到控制每位数码管的目的
28、。系统采用动态显示,先向P0口送第一位数码管需要显示的段码值,再给P1口送0FEH,延时1毫秒使第一位数码管显示,又向P0口送第二位数码管需要显示的段码值,P1口送0FDH,延时1毫秒,使第二位数码管显示。依次递推,直到最后一位数码管,然后再循环。改变延时时长可以调节数码管显示的亮度,由于单片机执行速度很快(微秒级),所以看上去数码管一直亮着。图 4-7 数码显示电路4.3.5 蜂鸣器电路其硬件原理图如图4-8所示。此电路用于定时时发出提示音。SPEAKER与P3.2口相连,当SPEAKER输出高电平时蜂鸣器不响,而SPEAKER输出低电平时蜂鸣器发出响声。只需控制SPEAKER输出高低电平的
29、时间和变化频率,就可以让蜂鸣器发出不同的声音。此电路用于产生定时器提示音。图 4-8 蜂鸣器电路5 系统软件设计系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配
30、系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性。5.1 数据单元分配5.1.1 数据存储单元分配数据存储单元分配如下表所示:项目秒分时日月年存储单元30H31H32H33H34H35H项目定时1:开关定时1:分定时1:时定时2:开关定时2:分定时2:时存储单元36H37H38H39H3AH3BH项目定时3:开关定时3:分定时3:时存显示首地址堆栈起始单元存储单元3CH3DH3EH3FH50H5.1.2 标志位单元分配 标志位单元(20H)分配如下表所示:位单元项目位单元项目01H1、2位数码管闪烁标志位08H定时1显示标志位02H09H定
31、时2显示标志位03H3、4位数码管闪烁标志位0AH定时3显示标志位04H0BH定时1响铃标志位05H5、6位数码管显示标志位0CH定时2响铃标志位06H0DH定时3响铃标志位07H日期显示标志位0EH总响铃标志位5.2 计时时钟实现的基本方法时钟的最小计时单位是秒,使用定时器的方式1,最大的定时时间也只能达到131毫秒。可把定时器的定时时间定为50毫秒,这样,计数溢出20次即可得到时钟的最小计时单位秒。计数20次可以用软件实现,对定时器溢出次数进行计数,计满20次即为1秒。从秒到分,从分到时,以及日、月、年都是通过软件累加并进行比较的方法实现的。5.3 实现时钟程序设计步骤系统采用模块化结构,
32、主程序只需调用各个子程序模块即可实现相应功能。其模块结构图如图5-1所示。 图5-1 程序各模块方框图5.3.1 主程序模块设计整个程序进行模块化设计,主程序只需调用相应的程序即可。主程序流程如图5-2所示。 图5-2 主程序流程图5.3.2 计时子程序模块的实现当T0中断时,执行本程序,因T0设为50毫秒中断,故中断20次为1秒。中断程序分别有20次计数(1秒),60次计数(1分),60次计数(1小时),24次计数(1天),28、29、30、31次计数(1个月),12次计数(1年)。当前位到设定数值时写0或1,下一位加1。由于本世纪是21世纪,年位前两位是4的倍数,故判断闰年时只需对年的后两
33、位进行计算,能被4整除为闰年,否则为平年,年位只进行加1,大于99时又重新开始。计时中断流程图如图5-3所示。图5-3 计时子程序流程图 图5-4 显示子程序流程图5.3.3 显示子程序模块的实现显示原理在前面已给予了说明,流程图如图5-4所示。5.3.4 时钟设定子程序模块的实现当设定时间时,断开T0中断,秒单元清0,进入时、分单元设定。设定好后重装T0初值,开T0中断。流程图如图5-5所示。 图5-5 时钟设定子程流程图5.3.5 日期、定时设定子程序模块的实现日期、定时的设定同时钟设定。定时设定时,把时钟的秒位换成定时标志位,“00”为当路定时关,“01”为当路定时开,流程图与时钟设定程
34、序相似。5.4 程序说明5.4.1 定时器初值计算因定时器工作于方式1,需要50ms的中断,所以计数初值:=216 - tfosc12=65536 - 5010-311.059210612=19456表示成十六进制为=4C00H,故(TH0)=4CH,(TL0)=00H。5.4.2 程序初始化程序初始化时,清相应内存单元(20H4FH共48个单元),送时间(00时00分00秒)、日期(07年10月01日)初值,送定时器T0、T1初值,TH0= TH1=4CH,TL0= TL1=00H,特殊寄存器(SP=50H、TMOD=11H)值等。5.4.3 误差分析及校正当T0中断时,需重装定时初值,且要
35、加上从断开T0中断到允许T0中断共有13个周期,以减小误差,故理论重装定时初值为(TH0)=4CH,(TL0)=13H。但该外接晶振电路的晶振频率可调,可能出现误差,所以实际不是这个值。经调试,当定时初值为(TH0)=4CH,(TL0)=06H时,24小时约慢2秒,所以每当计时24小时之后,给秒单元(30H)送02H,使秒累加时从2加起,24小时就少加2秒,即可使时间得到校正。5.4.4 实现闪动设定闪动可选用段码送00H实现,也可禁止当前位显示,选通位送0实现。本设计选用后者实现闪动,用定时器T1进行控制。5.4.5 实现连续加1先判断键是否松开,若松开,则只执行一次加1程序段,进行单次加1
36、;若未松开则连续执行加1程序段,实现连续加1。每执行一次加1程序段就调用显示子程序进行延时,以对调节速度进行控制。本系统以5Hz的速度连续加1,这样能快速对时间、日期、定时进行设定。5.4.6 定时音与显示相冲突问题及解决方案由于蜂鸣器响时P3.2口的电平呈高频变化,频率1K2K,其间隙时间为0.51毫秒,小于6 毫秒,因显示时每个数码管显示1毫秒,至少需要6毫秒,故蜂鸣器响时无法进行显示。为解决此问题,可增加锁存器,采用静态显示;也可增加一语音芯片,既可解决此问题,也可把定时音换成音乐或语音提示,或增加其它功能,使系统功能更强。6 设计程序 ORG 0000H LJMP START ORG
37、000BH LJMP INTT0 ORG 001BH LJMP INTT1 ;主程序;ORG 0020H START: MOV R0,#20H ;清20H-4FH共48个单元 MOV R7,#30H ;20H,21H标志用 CLEARA: MOV R0,#00H INC R0 DJNZ R7,CLEARA CLR P2.2 CLR P2.1 CLR P2.0 MOV SP,#50H MOV 33H,#01H MOV 34H,#0AH MOV 35H,#07H MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#00H ;50MS定时初值(T0计时用) MOV TH0,#
38、4CH MOV TL1,#00H MOV TH1,#4CH SETB EA SETB ET0 SETB TR0 MOV R4,#14H START1: LCALL DISPLAY LCALL KEY JB ACC.3,$+6 DATE1: LCALL DATE JB ACC.2,$+6 TIMEA: LCALL TIME JB ACC.1,$+6 SETTIME1: LCALL SETTIME JB ACC.0,$+6 JNB 0EH,$+6 ;定时显示判断 LCALL RING1 SJMP START1;计时程序; INTT0: PUSH ACC PUSH PSW CLR ET0 CLR T
39、R0 MOV A,#06H ;TL=#06H,TH=#4CH ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值(低8位修正值) MOV A,#4CH ADDC A,TH0 ;高8位初值修正 MOV TH0,A ;重装初值(高8位修正值) SETB TR0 DJNZ R4, $+5 ;1s未到中断退出 LJMP $+6 LJMP OUTT0 MOV R4,#14H INC 30H MOV A,30H CJNE A,#3CH,$+6 LJMP $+6 LJMP OUTT0 MOV 30H,#00H INC 31H LCALL TIME1 ;调定时比较程序 MOV A,31H CJNE A,#3CH,$+5 SJMP $+5 LJMP OUTT0 MOV 31H,#00H INC 32H MOV A,32H CJNE A,#18H,$+6 LJMP $+6 LJMP OUTT0 MOV 32H,#00H INC 33H MOV30H,#02H;时间修正 MOV A,34H CJNE A,#02H,$+6 LJMP MON2 CJNE A,#04H,$+6 LJMP DAY30