基于KeilC51软件的电子钟设计与制作(2)

发布时间:2021-06-08

18

鄂 州 大 学 学 报第14卷

表1 电子钟控制软件片内RAM及标志位分配表

地 址30H~35H3CH~3FH40H~42H50H~7FHPSW.5PSW.1

功 能显示缓冲区,时、分、秒

(高位在前)计时缓冲区,时、分、

秒、100ms闹钟值寄存区,时、分、秒

堆栈区计时显示允许位(1:禁止,0:允许)闹钟标志位

(1:正在闹响,0:未闹响)

F0F1

00

名 称

DISP0~DISP5HOUR,MIN,

SEC,MSECAHOUR,AMIN,ASEC

初始化值00H00HFFH

2.2 软件设计

软件设计可分为以下几个功能模块:

(1)主程序:初始化与键盘监控。流程图如图2所示:

图2 主程序流程图

(2)计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。定时器0每隔100ms溢出中断一次,则循环中断10次延时时间为1s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00。

注意:第一,定时器溢出产生中断请求,CPU并不一定立即响应中断,而可能需要延迟一个中断响应时间之后才能响应中断,中断响应时间大约为3~8个机器周期。显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精度,必须采取措施进行补偿。我们采用增大重装的定时器0初值的方法来减少定时器0定时时间。具体应调整为多大,一般需要通过调试来确定。第二,时间是按十进制递增,而MCS-51单片机只有二进制加法指令,因此用加法指令计中断服务子程序CLOCK程序。

;***定时器0中断服务子程序CLOCK***

CLOCK:MOVTL0,#0B7H

MOVTH0,#3CH;重装初值PUSHPSW

PUSHACC;现场保护INCMSECMOVA,MSEC

CJNEA,#10,DONEMOVMSEC,#00HMOVA,SECINCADAA

MOVSEC,A

CJNEA,#60,DONEMOVSEC,#00HMOVA,MININCADAAMOVMIN,A

CJNEA,#60,DONEMOVMIN,#00HMOVA,HOURINCADAA

MOVHOUR,A

CJNEA,#24,DONEMOVHOUR,#00H

DONE:POPACC

POPPSW;恢复现场RETIEND

(3)时间设置与闹钟设置:由键盘输入设置当前时间与定时启闹时间。

(4)显示:完成6位动态显示,分别显示时、分、秒。

(5)键盘扫描:判断是否有键按下,并求取键号。

(6)定时比较:判断启闹时间到否?如时间到,则启动蜂鸣器鸣叫。

(7)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性检测等。3 在线仿真调试

在线仿真调试的任务是利用开发工具,发现和纠正程序错误,同时也能发现硬件故障。

KeilC51提供了如复位、运行、暂停、单步、过

基于KeilC51软件的电子钟设计与制作(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219