?? clock.asm
字號:
;********************************************************************************
;ME300系列單片機開發系統演示程序-日歷時鐘
;********************************************************************************
;
;按K1,依次進入鬧鐘功能,鬧鐘時間,年,月,日和時,分,秒模式,直致退出設置狀態
;按K2,調整是否起用鬧鐘和調節鬧鐘時,分,秒,年,月,日,時間的時,分,秒的數字
;鬧鐘響時,按K2即可停止鬧鐘的聲響
;正常狀態,上排最前面顯示一自定義字符,下排最前面閃動"willar"
;設置狀態,LCD上排最前面顯示"P",下排最前面設置鬧鐘時顯示"alarm:",其他顯示"time:"
;鬧鐘啟用時,在LCD下排中間顯示一小喇叭,鬧鐘禁用時,無此小喇叭
;年代變化2000--2099,星期自動轉換
;程序中有自定義字符寫入
;作者:chenming
;出處:偉納電子論壇 www.willar.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為地址設定命令形式
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -