电脑时钟Word格式.docx

上传人:b****3 文档编号:6631046 上传时间:2023-05-07 格式:DOCX 页数:18 大小:69.09KB
下载 相关 举报
电脑时钟Word格式.docx_第1页
第1页 / 共18页
电脑时钟Word格式.docx_第2页
第2页 / 共18页
电脑时钟Word格式.docx_第3页
第3页 / 共18页
电脑时钟Word格式.docx_第4页
第4页 / 共18页
电脑时钟Word格式.docx_第5页
第5页 / 共18页
电脑时钟Word格式.docx_第6页
第6页 / 共18页
电脑时钟Word格式.docx_第7页
第7页 / 共18页
电脑时钟Word格式.docx_第8页
第8页 / 共18页
电脑时钟Word格式.docx_第9页
第9页 / 共18页
电脑时钟Word格式.docx_第10页
第10页 / 共18页
电脑时钟Word格式.docx_第11页
第11页 / 共18页
电脑时钟Word格式.docx_第12页
第12页 / 共18页
电脑时钟Word格式.docx_第13页
第13页 / 共18页
电脑时钟Word格式.docx_第14页
第14页 / 共18页
电脑时钟Word格式.docx_第15页
第15页 / 共18页
电脑时钟Word格式.docx_第16页
第16页 / 共18页
电脑时钟Word格式.docx_第17页
第17页 / 共18页
电脑时钟Word格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电脑时钟Word格式.docx

《电脑时钟Word格式.docx》由会员分享,可在线阅读,更多相关《电脑时钟Word格式.docx(18页珍藏版)》请在冰点文库上搜索。

电脑时钟Word格式.docx

SECEQU27H

MINEQU28H

HOUREQU29H

ASECEQU2AH

AMINEQU2BH

AHOUREQU2CH

SAFEEQU2DH;

暂存A等特殊寄存器的值,保护作用

KEYEQU2EH;

键值寄存器

ENEQU2FH;

时钟显示使能

CLOSEEQU30H;

关闭定时闹铃使能

TSEQU31H;

调时间使能

MAIN:

MOVSP,#32H

ACALLINIT;

缓冲区初始化

ACALLPT0M0;

T0初始化

L1:

ACALLKEYI;

调用按键子程序

ACALLDEAL;

调用按键处理程序

ACALLFUNC;

调用按键功能判断程序

AJMPL1

RET

***************

T0初始化

****************

PT0M0:

MOVTMOD,#01H;

T0,方式1

MOVTL0,#0B0H

MOVTL1,#3CH

SETBTR0

SETBET0

SETBEA

;

***************

计时、闹钟、显示缓冲区初始化

使能功能初始化

显示缓冲区初始化

INIT:

MOVDISP0,#00H

MOVDISP1,#05H

MOVDISP2,#09H

MOVDISP3,#05H

MOVDISP4,#03H

MOVDISP5,#02H

计时缓冲区初始化

MOVMSEC,#00H;

压缩BCD码

MOVSEC,#50H;

方便检测,设时间23:

59:

50

MOVMIN,#59H

MOVHOUR,#23H

闹钟缓存区

MOVASEC,#56H;

MOVAMIN,#34H

MOVAHOUR,#12H

使能初始化

MOVEN,#01H;

1:

显示缓存区给时钟用0:

显示缓存区给闹钟定时用

SETBP1.1;

关闭闹铃

MOVCLOSE,#00H;

关闭定时闹铃功能

MOVTS,#00H;

关闭调时

RET

****************************

动态显示程序

注意:

内部程序,只让键盘之程序调用

DIR:

MOVR0,#DISP0;

显示缓冲区,第一个地址

MOVR3,#01H;

选位码

MOVA,R3

LD0:

MOVDPTR,#SELKEY;

字位口

MOVX@DPTR,A

MOVDPTR,#TABLE;

给表格首地址

MOVA,@R0

MOVCA,@A+DPTR;

找到对应字码

MOVDPTR,#DTIME;

字形口

MOVX@DPTR,A;

输出数字

ACALLDELAY;

延时1ms

INCR0;

显示下一个字符

MOVA,R3;

未位选码送入A

JBACC.5,EXT;

6位一遍扫完退出

RLA;

左移,下一个LED亮

MOVR3,A

AJMPLD0

EXT:

RET

TABLE:

DB0C0H,0F9H,0A4H,0B0H,99H;

共阳01234

DB92H,82H,0F8H,80H,90H;

56789

DB0FFH;

0AH

DELAY:

MOVR7,#26H;

延时1ms子程序

DL:

MOVR6,#05H

DL1:

DJNZR6,DL1

DJNZR7,DL

*************************

键盘子程序

判断有无按键

KS1:

键扫口

MOVA,#00H

键扫口完为0

MOVDPTR,#KEYIN;

键入口

MOVXA,@DPTR;

从键入口读数剧

CPLA

ANLA,#0FH

扫描按键输入

KEYI:

ACALLKS1

JNZLK1;

有键闭合

NI:

ACALLDIR;

无键闭合,调用显示子程序,延时6ms

AJMPKEYI;

没有按键,接着扫描

LK1:

调用显示子程序的6ms

ACALLDIR;

调用显示子程序的6ms,延时12ms,去抖判断

ACALLKS1;

JNZLK2;

确有按键,跳LK2执行

没有按键,调用显示子程序,延时6ms

LK2:

MOVR2,#0FEH;

列选码赋值R2

MOVR4,#00H;

R4为列计数器

LK4:

键扫口的地址

MOVA,R2;

MOVX@DPTR,A;

键扫口赋值

键入口的地址

读键入口的值

JBACC.0,LONE;

第0行无键闭合,跳到LONE,转判第1行

MOVA,#00H;

第0行有键闭合,首键号0->

A

AJMPLKP;

跳LKP,计算键号

LONE:

JBACC.1,LTWO

MOVA,#08H

AJMPLKP

LTWO:

JBACC.2,LTHR

MOVA,#10H

LTHR:

JBACC.3,NEXT

MOVA,#18H

LKP:

ADDA,R4;

计算键号,即行首键号+列号=键号

PUSHACC;

键号保护

LK3:

调用显示延时,等待按键松开,键号出栈->

ACALLKS1

JNZLK3

POPACC

NEXT:

INCR4;

列计数器加1,扫描下一行

MOVA,R2

JNBACC.7,KND;

判断是否扫完一回

列选码左移,选择第2列

MOVR2,A

AJMPLK4;

继续读键

KND:

AJMPKEYI;

扫完,没有发现按键,退回,继续扫描按键输入

*******************************

按键处理程序

DEAL:

MOVDPTR,#TAB;

找到对应的值

MOVKEY,A;

存储键值

TAB:

DB07H,04H,08H,05H,09H,06H,0AH,0BH;

01234567

DB01H,00H,02H,0FH,03H,0EH,0CH,0DH;

89ABCDEF

DB1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH;

1617181920212223

DB1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH;

2425262728293031

********************************

功能模块

作用:

键盘输入删选

闹钟设置键

0B->

闹钟查看键

0C->

0E->

关闹铃

1F->

没定义,无用按键

FUNC:

MOVA,KEY;

判断是否按了无用键

CJNEA,#1FH,FUNC1;

1F->

RET;

是有用键,跳到FUNC1处理,不是,返回

FUNC1:

判断按下闹钟设置键?

CJNEA,#0AH,FUNC2;

闹钟设置键

ACALLTIMING;

是,调用定时闹铃程序

FUNC2:

判断按下闹钟查看键?

CJNEA,#0BH,FUNC3;

0B->

ACALLWATCH;

是,调用闹钟查看程序

FUNC3:

判断按下时钟键?

CJNEA,#0CH,FUNC4;

0C->

时钟显示键

MOVEN,#01H

FUNC4:

判断按下关闭闹铃功能?

CJNEA,#0EH,FUNC5;

0E->

MOVCLOSE,#00H

FUNC5:

MOVA,KEY

CJNEA,#0FH,FUNC6;

关正在响的闹铃

SETBP1.1

FUNC6:

CJNEA,#0DH,FUNC7

MOVTS,#01H

ACALLTIMING

MOVTS,#00H

FUNC7:

定时闹铃程序

数字键:

0123456789

功能键:

按非数字键退出->

重置

TIMING:

MOVEN,#00H;

关闭时钟显示

MOVR5,#DISP5;

第6LED管的显存位子

TIM3:

MOVA,KEY;

取键值

*******排除非数值键*****************

CJNEA,#00H,ERR0

AJMPTIM0

ERR0:

CJNEA,#01H,ERR1;

判断是否是重置键,是跳出,返回

AJMPTIM0

ERR1:

CJNEA,#02H,ERR2

ERR2:

CJNEA,#03H,ERR3

ERR3:

CJNEA,#04H,ERR4

ERR4:

CJNEA,#05H,ERR5

ERR5:

CJNEA,#06H,ERR6

ERR6:

CJNEA,#07H,ERR7

ERR7:

CJNEA,#08H,ERR8

ERR8:

CJNEA,#09H,JJJ;

JJJ

TIM0:

MOVA,R5

MOVR1,A

MOV@R1,KEY;

存值

*********排除输入格式错误*************

CJNEA,#25H,DY4

MOVA,KEY

CJNEA,#00H,DY50

AJMPDFIN

DY50:

CJNEA,#01H,DY51

DY51:

CJNEA,#02H,JJJ;

MOVA,R5

DY4:

CJNEA,#24H,DY3

MOVA,DISP5

CJNEA,#02H,DFIN

CJNEA,#00H,DY40

DY40:

CJNEA,#01H,DY41

DY41:

CJNEA,#02H,DY42

DY42:

CJNEA,#03H,TIM1

DY3:

CJNEA,#23H,DY1

DY10:

CJNEA,#09H,DY30

JJJ:

AJMPTIM1

DY30:

CJNEA,#08H,DY31

AJMPTIM1

DY31:

CJNEA,#07H,DY32

DY32:

CJNEA,#06H,DFIN

DY1:

CJNEA,#21H,DFIN

AJMPDY10

*********************************

DFIN:

CJNEA,#20H,TIM2

MOVA,DISP5;

把显存里的数据转换成闹铃缓冲区的格式

SWAPA

ADDA,DISP4

************************

PUSHACC

MOVA,TS

CJNEA,#00H,TSJ1

MOVAHOUR,A

AJMPDSJ1

TSJ1:

POPACC

MOVHOUR,A

DSJ1:

MOVA,DISP3

ADDA,DISP2

CJNEA,#00H,TSJ2

MOVAMIN,A

AJMPDSJ2

TSJ2:

MOVMIN,A

DSJ2:

MOVA,DISP1

ADDA,DISP0

CJNEA,#00H,TSJ3

MOVASEC,A

AJMPDSJ3

TSJ3:

MOVSEC,A

DSJ3:

MOVCLOSE,#01H;

开闹铃工能

TIM1:

MOVEN,#01H;

开时钟显示

TIM2:

DECR5

AJMPTIM3

定时时间查看程序

WATCH:

MOVEN,#00H

MOVA,ASEC

MOVR1,#DISP0;

拆分,赋值给ASEC显存

ACALLSPL

MOVA,AMIN

MOVR1,#DISP2;

拆分,赋值给AMIN显存

ACALLSPL

MOVA,AHOUR

MOVR1,#DISP4;

拆分,赋值给AHOUR显存

定时比较模块

定时时间到,就响铃

内涵数,只能定时中断调用

ALARM:

;

DJNZCLOSE,BACK;

CLOSE=0,关闭定时闹铃功能

MOVA,CLOSE

CJNEA,#01,BACK

CJNEA,SEC,BACK

CJNEA,MIN,BACK

CJNEA,HOUR,BACK

CLRP1.1;

开闹铃

BACK:

拆字程序

把计时缓冲区里以压缩BCD码形式的SEC,MIN,HOUR

转换成和显示缓存相匹配的非压缩BCD码DISP0~DISP5的形式

SPL:

MOVSAFE,A;

保护A寄存器

MOV@R1,A

MOVA,SAFE

ANLA,#0F0H

SWAPA

INCR1

RET

T0中断子程序

TI0:

PUSHACC

MOVTL0,#0B0H;

0.1S

MOVTH0,#3CH

INCMSEC

MOVA,MSEC

CJNEA,#0AH,DONE1;

1S

MOVMSEC,#00H

MOVA,SEC

ADDA,#01H;

SEC加1

DAA

CJNEA,#60H,TTT0;

1MIN

MOVSEC,#00H;

SEC=0

AJMPTT0

TTT0:

MOVSEC,A;

SEC赋新值

AJMPDONE;

结束,显示,判断是否到定时时间

TT0:

MOVA,MIN;

MIN加1

ADDA,#01H

CJNEA,#60H,TTT1;

1HOUR

MOVMIN,#00H;

MIN=0

AJMPTT1

TTT1:

MOVMIN,A;

MIN赋新值

TT1:

MOVA,HOUR;

HOUR加1

CJNEA,#24H,TTT2;

MOVHOUR,#00H

AJMPDONE

TTT2:

MOVHOUR,A;

HOUR赋新值

DONE:

MOVA,EN

CJNEA,#01H,DONE1;

EN=1,显存给时钟。

EN=0,显存不赋值,结束

拆分,赋值给S显存

MOVA,MIN

MOVR1,#DISP2;

拆分,赋值给MIN显存

MOVA,HOUR

MOVR1,#DISP4;

拆分,赋值给HOUR显存

ACALLALARM;

判断是否到响铃时间

DONE1:

RETI

END

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2