最新修订版日历时钟单片机程序汇编语言.docx

上传人:b****5 文档编号:5930746 上传时间:2023-01-02 格式:DOCX 页数:14 大小:17.97KB
下载 相关 举报
最新修订版日历时钟单片机程序汇编语言.docx_第1页
第1页 / 共14页
最新修订版日历时钟单片机程序汇编语言.docx_第2页
第2页 / 共14页
最新修订版日历时钟单片机程序汇编语言.docx_第3页
第3页 / 共14页
最新修订版日历时钟单片机程序汇编语言.docx_第4页
第4页 / 共14页
最新修订版日历时钟单片机程序汇编语言.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

最新修订版日历时钟单片机程序汇编语言.docx

《最新修订版日历时钟单片机程序汇编语言.docx》由会员分享,可在线阅读,更多相关《最新修订版日历时钟单片机程序汇编语言.docx(14页珍藏版)》请在冰豆网上搜索。

最新修订版日历时钟单片机程序汇编语言.docx

最新修订版日历时钟单片机程序汇编语言

SECEQU50H;设置变量缓冲区

MINEQU51H

HOUREQU52H

DAYEQU53H

YUEEQU54H

YEAREQU55H

ORG0000H

LJMPMAIN

ORG000BH

LJMPT0_INT

ORG0030H

MAIN:

MOVSEC,#56;秒时间初始化

MOVMIN,#59;分

MOVHOUR,#23;时

MOVDAY,#01H;日

MOVYUE,#01H;月

MOVYEAR,#13;年

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

MOVR7,#20;定时器循环次数

MOVIE,#82H不懂不懂

SETBTR0;开启定时器T0

MOVSP,#90H

CLRPSW.1;初始化标调整志位

SETBP1.2;闹铃标志

MOV35H,#0;显示日期和时间的标志

MOV36H,#0;日历闹钟0和1的标志

LOOOP:

LCALLKINP;扫描键盘

JBPSW.5,DOWN4

LCALLKINP1

DOWN4:

LCALLLOOP6

MOVR0,#65H

LCALLDISP

DOWN11:

LJMPLOOOP

SJMP$

KINP1:

CJNEA,#05H,DS0;判断键值是否为5号键;若是,则实现调整LCALLSJTZ

LCALLSJTZ

LJMPDOWN11

DS2:

LCALLKINP

JBPSW.5,DOWN

LCALLKINP1

DS0:

CJNEA,#06H,QH1;判断键值是否为6号键,闹钟;若是,则实现调整

JNBP1.2,DOWN6

INC36H

MOVA,36H

CJNEA,#1,DS01

LJMPDS00

DS01:

CJNEA,#2,DS00

MOVA,#0

MOV36H,A;36H=1闹钟器0

LCALLNAOZ1;36H=0闹钟器1

LCALLLOOP6

MOVR0,#65H

LCALLDISP

LJMPDS2

DOWN6:

SETBP1.2

LJMPDOWN11

DS00:

LCALLNAOZ0

LCALLLOOP6

MOVR0,#65H

LCALLDISP

LJMPDS2

QH:

LCALLKINP

JBPSW.5,DOWN

LCALLKINP1

QH1:

CJNEA,#07H,DOWN;判断键值是否为7号键,切换

MOVA,35H

CPLA;若是,则切换显示,年月日与时分秒切换

MOV35H,A

DOWN:

MOVA,35H

JZSHIJIAN

LCALLLOOP6

MOVR0,#6BH

LCALLDISP

LJMPQH

SHIJIAN:

LCALLLOOP6

MOVR0,#65H

LCALLDISP

BEGIN2:

RET

;判断是否到闹钟时间子程序

PD:

PUSHACC;判断是否到第一个闹钟时间

MOVA,MIN

CJNEA,42H,DOWN1

MOVA,HOUR

CJNEA,43H,DOWN1

CLRP1.2;若到第一个闹钟时间,则亮灯

DOWN1:

MOVA,MIN;判断是否到第二个闹钟时间

CJNEA,44H,DOWN3

MOVA,HOUR

CJNEA,45H,DOWN3

CLRP1.2;若到第二个闹钟时间,则亮灯

DOWN3:

POPACC

RET

;调整子程序

SJTZ:

PUSHPSW

PUSHACC

SJTZ1:

CPLPSW.1;取反标志位

SJTZ2:

JBPSW.1,TS;标志位为1,调时

LCALLTSCX1;标志位为0,调整日期

MOVR0,#6BH

LCALLDISP

LJMPSJTZ2

TS:

CLRTR0

LCALLTSCX0

MOVR0,#65H

LCALLDISP

M8:

POPACC

POPPSW

RET

TSCX0:

LCALLLOOP6;调整时间

MOVR0,#65H

LCALLDISP

LCALLKINP

CJNEA,#03H,M;判断是否为3号键

MOVR0,#SEC;键值为01,即1号键调整秒

MOVA,@R0;进制

CJNEA,#59,M0;判断秒是否为59

MOVSEC,#00;若是,秒清零

LJMPTSCX0

M0:

INCA

MOV@R0,A

LJMPTSCX0

M:

CJNEA,#02H,M1;判断是否为2键

MOVR0,#MIN;若是则调整分钟

MOVA,@R0

CJNEA,#59,N0;判断分是否为59

MOVMIN,#00;若是,分钟清零

LJMPTSCX0

N0:

INCA

MOV@R0,A

LJMPTSCX0

M1:

CJNEA,#01H,M2;判断是否为1号键

MOVR0,#HOUR;键值为3调整小时

MOVA,@R0

CJNEA,#23,N1;判断小时是否为23

MOVHOUR,#00

LJMPTSCX0

N1:

INCA

MOV@R0,A

LJMPTSCX0

M2:

CJNEA,#05,M7

CPLPSW.1

LJMPSJTZ2

LJMPM9

M7:

CJNEA,#06,TSCX0

M9:

RET

TSCX1:

LCALLLOOP6;调整日期

MOVR0,#6BH

LCALLDISP

LCALLKINP

CJNEA,#03H,N2;判断是否为3#键

MOVR0,#DAY;键值为01,调整日期

MOVA,@R0

CJNEA,#31,M3;判断30

MOVDAY,#00

LJMPTSCX1

M3:

INCA

MOV@R0,A

LJMPTSCX1

N2:

CJNEA,#02H,N;判断是否为2键

MOVR0,#YUE

MOVA,@R0

CJNEA,#12,M4;判断月是否12

MOVYUE,#00

LJMPTSCX1

M4:

INCA

MOV@R0,A

LJMPTSCX1

N:

CJNEA,#01H,K1;判断是否为1号键

MOVR0,#YEAR;键值为3调整年

MOVA,@R0

CJNEA,#99,M5

MOVYEAR,#0

LJMPTSCX1

M5:

INCA

MOV@R0,A

LJMPTSCX1

K1:

CJNEA,#05H,TSCX1

SETBTR0

LJMPM8

RET

T0_INT:

CLRTF0

DJNZR7,ONE111

LJMPONE22

ONE111:

LJMPONE

ONE22:

MOVR7,#20

INC50H;秒加一

MOVA,50H

CJNEA,#60,ONE111

MOV50H,#00H

INC51H;分加一

MOVA,51H

CJNEA,#60,ONE

MOV51H,#00H

INC52H;时加一

MOVA,52H

CJNEA,#24,ONE

MOV52H,#00H

MOVA,53H

PUSHACC

ONE8:

MOVA,54H

CJNEA,#2,ONE1

YUE2:

MOVA,55H;2月:

是闰年29天,是平年28天

MOVB,#4

DIVAB

MOVA,B

JZRYUE

PYUE:

POPACC

INC53H

MOVA,53H

CJNEA,#29,ONE

MOV53H,#1

INC54H

LJMPONE10

RYUE:

POPACC

INC53H

MOVA,53H

CJNEA,#30,ONE

MOV53H,#1

INC54H

LJMPONE10

ONE1:

CJNEA,#4,ONE2

SJMPONE7

ONE2:

CJNEA,#6,ONE3

SJMPONE7

ONE3:

CJNEA,#9,ONE4

SJMPONE7

ONE4:

CJNEA,#11,ONE5

ONE7:

POPACC

INC53H

MOVA,53H

CJNEA,#31,ONE

MOV53H,#01H

INC54H;月加一,以上是2,4,6,9,11月

SJMPONE10

ONE5:

POPACC

INC53H

MOVA,53H

CJNEA,#32,ONE

MOV53H,#01H

INC54H;月加一,是31天的月份

ONE10:

MOVA,54H

CJNEA,#13,ONE

MOV54H,#01H

INC55H;年加一

ONE:

LCALLPD

MOVTH0,#3CH

MOVTL0,#0B0H

RETI

LOOP6:

MOVR3,#6

MOVR0,#50H

MOVR1,#60H

LOOP1:

MOVA,@R0

MOVB,#10

DIVAB

MOV@R1,B

INCR1

MOV@R1,A

INCR0

INCR1

DJNZR3,LOOP1

RET

DISP:

MOVR5,#01H;位控初始码(先亮最低位)

LOOP5:

MOVA,#0FFH;共阳灭码

MOVP0,A

MOVA,R5;送位控信号

MOVP2,A

MOVA,@R0;从显示缓冲中取数

MOVDPTR,#TAB

MOVCA,@A+DPTR;查出字形代码

MOVP0,A;送显示字符段代码

ACALLDL1MS;稳定显示信息

DECR0;取下一个数

MOVA,R5

JBACC.5,EXIT;判断是否送到最高位?

RLA

MOVR5,A;得到下一个位控信号

AJMPLOOP5

EXIT:

RET

DL1MS:

MOVR6,#0EFH

DJNZR6,$

RET

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH

;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

KINP:

LCALLKAP;扫描键子程序

JNZKP1

SETBPSW.5;置无键标志

RET

KP1:

LCALLDELY;去抖

LCALLKAP;再次扫描键盘

JNZKP2;转识键码程序

SETBPSW.5;置无键标志

RET

KP2:

CLRPSW.5;置有键操作标志

MOVR2,#0FEH;逐列扫描初始值

MOVR4,#00H;0列加数

SETBP1.0

KP4:

MOVA,R2

MOVP2,A;送列扫描信号

MOVA,P1;回读行信号

JBACC.0,NEXT;不是第一行,转第二行

MOVA,#00H;是第一行,行吗=0

AJMPKP5

KP5:

ADDA,R4;对应的行码+对应的列码=键码

PUSHACC;保护已经得到的键码

KP3:

LCALLDELY

LCALLKAP;继续扫描

JNZKP3;A值不等于0,表示手未松开!

POPACC;A值等于0,手已经松开,弹回键码!

RET

NEXT:

INCR4;下一列列码加1

MOVA,R2

JNBACC.7,KINP;列到最后列了吗?

RLA

MOVR2,A;下一列

AJMPKP4;扫描下一列

KAP:

MOVA,#00H;全扫描字(列)

MOVP2,A;送全扫描字

MOVP1,#0FFH

MOVA,P1;回读行信息

CPLA

ANLA,#03H;得到A值,=0,无键;≠0,有键

RET

DELY:

MOVR6,#14H;去抖!

DL:

MOVR5,#0FFH

DJNZR5,$

DJNZR6,DL

RET

;闹钟0程序

NAOZ0:

MOV40H,MIN;保存原值

MOV41H,HOUR

LCALLTSCX2;调用调整子程序;闹钟0储

MOV42H,MIN

MOV43H,HOUR

LCALLNAOZ00

RET

;闹钟1程序

NAOZ1:

MOV40H,MIN

MOV41H,HOUR

LCALLTSCX2;闹钟1存储

MOV44H,MIN

MOV45H,HOUR

LCALLNAOZ00

RET

NAOZ00:

;恢复原值

MOVMIN,40H

MOVHOUR,41H

RET

TSCX2:

LCALLLOOP6;调整时间

MOVR0,#65H

LCALLDISP

LCALLKINP

CJNEA,#03H,MM;判断是否为3号键

MOVR0,#SEC;键值为01,即1号键调整秒

MOVA,@R0;进制

CJNEA,#59,M00;判断秒是否为59

MOVSEC,#00;若是,秒清零

LJMPTSCX2

M00:

INCA

MOV@R0,A

LJMPTSCX2

MM:

CJNEA,#02H,M11;判断是否为2键

MOVR0,#MIN;若是则调整分钟

MOVA,@R0

CJNEA,#59,N00;判断分是否为59

MOVMIN,#00;若是,分钟清零

LJMPTSCX2

N00:

INCA

MOV@R0,A

LJMPTSCX2

M11:

CJNEA,#01H,M22;判断是否为1号键

MOVR0,#HOUR;键值为3调整小时

MOVA,@R0

CJNEA,#23,N11;判断小时是否为23

MOVHOUR,#00

LJMPTSCX2

N11:

INCA

MOV@R0,A

LJMPTSCX2

M22:

CJNEA,#05,M77

CPLPSW.1

LJMPSJTZ2

LJMPM99

M77:

CJNEA,#06,TSCX2

M99:

RET

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1