(汇编)实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;///////////////////////////////////////////
;本程序源代码由湖南工程职业技术学院提供.
;专业单片机培训,让你学习单片机更容易.
;程序员:蒋庆桥
;QQ:xxxxxxxxx
;本程序用汇编实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历,H_ADJ BIT P3.0 ;时/年调整
M_ADJ BIT P3.1 ;分/月调整
S_ADJ BIT P1.4 ;秒/日调整
DT_SET BIT P1.6 ;时间/日期选择
STR BIT P1.5;启动走时
T_RST BIT P1.0 ;实时时钟复位线引脚
T_CLK BIT P1.1 ;实时时钟时钟线引脚
T_IO BIT P1.2 ;实时时钟数据线引脚
HH_BIT EQU 40H ;时高位
HL_BIT EQU 41H ;时低位
MH_BIT EQU 42H ;分高位
ML_BIT EQU 43H ;分低位
SH_BIT EQU 44H ;秒高位
SL_BIT EQU 45H ;秒低位
TEMPER_L EQU 46H
TEMPER_H EQU 47H
YH_BIT EQU 48H ;年高位
YL_BIT EQU 49H ;年低位
MOH_BIT EQU 4aH ;月高位
MOL_BIT EQU 4bH ;月低位
DH_BIT EQU 4cH ;日高位
DL_BIT EQU 4dH ;日低位
SEC EQU 30H
MIN EQU 31H
HOUR EQU 32H
DAY EQU 33H
MONTH EQU 34H
WEEK EQU 35H
YEAR EQU 36H
TEMPER equ 37h
FLAG1 BIT 20h.0 ;DS18B20存在标志位
DQ BIT P1.3
A_BIT EQU 55H
B_BIT EQU 56H
DS1302_ADDR EQU 5EH
DS1302_DATA EQU 5FH
ORG 00H
LJMP START
START:
MOV SP,#60H
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#10
SETB EA
SETB ET0
SETB TR0
MOV R1,37H
MOV YEAR,#13H ;上电预置日期、时间
MOV WEEK,#03H ;周1 MON
MOV MONTH,#07H ;2011 04 25 12:00:00
MOV DAY,#05H
MOV HOUR,#23H
MOV MIN,#00H
MOV SEC,#00H
MOV 50H,#0
/////////////////////////////////////////////////////////////////////// ////
MAIN:
LCALL KEY
//MAIN2:
CALL FENLI
LCALL INIT_18B20
LCALL GET_TEMPER
call CHANGE
call disp
call display
AJMP MAIN
FENLI:
MOV A,YEAR
MOV B,#10H
DIV AB
MOV YL_BIT,B
MOV YH_BIT,A
MOV A,MONTH
MOV B,#10H
DIV AB
MOV MOL_BIT,B
MOV MOH_BIT,A
MOV A,DAY
MOV B,#10H
DIV AB
MOV DL_BIT,B
MOV DH_BIT,A
MOV A,HOUR
MOV B,#10H
DIV AB
MOV HL_BIT,B
MOV HH_BIT,A
MOV A,MIN
MOV B,#10H
DIV AB
MOV ML_BIT,B
MOV MH_BIT,A
MOV A,SEC
MOV B,#10H
DIV AB
MOV SL_BIT,B
MOV SH_BIT,A
RET
KEY: ;按键子程序
JB F0,MAIN10 ;F0=1,开始走时。走时前写,不读。走时后读,不写。
LCALL WR1302
AJMP key_set
MAIN10:
LCALL RD1302
KEY_SET:
JB DT_SET,KEY_H
ACALL D10MS
JNB DT_SET,$-2
CPL 7FH
AJMP RT
KEY_H:
JB H_ADJ,KEY_M
ACALL D10MS
JNB H_ADJ,$-2
AJMP H_ADD
KEY_M:
JB M_ADJ,KEY_S
ACALL D10MS
JNB M_ADJ,$-2
AJMP M_ADD
KEY_S:
JB S_ADJ,KEY_ST
ACALL D10MS
JNB S_ADJ,$-2
AJMP S_ADD
KEY_ST:
JB STR,RT
ACALL D10MS
JNB STR,$-2
AJMP K_STR
RT:
RET
H_ADD:
JB 7FH,Y_ADD ;7FH为日期/时间切换键标志。1为年月日。
MOV A,HOUR
ADD A,#01H
DA A
CJNE A,#24H,H_ADD1
MOV A,#0
H_ADD1:
MOV HOUR,A
AJMP RT
Y_ADD:
MOV A,YEAR
ADD A,#01H
DA A
CJNE A,#20H,Y_ADD1
MOV A,#0
Y_ADD1:
MOV YEAR,A
AJMP RT
M_ADD:
JB 7FH,MO_ADD
MOV A,MIN
ADD A,#01H
DA A
CJNE A,#60H,M_ADD1
MOV A,#00H
M_ADD1:
MOV MIN,A
AJMP RT
MO_ADD:
MOV A,MONTH
ADD A,#01H
DA A
CJNE A,#13H,MO_ADD1
MOV A,#1
MO_ADD1:
MOV MONTH,A
AJMP RT