基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历) 联系客服

发布时间 : 星期二 文章基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历)更新完毕开始阅读60384797a0c7aa00b52acfc789eb172ded6399ce

单片微型计算机课程设计

基于汇编语言的电子数字钟

整体设计方案

? NINE:中断(TO)计时程序

包含了秒→分→时→日→月→年进位以及判断大小月及平闰年以及生日标志设定

? TEN:中断预置程序

控制预置项目的自动加计数的延时时间, 并能判断大小月及平闰年

? ELEVEN:中断(INT0)控制程序

控制预置的开/关及生日信号的清楚

? TEWLVE:延时程序

用于闪烁时的数码管亮度控制

模块划分中遇到的问题及解决:

模块划分的过程中遇到的问题不多,只做了一个比较大的修改。刚开

始设置模块的时候并没有设定显示缓存LED12、LED34、LED56而是将主显

示模块THREE分成四个部分分别实现对时间、日期、闹铃、生日的显示(编

号FOUR、FIVE,SIX便是删去的另外三个部分的程序名)并通过检测开关决

定跳转到哪一个部分去执行,但经过分析发现这样做极大地浪费了存储空

间而设置显示缓存后,只需要在检测开关后将相应要显示的数据送入显示

缓存并在主程序中对显示缓存进行显示即可,这样做大大地缩减了程序存

储空间而程序可读性也增强了。在程序编码完成后发现,没有必要将SEVEN

显示HAPPY程序同THREE显示主程序单列开来,TWELVE延时程序也并不是必

要的,并且模块的划分还有些值得商榷的地方,本报告中的程序还可以通

过模块划分的优化修改得更加精简一些。

06 电气工程及其自动化 2 班

许伟敏

0603001021124

7

word文档 可自由复制编辑

单片微型计算机课程设计

基于汇编语言的电子数字钟

单模块流程设计

五、单模块流程设计

在完成了系统总流程设计后,便进入到了系统设计中工作量最大的单 模块流程设计。由于系统模块划分虽然是系统设计的基础,但比较简单而 且模块划分有多种方法,因此单模块的设计可以认为是本程序中最关键的 部分。单模块设计的好坏与否决定了系统功能能否被稳定地实现以及下一 阶段调试程序的难度。

鉴于单模块设计的重要性,我在设计中并不急于对模块进行编码,而 是反复论证模块的可行性和流程图,为下一阶段的工作做好准备,同时也 能够尽早发现系统模块划分的错误,加以解决。

㈠各模块设计概述及模块流程图

①初始化模块(ONE)

初始化模块包含了各中断的跳转语句、存储资源的分配、各存储器和寄存器的赋值以及中 断及计时器的状态设置。

源程序中共使用了17字节的内部数据存储地址,其中包含3字节位寻址地址以便于进行位 判断。

三字节的位寻址地址分配如下:

开始 22H—秒的存储地址,方便对整点报时条件进行判断 23H—月的存储地址,方便对大小月平闰年进行判断

跳转指令 资源分配(伪指 令 EQU 及 BIT)

另外一个位寻址字节00H地址拆开用做程序状态标志位

00H(bit,BS)—生日标志位,到生日那天为 1 使程序转入生日显示段

01H(bit,SS)—预置标志,以INT0控制其值,控制预置闪烁的实现

02H(bit,GS)—闪烁标志,在预置标志有效时控制闪烁项目的亮和灭两状态 03H(bit,FC)—频率控制,在整点报时时控制产生低音还是高音

时间、日期、闹 铃时间、生日日 期存储地址赋初 值;各状态标志 位赋初值 设置中断优先 级、各中断工 作方式 初始化模块流程图↑

06 电气工程及其自动化 2 班

04H(bit,NB)—忽略生日标志,控制预置及报时的优先级高于生日显示 05H(bit)—控制生日信号的有效与否,其使用目的参见调试过程

源程序中使用了两个寄存器R1、R0,R1用于控制闪烁的间隔时间, R0用 于显示延时。

在初始化模块中设定了中断的优先级、定时计数器的工作模式、并打开 了定时计数器TO开始计时

其他资源分配项目参见源程序集合及注释。初始化模块指令很大一部分 都是伪指令,方便了后面程序的编写。

许伟敏

0603001021124

8

word文档 可自由复制编辑