基于89C51单片机的数字钟设计 (2)

上传人:沈*** 文档编号:138787899 上传时间:2022-08-22 格式:DOC 页数:23 大小:129.50KB
收藏 版权申诉 举报 下载
基于89C51单片机的数字钟设计 (2)_第1页
第1页 / 共23页
基于89C51单片机的数字钟设计 (2)_第2页
第2页 / 共23页
基于89C51单片机的数字钟设计 (2)_第3页
第3页 / 共23页
资源描述:

《基于89C51单片机的数字钟设计 (2)》由会员分享,可在线阅读,更多相关《基于89C51单片机的数字钟设计 (2)(23页珍藏版)》请在装配图网上搜索。

1、武汉大学电子信息学院电子系统综合设计课程论文基于89C51单片机的数字钟设计专 业: 年 级: 作 者:指导教师: 2012 年 6 月 5 日2目 录1 作品的背景与意义12 功能指标设计13 作品方案设计13.1总体方案的选择13.1.1 单片机的型号选择 1 3.1.2 数码管选择及显示原理 2 3.1.3 整体功能实现23.2主控模块89C5123.3显示方案比较24 硬件设计34.1设计思路3 4.1.1 电源电路部分3 4.1.2 显示部分3 4.1.3 键盘部分34.2 设计内容44.3 设计要求44.4 设备及工作环境44.5 硬件结构及原理图4 4.5.1 功能4 4.5.2

2、 系统板上硬件连线.55 软件设计65.1主程序流程图65.2显示模块流程图76 系统测试76.1测试环境86.2测试步骤86.3测试结论8 6.2.1 测试数字钟的基本功能8 6.2.2 测试数字钟的闹钟功能8 6.2.3 测试数字钟的万年历功能87 实验总结8参考文献9附录1 系统电路图10附录2 系统软件代码10附录3 系统器件清单10电子系统综合设计课程论文1 作品的背景及意义数字钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人

3、民日常生活不可缺少的工具。数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。应用单片机控制技术,设计出以89c51单片机为核心的电子时钟,电子时钟能够显示时、分、秒显示时间的功能,还可以进行时和分的校对,而且其片选的灵活性强。2 功能指标设计 应用单片机控制技术,设计出以89C51单片机为核心的电子时钟,电子时钟能够显示时、分、秒显示

4、时间的功能,并通过控制键来实现时间的调整以及进入闹铃模式、万年历模式的转换。3 作品方案设计3.1总体方案的选择3.1.1单片机的型号选择 通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点

5、,是最好的选择。3.1.2 数码管选择及显示原理 数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常

6、用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。3.1.3 整体功能实现 在6块LED数码管上能实现数字时钟的时、分、秒显示,按控制键实现时钟显示及调整功能。按不同的控制键可进入5个闹钟设置模式并进行开启及关闭。同时,按不同的控制键可进入万年历设置模式。3.2 主控模块89C51

7、89C51是一个8位单片机,片内ROM全部采用FLASH ROM技术,晶振时钟为12MHz。89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。第31引脚需要接高电位使单片机选用内部程序存储器;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS,通常在VCC和VSS引脚之间接0.1F高频滤波电容。3.3 显示方案比较电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能。数字式电子钟用集成电路计时时,

8、译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,故选用此种显示方案。4 硬件设计4.1 设计思路 电子时钟主要由显示模块、校时模块和时钟运算模块三大部分组成。其中校时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。4.1.1 电源电路部分在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源,它的设计思路是根据我们以前学过的模电电子技术,要想得到我们所要的+6V输出电压,就需将交流220V的电压经过变压器、整流电路、滤波电

9、路和稳压电路四个部分。4.1.2显示部分显示部分是整个电子时钟最为重要的部分,它分为时间的显示和温度的显示两部分,共需要8位LED显示器。采用动态显示方式,所谓动态显示方式是时间(或温度)数字在LED上一个一个逐个显示,它是通过位选端控制在哪个LED上显示数字,由于这些LED数字显示之间的时间非常的短,使的人眼看来它们是一起显示时间数字的,并且动态显示方式所用的接口少,节省了CPU的管脚。由于端口的问题以及动态显示方式的优越性,在此设计的连接方式上采用共阴级接法。显示器LED有段选和位选两个端口,首先说段选端,它由LED八个端口构成,通过对这八个端口输入的不同的二进制数据使得它的时间显示也不同

10、,从而可以得到我们所要的时间显示。4.1.3 键盘部分它是整个系统中最简单的部分,根据功能要求,本系统共需四个按键:功能移位键、功能加键、功能减键、定闹键。并采用独立式按键。4.2 设计内容 用89C51单片机CPU及接口电路设计并实现显示时间的实时时钟。4.3 设计要求 (1)在KEIL C51上编写软件完成设计。(2) 程序的首地址应使目标机可以直接运行,即从0000H开始。在主程序的开始部分必须设置一个合适的栈底。程序放置的地址须连续且靠前,不要在中间留下大量的空间地址,以使目标机可以使用较少的硬件资源。 (3)6位LED数码管从左到右分别显示时. 分. 秒(各占用2位),采用24小时标

11、准计时制。开始计时时为000000,到235959后变成000000。(4) 在XD12键盘上选定3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后变为00;小时加到23后再按键即变为00。再调校时均不向上一单位进位(例如分加到59后变为00;但小时不发生改变)。(5)软件设计必须使用89C51片内定时器,采用定时中断结构,不得使用软件延时法。(6)上机调试程序。(7)写出设计报告。4.4 设备及工作环境(1) 硬件:计算机一台、ZY15MCU12BD型综合单片机实验箱一台、通讯电缆一根。 (2) 软件:Windows操作系统、Keil C51软件。 4.5

12、硬件结构及原理电路图4.5.1 功能 1) 开机时,显示12:00:00的时间开始计时;2) P0.0/AD0控制“秒”的调整,每按一次加1秒;3) P0.1/AD1控制“分”的调整,每按一次加1分;4) P0.2/AD2控制“时”的调整,每按一次加1个小时; 4.5.2 系统板上硬件连线 (1)把“单片机系统”区域中的P1.0P1.7端口用8芯排线连接到“动态数码显示”区域中的AH端口上; (2)把“单片机系统:区域中的P3.0P3.7端口用8芯排线连接到“动态数码显示”区域中的S1S8端口上; (3)把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线

13、连接到“独立式键盘”区域中的SP3、SP2、SP1端口上; 5 软件设计 在主程序的开始定义了一组固定单元用来存储计数的分、秒、时的存储单元。在主程序中,对不同的按键进行扫描,实现秒表,时间调整。5.1主程序流程图 如图1所示。开始T0中断入口通过查表方式显示数据数码位选加1位选值=8NY位选数值=0秒计数加1秒计数=500NY秒计数=0SECOND加1中断返回 图1 总体流程图5.2显示模块流程图 如图2所示。YYNNN子程序入口SECOND=60SECOND=0,并MINUTE加1MINUTE=60MINUTE=0,并HOUR加1显示数据处理中断返回HOUR=24Y图2 子程序流程图6 系

14、统测试6.1测试环境(1) 硬件:计算机一台、单片机实验板一块、通讯电缆一根。(2) 软件:Windows操作系统、Keil C51软件。6.2测试步骤6.2.1 测试数字钟的基本功能K1键,设置现在时间功能,按一下K1,进入时间设置,此时按K2为小时设置,按一次数值加1,K3为分钟设置,设置完成后按K4进入正常走时。6.2.2 测试数字钟的闹钟功能 K2键设置闹铃1,此时按K2为小时设置,按一次数值加1,K3为分钟设置,(若不开启此闹铃则直接按K1,以后五个同样)设置完成后按K4进入设置闹铃2;同前一样设置,按K4进入闹铃3,同前一样设置,再按K4进入闹铃4,同前一样设置,再按K4进入闹铃5

15、,同前一样设置,最后按K4结束设置;正常走时过程中,按K4键关闭所有闹铃;闹铃过程中按K4键关闭闹铃。6.2.3 测试数字钟的万年历功能 K3键进入万年历设置,矩阵键盘的S1进行年份加1,S2键年份减1,S3键月份加1,S4键月份减1。6.3测试结论经过多次测试,本设计能够很准确的走时,并能够通过硬件对时钟进行时间调整,并具有闹铃和万年历功能。7 实验总结 通过这次的设计使我们认识到自己对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我们去学习,我们会在以后的学习生活中弥补我所缺少的知识。本次的设计使我们从中学到了一些很重要的东西,那就是如何从

16、理论到实践的转化,怎样将我们所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我们奠定了一个实践基础,我们会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,并且在查找资料的过程中学到了许多,同时在协作过程中增进同学间的友谊,这次电子综合实验让我们收获颇丰。参考文献:1 李朝青单片机原理及接口技术(第三版) M 北京航空航天大学出版社 2005-102 杨欣等电子设计从零开始M 清华大学出版社2005-103 夏路易,石宗义电路原理图与电路设计教程Protel 99SEM 北京希望电子出版社20024

17、 阎石数字电子技术基础 M 高等教育出版社2006-55 邱关源电路M 高等教育出版社2003-26 单片机开发 北京 人民邮电出版社7 单片机课程设计 实例指导 李光才 楼然笛 北京 北京航空航天大学出版社 2004附录1 系统电路图附录2 系统软件代码2LED1EQU40HLED2EQU41HLED3EQU42HLED4EQU43HLED5EQU44HLED6EQU45HLED7EQU46HLED8EQU47HHOUREQU48HMINEQU49HSECEQU4AHC1_MINEQU4BHC1_HOUREQU4CHC2_MINEQU4DHC2_HOUREQU4EHC3_MINEQU4FHC

18、3_HOUREQU50HC4_MINEQU51HC4_HOUREQU52HC5_MINEQU53HC5_HOUREQU54HDATEEQU63HMONTHEQU64HYEAREQU65HCENTREQU66HT1_TIMEEQU67HD_CTREQU68HWEEKEQU69HD_LED1EQU70HD_LED2EQU71HD_LED3EQU72HD_LED4EQU73HD_LED5EQU74HD_LED6EQU75HD_LED7EQU76HD_LED8EQU77HT0_COUNTEREQUR7/设置定时1秒定时器需溢出的次数ORG0000HAJMPMAINORG000BHJMPT0_INTER

19、RUPTORG001BHJMPT1_INTERRUPTORG0030HMAIN:MOVR0,#48HINITIAL:MOVR0,#00HINCR0CJNER0,#68H,INITIALMOVCENTR,#15HMOVYEAR,#0CHMOVMONTH,#03HMOVDATE,#03HMOVHOUR,#06HMOVMIN,#00HMOVC_STATUS,#00HCLRT_SET_SWICLRD_SHOW_SWIMOVTMOD,#11HSETBEASETBET1SETBET0SETBTR1SETBTR0CLRR_B_FCHECK:ACALLM_K_CHECKACALLRING_DEAL/SETBD

20、_SHOW_SWI/ACALLWF_SHOW/ACALLSHOW_WEEK /JMPCHECK/万年历分隔符显示WF_SHOW:PUSHACCJBD_SHOW_SWI,FETAL_SHOWJNBT_SET_SWI,WF_RETMOVA,L_R_BUTTONCJNEA,#08H,DSSDSS:JCWF_RETFETAL_SHOW:/CLRTR1MOVDPTR,#LED_SELMOVA,#0EBHMOVXDPTR,AMOVDPTR,#LED_SEGMOVA,#80HMOVXDPTR,ALCALLDELAY_100USMOVA,#00HMOVXDPTR,A/SETBTR1/*MOVLED3,#10H

21、MOVLED5,#10HMOVD_TUBE_CTR,#0EBHMOVD_STA_POSI,#LED1LCALLD_TUBE_SHOW*/WF_RET:POPACCRET/通过LED灯显示星期SHOW_WEEK:MOVHEX,YEARLCALLHEXTOBCDMOVNH,BCDMOVHEX,MONTHLCALLHEXTOBCDMOVYF,BCD/LCALLSUB_WNLMOVA,BJNZSTAMOVA,#07HSTA:MOVP1,#0FFHMOVR1,AMOVA,#0FEHDEAL1:ANLP1,ARLADJNZR1,DEAL1 RET/闹钟 R_B_FBIT7CH/蜂鸣器开关标志位R_MIND

22、ATA55H/记录当前闹钟熄灭时间RING_DEAL:PUSHACCJBR_B_F,B_DEALMOVA,#01HMOVR1,#C1_MINR_STA:PUSHACCANLA,C_STATUSJZR_CLOSEMOVA,R1CJNEA,MIN,R_CLOSEMOVR_MIN,AINCR1MOVA,R1CJNEA,HOUR,H_NCLRP1.0SETBR_B_FINCR_MINMOVA,R_MININCR1CJNEA,#3CH,NEXT_RINGMOVR_MIN,#00HJMPNEXT_RINGR_CLOSE:INCR1H_N:INCR1NEXT_RING:POPACCRLACJNEA,#20H

23、,R_STAJNBR_B_F,R_RETB_DEAL:JBP3.2,R_WAITSETBP1.0JMPR_RETR_WAIT:MOVA,R_MINCJNEA,MIN,R_RETSETBP1.0CLRR_B_FCLRP1.7R_RET:POPACCRET/数码管显示函数:D_TUBE_CTRDATA56H/设置数码管哪几位显示D_STA_POSIDATA57H/数码管最低位显示数字所在地址LED_SEGEQU0FAFFHLED_SELEQU0FBFFHD_TUBE_SHOW:/显示从D_STA_POSI开始的8个地址单元里所存数据,每一位是否显示由D_TUBE_CTR所存数据控制/保存变量:PU

24、SHDPHPUSHDPLPUSHACCMOVA,R0PUSHACCMOVA,R2PUSHACC/MOVA,#0FEHMOVR0,D_STA_POSIMOVR2,#00HLOOP1:PUSHACCORLA,D_TUBE_CTRMOVDPTR,#LED_SELMOVXDPTR,AMOVA,R0MOVDPTR,#2000HMOVCA,A+DPTRMOVDPTR,#LED_SEGMOVXDPTR,AACALLDELAY_100USMOVA,#00HMOVXDPTR,APOPACCRLAINCR0INCR2CJNER2,#08H,LOOP1/恢复变量:POPACCMOVR2,APOPACCMOVR0,A

25、POPACCPOPDPLPOPDPHRET/按键检测函数:有键按下,将键值存入M_KEY_VALUE;没有键按下,存入#0FFHM_K_VALUEDATA58H/存放键值C_CHOOSEDATA59H/选择某个闹钟进行设置,存#00H表示未选中任何闹钟K_STOREDATA5AHL_R_BUTTONDATA5BH/记录左/右移动按钮按下次数C_STATUSDATA5CH/用其中前5位分别记录5个闹钟开/关的状态K_SCANDATA0F8FFH/矩正键盘行控制,列读取/位变量:T_SET_SWIBIT7FH/存放时间设置开关的状态D_SHOW_SWIBIT7EH/存放万年历显示开关的状态/M_K

26、_CHECK:MOVDPTR,#K_SCANMOVA,#0FEHMOVR3,#00HSTA_CHECK:PUSHACCMOVXDPTR,AMOVXA,DPTRANLA,#0FHCJNEA,#0FH,K_DOWNAJMPNEXT_COLK_DOWN:LCALLDELAY_20MSMOVK_STORE,AMOVXA,DPTRANLA,#0FHCJNEA,K_STORE,NEXT_COL/抖动,扫描下一行LCALLK_D_DEALK_J:CJNEA,#0AH,SITU1/判断时间设置开关CPLT_SET_SWIMOVC_CHOOSE,#00HCLRD_SHOW_SWIMOVL_R_BUTTON,#0

27、0HJMPWAITSITU1:CJNEA,#0BH,SITU2/判断闹钟选择开关LCALLS1_DEALJMPWAITSITU2:CJNEA,#0DH,SITU3/判断万年历显示开关SETBD_SHOW_SWICLRT_SET_SWIMOVC_CHOOSE,#00HJMPWAITSITU3:CJNEA,#0EH,SITU4/判断是否为闹钟开、关设置开关LCALLS3_DEALJMPWAIT SITU4:CJNEA,#0CH,SITU5/左移按钮LCALLS4_DEALJMPWAITSITU5:CJNEA,#0FH,SITU6 /右移按钮LCALLS5_DEALJMPWAITSITU6:JNBT

28、_SET_SWI,C_CHECK/数字键LCALLS6_T_DEALJMPWAITC_CHECK:MOVA,C_CHOOSEJZWAITLCALLS6_C_DEAL/JMPWAITWAIT:MOVXA,DPTRANLA,#0FHCJNEA,K_STORE,NEXT_COLSJMPWAITNEXT_COL:CLRD_SHOW_SWIPOPACCRLAINCR3CJNER3,#04H,STA_CHECKRETURN:RET/计算按键键值,存于M_K_VALUEK_D_DEAL:CPLAANLA,#0FHMOVM_K_VALUE,#00HROW:CJNEA,#01H, RRIGHTSJMPCAL_K

29、_VALUERRIGHT:RRAINCM_K_VALUESJMPROWCAL_K_VALUE:MOVA,R3MOVB,#04HMULABADDA,M_K_VALUEMOVM_K_VALUE,ARET/处理闹钟选择开关按下S1_DEAL:CLRT_SET_SWICLRD_SHOW_SWIINCC_CHOOSEMOVL_R_BUTTON,#00HMOVA,C_CHOOSECJNEA,#06H,S1_RETMOVC_CHOOSE,#00HS1_RET:RET/处理闹钟开、关设置开关按下S3_DEAL:MOVA,C_CHOOSEJZS3_RETMOVR4,AMOVA,#80HGET_S:RLADJNZ

30、R4,GET_SXRLC_STATUS,AS3_RET:RET/处理左移按钮按下S4_DEAL:JNBT_SET_SWI,S4_CINCL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S4_JFINCL_R_BUTTONRETS4_JF:CJNEA,#05H,S4_STINCL_R_BUTTONRET/*S4_JT:CJNEA,#0AH,S4_TTINCL_R_BUTTONRETS4_TT:CJNEA,#0DH,S4_STINCL_R_BUTTONRET*/S4_ST:CJNEA,#10H,S4_RETMOVL_R_BUTTON,#00HRETS4_C:MOVA,C_C

31、HOOSEJZS4_RETINCL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S4_JF1INCL_R_BUTTONRETS4_JF1:CJNEA,#05H,S4_RETMOVL_R_BUTTON,#00HS4_RET:RET/右移按钮按下处理S5_DEAL:JNBT_SET_SWI,S5_CDECL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S5_JFDECL_R_BUTTONRETS5_JF:CJNEA,#05H,S5_JZDECL_R_BUTTONRET/*S5_JT:CJNEA,#0AH,S5_TTDECL_R_BUTTONRETS5

32、_TT:CJNEA,#0DH,S5_JZDECL_R_BUTTONRET*/S5_JZ:CJNEA,#0FFH,S5_RETMOVL_R_BUTTON,#0FHRETS5_C:MOVA,C_CHOOSEJZS5_RETDECL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S5_JZ1DECL_R_BUTTONRETS5_JZ1:CJNEA,#0FFH,S5_RETMOVL_R_BUTTON,#04HS5_RET:RET/数字键按下处理/时间设置S6_T_DEAL:MOVR0,L_R_BUTTONCJNER0,#08H,SET_DATESET_DATE:JBCY,SET_

33、TIMEMOVA,#LED1ADDA,L_R_BUTTONCLRCYSUBBA,#08HMOVR0,AMOVR0,M_K_VALUEMOVA,LED2MOVB,#0AHMULABADDA,LED1/*CJNEA,#20H,SET_DAYSET_DAY1:MOVA,#1FHSJMPO_DAYSET_DAY:JNBCY,SET_DAY1O_DAY:*/MOVDATE,AMOVA,LED4MOVB,#0AHMULABADDA,LED3/*CLRCYSUBBA,#0BH*/CJNEA,#0DH,SET_MONSET_MON1:MOVA,#0CHSJMPO_MONSET_MON:JNBCY,SET_MO

34、N1O_MON:MOVMONTH,AMOVA,LED6MOVB,#0AHMULABADDA,LED5/*CLRCYSUBBA,#0BH*/MOVYEAR,AMOVA,LED8MOVB,#0AHMULABADDA,LED7INCAMOVCENTR,A/*MOVHEX,YEARLCALLHEXTOBCDMOVNH,BCDMOVHEX,MONTHLCALLHEXTOBCDMOVYF,BCD */LCALLSUB_WNLCJNEA,DATE,S_D_NS_D_N:JNCS_D_RMOVDATE,AS_D_R:RETSET_TIME: MOVA,#LED1ADDA,L_R_BUTTONMOVR0,AMO

35、VR0,M_K_VALUEMOVA,LED2MOVB,#0AHMULABADDA,LED1CJNEA,#3CH,SET_SECSET_SEC1:MOVA,#00HSJMPO_SECSET_SEC:JNBCY,SET_SEC1O_SEC:MOVSEC,AMOVA,LED5MOVB,#0AHMULABADDA,LED4CJNEA,#3CH,SET_MINSET_MIN1:MOVA,#00HSJMPO_MINSET_MIN:JNBCY,SET_MIN1O_MIN:MOVMIN,AMOVA,LED8MOVB,#0AHMULABADDA,LED7CJNEA,#18H,SET_HOURSET_HOUR1:

36、MOVA,#00HSJMPO_HOURSET_HOUR:JNBCY,SET_HOUR1O_HOUR:MOVHOUR,ARET/闹钟设置:S6_C_DEAL:MOVA,#LED1ADDA,L_R_BUTTONMOVR0,AMOVR0,M_K_VALUEMOVA,C_CHOOSEDECAMOVB,#02HMULABADDA,#C1_MINMOVR0,AMOVA,LED2MOVB,#0AHMULABADDA,LED1MOVR0,AMOVA,LED5MOVB,#0AHMULABADDA,LED4CJNEA,#18H,C_H_SC_H_S:JCC_NSMOVA,#00HC_NS:INCR0MOVR0,A

37、RETT0_INTERRUPT:MOVTH0,#3CHMOVTL0,#0B2HCLRTF0PUSHACCMOVA,R0PUSHACCINCR7CJNER7,#14H,RETT0IMOVR7,#00HINCSECMOVA,SECCJNEA,#3CH,RETT0IMOVSEC,#00HINCMINMOVA,MINCJNEA,#3CH,RETT0IMOVMIN,#00HINCHOURMOVA,HOURCJNEA,#18H,RETT0IMOVHOUR,#00HINCDATE/MOVA,DATELCALLSUB_WNLINCACJNEA,DATE,RETT0IMOVDATE,#01HINCMONTHMO

38、VA,MONTHCJNEA,#0DH,RETT0IMOVMONTH,#01HINCYEARMOVA,YEARCJNEA,#64H,RETT0IMOVYEAR,#00HINCCENTRMOVA,CENTRCJNEA,#64H,RETT0IMOVCENTR,#00HRETT0I:POPACCMOVR0,APOPACCRETILDBIT7DH/闪烁标志位T1_INTERRUPT:MOVTH1,#0ECH/#76H/MOVTL1,#79H/#3CH/CLRTF1PUSHBPUSHACCMOVA,R0PUSHACCMOVA,R1PUSHACCORLP1,#0FEHJNBD_SHOW_SWI,T_S_CH

39、ECK/判断万年历显示开关是否打开LCALLD_S_DEALJMPT1RETIT_S_CHECK:JNBT_SET_SWI,C_S_CHECK/判断时间设置开关是否打开LCALLT_S_DEALJMPT1RETIC_S_CHECK:/闹钟设置开关是否打开MOVA,C_CHOOSEJZGENERALLCALLC_S_DEALJMPT1RETIGENERAL: /常规显示LCALLG_SHOWT1RETI:/MOVD_STA_POSI,#LED1LCALLD_TUBE_SHOW/ACALLWF_SHOWPOPACCMOVR1,APOPACCMOVR0,APOPACCPOPBRETI/万年历显示:D

40、_S_DEAL:MOVA,DATEMOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVA,MONTHMOVB,#0AHDIVABMOVLED4,AMOVLED3,B/*MOVA,BADDA,#0CHMOVLED3,A*/MOVA,YEARMOVB,#0AHDIVABMOVLED6,AMOVLED5,B/*MOVA,BADDA,#0CHMOVLED5,A*/MOVA,CENTRDECAMOVB,#0AHDIVABMOVLED7,BMOVLED8,ALCALLLEDTODLEDMOVD_STA_POSI,#D_LED1MOVD_TUBE_CTR,#00HRET/时间设置模式下显示

41、T_S_DEAL:CLRTR0MOVA,L_R_BUTTONCJNEA,#08H,WNL_SHOWWNL_SHOW: /显示万年历设置JCTIME_SHOWMOVA,DATEMOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVA,MONTHMOVB,#0AHDIVABMOVLED4,AMOVLED3,B/*MOVA,BADDA,#0BHMOVLED3,A*/MOVA,YEARMOVB,#0AHDIVABMOVLED6,AMOVLED5,B/*MOVA,BADDA,#0BHMOVLED5,A*/MOVA,CENTRDECAMOVB,#0AHDIVABMOVLED7,BMOVLE

42、D8,ALCALLLEDTODLEDMOVD_STA_POSI,#D_LED1JMPT_S_FLASHTIME_SHOW:/显示时间设置MOVA,SECMOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVLED3,#0AHMOVA,MINMOVB,#0AHDIVABMOVLED4,BMOVLED5,AMOVLED6,#0AHMOVA,HOURMOVB,#0AHDIVABMOVLED7,BMOVLED8,AMOVD_STA_POSI,#LED1T_S_FLASH: /设置闪烁MOVR0,L_R_BUTTONINCR0MOVA,#80HLP_RL:RLADJNZR0,LP_RLM

43、OVD_CTR,AINCT1_TIMEMOVR0,T1_TIMECJNER0,#032H,SET_T_FLAMOVT1_TIME,#00HCPLLDSET_T_FLA:JBLD,T_S_NLMOVD_TUBE_CTR,#00HRETT_S_NL:MOVD_TUBE_CTR,D_CTRRET/闹钟设置模式下显示C_S_DEAL:DECAMOVB,#02HMULABMOVR0,#C1_MINADDA,R0MOVR0,AMOVA,R0MOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVLED3,#0AHINCR0MOVA,R0MOVB,#0AHDIVABMOVLED4,BMOVLE

44、D5,AMOVLED6,#0BHMOVLED7,#0BHMOVP1,#0FFHMOVR1,C_CHOOSEMOVA,#07FHDEAL:ANLP1,ARRADJNZR1,DEAL /最高位显示闹钟状态MOVR0,C_CHOOSEMOVA,#80HPW_RL:RLADJNZR0,PW_RLANLA,C_STATUSJZCCLOSEMOVLED8,#01HSJMPC_S_FLASHCCLOSE:MOVLED8,#00HC_S_FLASH:MOVR0,L_R_BUTTONINCR0MOVA,#80HLP_RL2:RLADJNZR0,LP_RL2MOVD_CTR,AINCT1_TIMEMOVR0,T1

45、_TIMECJNER0,#032H,SET_C_FLAMOVT1_TIME,#00HCPLLDSET_C_FLA:JBLD,C_S_NLMOVD_TUBE_CTR,#00HRETC_S_NL:MOVD_TUBE_CTR,D_CTRMOVD_STA_POSI,#LED1RET/常规显示:G_SHOW:SETBTR0MOVA,SECMOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVLED3,#0AHMOVA,MINMOVB,#0AHDIVABMOVLED4,BMOVLED5,AMOVLED6,#0AHMOVA,HOURMOVB,#0AHDIVABMOVLED7,BMOVLED8,AMOVD_TUBE_CTR,#00HMOVD_STA_POSI,#LED1RET/万年历函数,得到本月天数以及本月第一天是第几个工作日SJDATA5DHNH DATA 5EHYFDATA5FHMAX_DAYDATA60HSUB_WNL: PUSH PSW MOVHEX,CENTR LCALLHEXTOBCD MOVSJ,BCD MOVHEX,YEAR LCALLHEXTOBCD MOVNH,BCD MOVHEX,MONTH LCALLHEXTOBCD MOVYF,BCD MOV A, SJ ACALL BCD2BIN_MOD4 ; x 400年:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!