;******************************************************************************** ;按K1,依次进入闹钟功能,闹钟时间,年,月,日和时,分,秒模式,直致退出设置状态 * ;按K2,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字 * ;闹钟响时,按K2即可停止闹钟的声响 * ;正常状态,上排最前面显示一自定义字符,下排最前面闪动"willar" * ;设置状态,LCD上排最前面显示"P",下排最前面设置闹钟时显示"alarm:",其他显示"time:"* ;闹钟启用时,在LCD下排中间显示一小喇叭,闹钟禁用时,无此小喇叭 * ;年代变化2000--2099,星期自动转换 * [龙图开发网: http://www.longtoo.com ]
;**************变量的定义***************** RS BIT P2.0 ;LCD数据/命令选择端(H/L) RW BIT P2.1 ;LCD读/写选择端(H/L) EP BIT P2.2 ;LCD使能控制 PRE BIT P1.4 ;调整键(K1) ADJ BIT P1.5 ;调整键(K2) SPK BIT P3.7 ;闹钟声音输出口
YEAR DATA 18H ;年,月,日变量 MONTH DATA 19H DATE DATA 1AH WEEK DATA 1BH
HOUR DATA 1CH ;时,分,秒,百分之一秒变量 MIN DATA 1DH SEC DATA 1EH SEC100 DATA 1FH
HOUR_ARM DATA 20H ;闹钟时,分,秒,变量 MIN_ARM DATA 21H SEC_ARM DATA 22H
STATE DATA 23H ALARM BIT STATE.0 ;闹钟是否启用标志1--启用,0--禁止 LEAP BIT STATE.1 ;是否闰年标志1--闰年,0--平年
KEY_S DATA 24H ;当前扫描键值 KEY_V DATA 25H ;上次扫描键值
DIS_BUF_U0 DATA 26H ;LCD上排显示缓冲区 DIS_BUF_U1 DATA 27H DIS_BUF_U2 DATA 28H DIS_BUF_U3 DATA 29H DIS_BUF_U4 DATA 2AH DIS_BUF_U5 DATA 2BH DIS_BUF_U6 DATA 2CH DIS_BUF_U7 DATA 2DH DIS_BUF_U8 DATA 2EH DIS_BUF_U9 DATA 2FH DIS_BUF_U10 DATA 30H DIS_BUF_U11 DATA 31H DIS_BUF_U12 DATA 32H DIS_BUF_U13 DATA 33H DIS_BUF_U14 DATA 34H DIS_BUF_U15 DATA 35H
DIS_BUF_L0 DATA 36H ;LCD下排显示缓冲区 DIS_BUF_L1 DATA 37H DIS_BUF_L2 DATA 38H DIS_BUF_L3 DATA 39H DIS_BUF_L4 DATA 3AH DIS_BUF_L5 DATA 3BH DIS_BUF_L6 DATA 3CH DIS_BUF_L7 DATA 3DH DIS_BUF_L8 DATA 3EH DIS_BUF_L9 DATA 3FH DIS_BUF_L10 DATA 40H DIS_BUF_L11 DATA 41H DIS_BUF_L12 DATA 42H DIS_BUF_L13 DATA 43H DIS_BUF_L14 DATA 44H DIS_BUF_L15 DATA 45H
FLAG DATA 46H ;标识调整状态 0-闹钟功能,1-闹钟时,2-闹钟分,3-闹钟秒 ;4-年,5-月,6-日,7-时,8-分,9-秒,10-退出调整。 DIS_H DATA 47H DIS_M DATA 48H DIS_S DATA 49H
DIS_S0 DATA 4AH DIS_S1 DATA 4BH DIS_S2 DATA 4CH DIS_S3 DATA 4DH DIS_S4 DATA 4EH DIS_S5 DATA 4FH
;******************初始化*********************** ORG 0000H LJMP START ORG 000BH LJMP TIMER0 ORG 001BH LJMP TIMER1 ORG 0100H START: MOV SP,#60H MOV R0,#18H MOV A,#00H MEM_INI: MOV @R0,A INC R0 CJNE R0,#5FH,MEM_INI LCALL DELAY_5ms ;初始化LCD MOV R0,#38H ;设置LCD为16X2显示,5X7点阵,八位数据接口 LCALL LCD_WCMD LCALL DELAY_5ms MOV R0,#0CH ;设置LCD开显示及光标形式(光标不闪烁,不显示"-") LCALL LCD_WCMD LCALL DELAY_5ms MOV R0,#06H ;LCD显示光标移动设置(光标地址指针加1,整屏显示不移动) LCALL LCD_WCMD LCALL DELAY_5ms MOV R0,#01H ;清除LCD的显示内容 LCALL LCD_WCMD LCALL DELAY_5ms
;第一自定义字符: MOV R0,#40H LCALL lcd_wcmd ;"01 000 000"第1行地址 (D7D6为地址设定命令形式 |