⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.asm

📁 日历时钟 按AN3,依次进入闹钟功能
💻 ASM
字号:
;********************************************************************************
;
;日历时钟
;按AN3,依次进入闹钟功能,闹钟时间,年,月,日和时,分,秒模式,直致退出设置状态
;按AN4,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字
;闹钟响时,按AN4即可停止闹钟的声响
;正常状态,上排最前面显示一自定义字符,下排最前面闪动"willar"
;设置状态,LCD上排最前面显示"P",下排最前面设置闹钟时显示"alarm:",其他显示"time:"
;闹钟启用时,在LCD下排中间显示一小喇叭,闹钟禁用时,无此小喇叭
;年代变化2000--2099,星期自动转换
;程序中有自定义字符写入

;********************************************************************************* 


;**************变量的定义***************** 
RS		BIT	P2.0		;LCD数据/命令选择端(H/L)
RW		BIT    	P2.1    	;LCD读/写选择端(H/L)
EP		BIT 	P2.2		;LCD使能控制
PRE		BIT  	P1.4		;调整键(AN3)
ADJ		BIT	P1.5		;调整键(AN4)
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为地址设定命令形式

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -