(汇编)实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档