基于汇编语言的数字时钟Word格式文档下载.docx

上传人:b****5 文档编号:15767005 上传时间:2022-11-16 格式:DOCX 页数:26 大小:124.53KB
下载 相关 举报
基于汇编语言的数字时钟Word格式文档下载.docx_第1页
第1页 / 共26页
基于汇编语言的数字时钟Word格式文档下载.docx_第2页
第2页 / 共26页
基于汇编语言的数字时钟Word格式文档下载.docx_第3页
第3页 / 共26页
基于汇编语言的数字时钟Word格式文档下载.docx_第4页
第4页 / 共26页
基于汇编语言的数字时钟Word格式文档下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

基于汇编语言的数字时钟Word格式文档下载.docx

《基于汇编语言的数字时钟Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于汇编语言的数字时钟Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。

基于汇编语言的数字时钟Word格式文档下载.docx

校对状态。

不管是进入那种状态,按动SB2皆可以使被调整位进行不进位增量加1变化。

预置量设置完成后,系统将所有的设置存入RAM中,按SB1退出调整状态。

上电后,系统自

动进入计时状态,起始于¡

00¡

分。

SB4为年月日显示转换键,可使原来显示时分

秒转换显示年月日。

三、电路原理分析

1.显示原理

电原理图见附图1。

由6个共阴极的数码管组成时、分、秒的显示。

P0口的8条数据线

P0.0至P0.7分别与两个CD4511译码的ABCD口相接,P2口的P2.0至P2.2分别通过电阻

R10至R13与VT1至VT3的基极相连接。

这样通过P0口送出一个存储单元的高位、低位BCD

显示代码,通过P2口送出扫描选通代码轮流点亮LED1至LED6,就会将要显示的数据在数

码管中显示出来。

从P0口输出的代码是BCD码,从P2口输出的就是位选码。

这是扫描显示

原理。

2键盘及读数原理

键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。

可采用软件去

抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电

平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里

采用软件延时的方法来避开抖动,延时时间20ms.

3连击功能的实现

按下某键时,对应的功能键解释程序得到执行,如操作者没有释放按键,则对应

的功能会反复执行,好象连续执行,在这里我们采用软件延时250ms,当按键没释放则

执行下一条对应程序。

利用连击功能,能实现快速调时操作。

四、程序设计思想和相关指令介绍

本系统的主程序主要完成时间显示和定时输出判断功能。

而年月日显示和各时间单元进

位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。

1.数据与代码转换。

由前述可知,从P2口输出位选码,从P0口输出段选码,LED就会显示出数字来。

但P0

口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是和要显示出的字符表达

的含义是不一致的。

可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显

示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码行转换后,将各个单元数

据的段选代码送入P0口,给CD4511译码后去驱动数码管显示。

具体转换过程如下:

我们先将要显示的数据装入累加器A中,再将A中的数据转换成高低两位的BCD码,

再放回A中,然后将A中的值输出。

如:

有一个单元存储了45这样一位数,则需转换成四

位的BCD码:

(0100)(0101)然后放入A中。

A中BCD码,高位四位代表¡

低四位代

表¡

同时送给两个译码器中,译码后¡

45¡

字就在两个LED中显示出来。

2.计时功能的实现与中断服务程序

时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。

计数器T0打开后,

进入计时,满100毫秒后,重装定时。

中断一次,满一秒后秒进位,满60秒后即为1分钟,

分钟单元进位,60分到了后,时单元进位,24小时满后,天单元进位。

这样然后根据进率,

得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LED中显示出来,

实现时钟计时功能。

累加是用指令INC来实现的。

进入中断服务程序以后,执行PUSHPSW和PUSHA将程序状态寄存器PSW的内容和累

加器A中的数据保存起来,这便是所谓的¡

保护现场¡

.以保护现场和恢复现场时存取关键

数据的存储区叫做堆栈。

在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈

的数据存取与一般的RAM存取又有区别,对它的操作,要遵循¡

后进先出¡

的原则。

3时间控制功能与比较指令

系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:

将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指

令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR指令,将对应的

那路P3置为高电位,开启;

如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB

对应的P3置低电位,二极管截止,。

实现此控制功能用到的比较指令为CJNEA,#direct,

rel,其转移条件是累加器A中的值与立即数不等则转移。

参考文献

1、谢自美,《电子线路设计、实验、测试》武汉:

华中理工大学出版社,2000

2、何书森、何华斌《实用数字电路原理与设计速成》福州:

福建科学技术出版社,2000.6

3、白驹衍,《单片计算机及应用》北京:

电子工业出版社,1999.2

五:

程序

SECEQU32H;

秒即时时间\伪指令

MINEQU31H;

HOUREQU30H;

DAYEQU35H;

MONEQU34H;

YEAREQU33H;

MIN_1EQU41H;

分定时器1路、开存储单元

HOUR_1EQU42H;

DAY_1EQU43H;

MON_1EQU44H;

YEAR_1EQU45H;

MIN_11EQU40H;

分定时器1路、关存储单元

HOUR_11EQU46H;

DAY_11EQU47H;

MON_11EQU48H;

YEAR_11EQU49H;

;

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

ORG0000H

ljmpMAIN

ORG0003H;

中断转换显示年月日、INT0(SB4键)

LJMPSHOW

ORG000BH;

计数中断T0、方式1

LJMPTIME

ORG0013H

LJMPCHANGE;

调整时间、定时、INT1(SB0键)

------主程序

ORG0030H

MAIN:

--------初始化付值

MOVYEAR,#02

MOVMON,#05

MOVDAY,#01

MOVHOUR,#00

MOVMIN,#00

MOVSEC,#00

CLR40H;

定时单元1路清零

CLR41H

CLR42H

CLR43H

CLR44H

CLR45H

CLR46H

CLR47H

CLR48H

CLR49H

-------开中断

MOVTMOD,#01H;

计数、模式1、T0

MOVTL0,#0B0H;

100SM计数定时

MOVTH0,#3CH;

clrp3.0

MOV20H,#0AH;

10次*100SM

SETBPT0;

T0为最高级

SETBTR0;

允许计数

SETBET0;

允许T0中断

SETBEX0;

允许INT0中断

SETBEX1;

允许INT1中断

SETBEA;

开总中断

------显示、定时器启动判断

LOOP:

MOVR1,#30H;

存储单元

MOVR4,#01H;

位选通

MOVR3,#03H;

三组显示

NEXT:

MOVA,@R1;

MOVB,#10;

将存储单元转换成两高低两组的BCD码

DIVAB

SWAPA

ORLA,B

MOVP0,A;

输出

MOVP2,R4

INCR1;

下一单元

MOVA,R4;

RLA;

位移

MOVR4,A

LCALLDE5SM;

延时0.5SM

DJNZR3,NEXT;

全扫描显示一偏

------判断定时输出(只编写了一路)

CJNER7,#88H,LOOP;

是8则开,否则、定时已关、转

---------开

MOVA,YEAR

CJNEA,YEAR_1,LOOP_1;

年比较,不等转关

MOVA,MON

CJNEA,MON_1,LOOP_1

MOVA,DAY

CJNEA,DAY_1,LOOP_1

MOVA,HOUR

CJNEA,HOUR_1,LOOP_1

MOVA,MIN

CJNEA,MIN_1,LOOP_1

CPLP3.0

---------关

LOOP_1:

CJNEA,YEAR_11,LOOP;

年比较

CJNEA,MON_11,LOOP

CJNEA,DAY_11,LOOP

CJNEA,HOUR_11,LOOP

CJNEA,MIN_11,LOOP

LJMPLOOP

-----年月日显示中断子程序

SHOW:

PUSHPSW

pushACC

PUSHB

PUSH01H

PUSH02H

PUSH03H

PUSH04H

MOVR2,#0FFH;

中断扫描次数

TURN:

MOVR1,#33H

MOVR4,#01H

MOVR3,#03H

NEXT_1:

MOVA,@R1

MOVB,#10

MOVP0,A

INCR1

RLA

MOVR4,A

LCALLDE5SM

DJNZR3,NEXT_1

DJNZR2,TURN;

反复显示一定时间后返回

POP04H

POP03H

POP02H

POP01H

POPB

POPACC

POPPSW

RETI

-----计数中断服务子程序

TIME:

PUSHACC

PUSH06H

MOVTH0,#3CH;

重装计数

MOVTL0,#0BH;

DJNZ20H,OUT;

转到中断跳出pop程序

重装:

100*10=1000

-----进位程序

INCSEC

MOVR6,SEC;

CJNER6,#60,OUT;

比较

MOVSEC,#00;

INCMIN

MOVR6,MIN

CJNER6,#60,OUT

INCHOUR

MOVR6,HOUR

CJNER6,#25,OUT

MOVHOUR,

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

当前位置:首页 > 表格模板 > 合同协议

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

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