基于8255单片机的电子钟程序

上传人:第*** 文档编号:34253222 上传时间:2018-02-22 格式:DOC 页数:29 大小:163KB
返回 下载 相关 举报
基于8255单片机的电子钟程序_第1页
第1页 / 共29页
基于8255单片机的电子钟程序_第2页
第2页 / 共29页
基于8255单片机的电子钟程序_第3页
第3页 / 共29页
基于8255单片机的电子钟程序_第4页
第4页 / 共29页
基于8255单片机的电子钟程序_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于8255单片机的电子钟程序》由会员分享,可在线阅读,更多相关《基于8255单片机的电子钟程序(29页珍藏版)》请在金锄头文库上搜索。

1、关于8255单片机的程序设计;变量声明区SECOND EQU 30H ;秒MINUTE EQU 31H ;分HOUR EQU 32H ;时DAY EQU 33H ;日MONTH EQU 34H ;月YEAR_L EQU 35H ;年低位YEAR_H EQU 36H ;年高位DISPBUF EQU 37H ;显示缓冲区(6字节)DISPBIT EQU 3DH ;位选偏移量FLAG EQU 3EH ;标记(0表示在主界面,1-6分别代表显示时、分、秒、年、月、日,0为一般显示(当前位置为主界面),7为显示日期,8为显示闹铃开关, 9、10显示闹铃时和分,11表示不做缓冲处理)KEY EQU 3FH

2、 ;按键值CLOSE_BIT EQU 40H ;显示屏蔽(和位选相与后送 P2)A1_MINUTE EQU 41H ;闹铃1 分钟A1_HOUR EQU 42H ;闹铃1 小时A1_SWITCH EQU 43H ;闹铃 1 开关A2_MINUTE EQU 44H ;闹铃2 分钟A2_HOUR EQU 45H ;闹铃2 小时A2_SWITCH EQU 46H ;闹铃 2 开关A3_MINUTE EQU 47H ;闹铃3 分钟A3_HOUR EQU 48H ;闹铃3 小时A3_SWITCH EQU 49H ;闹铃 3 开关FLAG_KEEP EQU 4AH ;闹钟持续鸣叫标志(1 开启,0关闭)F

3、LAG_ALARM EQU 4BH ;闹钟响标志( 为1蜂鸣器响,为0蜂鸣器不响)FLAG_NUM EQU 4CH ;当前闹钟标志 (1-3个闹钟)FLAG_MOVING EQU 4DH ;流水显示初始化标志(0 未初始化 1已经初始化)COUNT EQU 4EH ;T0中断次数(T0内部使用)COUNT_1S EQU 4FH ;计数1S(满 N 秒后执行程序)FLAG_1S EQU 50H ;满1秒取反标志(1 秒执行程序1,另一秒执行程序 2)FLAG_ADD EQU 51H ;时间设置标记(1代表 FLAG 对应的时段加1)FLAG_CLOSE EQU 52H ;闪烁显示标记(为0不闪烁

4、)DATE_STYLE EQU 53H ;日期显示模式标志( 为1跳变切换显示,为2流水显示,为3下滑切换显示)CLOSE_BIT_TEMP EQU 54H ;屏蔽位暂存(流水显示模式)CLOSE_BIT_CODE EQU 55H ;段选屏蔽位( 和段选相与后送 P0)KEY_TEMP EQU 56H ;临时按键值(串口发送内容)COUNT_50MS EQU 57H ;50毫秒计数TEMP_R0 EQU 58H ;保护 R0TEMP_R1 EQU 59H ;保护 R1TEMP_R2 EQU 5AH ;保护 R2FLAG_DOWN_S EQU 5BH ;下移显示阶段标志( 每0.2s 加1;0无

5、显示,1、2移入显示,3-17正常,18、19移出显示)MOVING_DISPBUF EQU 5CH ;临时缓冲区( 流水显示模式);-;主程序ORG 00HSJMP STARTORG 0BHLJMP INT_T0ORG 13HAJMP INT_1ORG 30HSTART: ;初始化MOV SECOND,#00MOV MINUTE,#42MOV HOUR,#02MOV DAY,#09MOV MONTH,#12MOV YEAR_L,#09MOV YEAR_H,#20MOV A1_SWITCH,#00HMOV A1_MINUTE,#22MOV A1_HOUR,#12MOV A2_SWITCH,#0

6、0HMOV A2_MINUTE,#00HMOV A2_HOUR,#00HMOV A3_SWITCH,#00HMOV A3_MINUTE,#00HMOV A3_HOUR,#00HMOV DISPBIT,#00HMOV FLAG_KEEP,00HMOV P3,#0FH ;键盘进入监控输入状态MOV R7,#00H ;整点报时鸣铃次数清0SETB P2.0 ;关蜂鸣器MOV FLAG_CLOSE,#00HMOV FLAG,#0BHMOV FLAG_ADD,#00HMOV FLAG_1S,#01HMOV COUNT,#00HMOV KEY,#00HSETB PT0 ;计数器中断优先级高CLR PX1

7、;外部中断 1优先级低MOV TMOD,#21H ;T0为定时器方式1,T1为方式2SETB TR0 ;T0开始计数MOV TL1,#0F3H ;T1初始化MOV TH1,#0F3H ;T1重置初值SETB TR1 ;T1开始计数MOV SCON,#50H ;串口工作方式 1,允许接收MOV PCON,#80H ;SMOD=1MOV IE,#10000110B ;开总中断,开 T0,外部中断1CLR IT1 ;外部中断1触发方式为电平触发;-;基本功能模块,按1显示012345 ,按2显示 ABCDEF,按4进入电子时钟界面MOV CLOSE_BIT_CODE,#00HMOV FLAG_1S,

8、#01HMAIN0:ACALL DISPLAYMOV A,KEY ;取键值CJNE A,#01H,MAIN0_J0 ;判断键值MOV KEY,#00H ;主菜单下 KEY=1,显示012345SHOW_012345_START: ;显示初始化MOV CLOSE_BIT_CODE,#0FFH ;无段选屏蔽MOV CLOSE_BIT,#81H ;屏蔽所有位选ACALL BUF_012345 ;显示缓冲区缓存012345SHOW_012345:MOV A,FLAG_1S ;取1S 取反标志CJNE A,#01H,SHOW_012345_J0CPL A ;1S 已经到(FLAG_1S=1)INC AM

9、OV FLAG_1S,A ;1S 取反标志取反,等待下一秒SETB CMOV A,CLOSE_BITRLC AMOV CLOSE_BIT,A ;已到1S,依次开位选SHOW_012345_J0: ;1S 未到(FLAG_1S=0),继续显示ACALL DISPLAYMOV A,KEY ;取键值CJNE A,#02H,SHOW_012345_J1MOV KEY,#00HSJMP SHOW_ABCDEF_START ;子功能1下 KEY=2,转至显示 ABCDEFSHOW_012345_J1:CJNE A,#04H,SHOW_012345 ;子功能1下 KEY 不为2和4,循环MOV KEY,#0

10、0HSJMP MAIN1_START ;子功能1下 KEY=4,转入时钟模块MAIN0_J0:CJNE A,#02H,MAIN0_J1MOV KEY,#00H ;主菜单下 KEY=2,显示 ABCDEFSHOW_ABCDEF_START: ;显示初始化MOV CLOSE_BIT_CODE,#00H ;屏蔽所有段选MOV CLOSE_BIT,#0FFH ;无位选屏蔽ACALL BUF_ABCDEF ;显示缓冲区缓存 ABCDEFSHOW_ABCDEF:MOV A,FLAG_1S ;取1S 取反标志CJNE A,#01H,SHOW_ABCDEF_J0CPL A ;1S 已经到(FLAG_1S=1)

11、INC AMOV FLAG_1S,A ;1S 取反标志取反,等待下一秒SETB CMOV A,CLOSE_BIT_CODERLC AMOV CLOSE_BIT_CODE,A ;已到1S,依次开段选SHOW_ABCDEF_J0: ;1S 未到 (FLAG_1S=0),继续显示ACALL DISPLAYMOV A,KEY ;取键值CJNE A,#01H,SHOW_ABCDEF_J1MOV KEY,#00HSJMP SHOW_012345_START ;子功能2下 KEY=1,转至显示012345SHOW_ABCDEF_J1:CJNE A,#04H,SHOW_ABCDEF ;子功能2下 KEY 不为

12、1和4,循环MOV KEY,#00HSJMP MAIN1_START ;子功能2下 KEY=4,转入时钟模块MAIN0_J1:CJNE A,#04H,MAIN0MOV KEY,#00H ;主菜单下 KEY=4,转入时钟模块SJMP MAIN1_START;-;缓存012345BUF_012345:MOV A,#DISPBUFADD A,#5MOV R0,AMOV R1,#6MOV A,#0BUF_012345_LOOP:MOV R0,ADEC R0INC ADJNZ R1,BUF_012345_LOOPRET;-;缓存 ABCDEFBUF_ABCDEF:MOV A,#DISPBUFADD A,

13、#5MOV R0,AMOV R1,#6MOV A,#0AHBUF_ABCDEF_LOOP:MOV R0,ADEC R0INC ADJNZ R1,BUF_ABCDEF_LOOPRET;-;功能模块2,电子时钟MAIN1_START:MOV FLAG,#00HMOV CLOSE_BIT_CODE,#0FFHMOV CLOSE_BIT,#0FFHMOV FLAG_CLOSE,#00HMOV FLAG_DOWN_S,#0FFHMAIN1:LCALL ALARMLCALL ALARM_TIMELCALL BUF_TIMELCALL DISPLAYMOV A,KEY ;读键值CJNE A,#01H,MAI

14、N1_NOT_KEY1 ;KEY=1,转入功能1,否则继续判断MOV KEY,#00HSJMP FUN1_STARTMAIN1_NOT_KEY1:MOV A,KEYCJNE A,#02H,MAIN1_NOT_KEY2 ;KEY=2,转入功能2,否则继续判断MOV KEY,#00HSJMP FUN2_STARTMAIN1_NOT_KEY2:MOV A,KEYCJNE A,#03H,MAIN1_NOT_KEY3 ;KEY=3,转入功能3,否则继续判断MOV KEY,#00HAJMP FUN3_STARTMAIN1_NOT_KEY3:MOV A,KEYCJNE A,#04H,MAIN1_NOT_KEY4 ;KEY=4,转入功能4,否则停留在当前界面MOV KEY,#00HAJMP FUN4_STARTMAIN1_NOT_KEY4:SJMP MAIN1;-;功能1界面:显示日期(YYMMDD),按1键退出FUN1_START:MOV FLAG,#07H ;FLAG=7,显示 YYMMDDFUN1:LCALL BUF_TIME ;缓冲处理LCALL DISPLAY ;执行显示MOV A,KEY ;读键值CJNE A,#01H,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号