数字钟---汇编+C语言源码

preview
5星 · 超过95%的资源 需积分: 0 7 下载量 70 浏览量 更新于2010-05-16 1 收藏 43KB DOC 举报
《数字钟---汇编+C语言源码》是一个实践性极强的项目,旨在教你如何用汇编语言和C语言编写一个数字钟程序。这个程序在开机时会显示12:00:00,并且可以通过特定的按键进行时间调整。下面我们将详细探讨其中涉及的关键知识点。 1. **开机计时**: - 开机时,程序会初始化时间为12小时制的12:00:00,并开始计时。这是通过设置初始的秒、分、时寄存器值来实现的。 2. **按键控制**: - 使用P0.0/AD0、P0.1/AD1和P0.2/AD2端口分别控制秒、分和时的调整。每次按键被按下,对应的时间将会增加1。 3. **电路设计**: - 实现数字钟需要特定的电路支持。P0_0至P0_3需添加上拉电阻,以确保信号稳定。 - 单片机系统的P1.0-P1.7与动态数码显示区域的A-H端口相连,用于驱动数码管显示。 - P3.0-P3.7连接到S1-S8端口,用于扫描数码管的位选。 - P0.0/AD0、P0.1/AD1、P0.2/AD2连接独立式键盘,实现按键功能。 4. **动态数码显示**: - 动态数码显示是节省硬件资源的一种常见方法,通过轮流点亮数码管的不同段来显示完整的数字。这需要精确的定时和扫描机制。 5. **独立式按键识别**: - 识别按键状态通常需要消抖处理,避免因机械接触产生的瞬间抖动导致误识别。这里可能涉及到延时函数如`DELY10MS`,确保按键被稳定按下后才执行操作。 6. **数据处理**: - 时间的更新和显示处理涉及到对秒、分、时寄存器的操作,以及对数码管显示缓冲区(DISPBUF)的写入。当超过60时,需要进行进位处理,例如秒超过59则重置为0并累加到分钟。 7. **程序结构**: - 使用了中断服务程序,例如定时器中断INT_T0,用于实现定时任务,如计时更新和数码管的刷新。 - 主程序中,`WT`循环负责检测按键状态,当按键被按下时,执行相应的时间更新。 8. **汇编语言编程**: - 代码中定义了一些常量,如`SECOND`、`MINITE`、`HOUR`等,用于存储时间信息。 - 使用了`LJMP`指令进行跳转,`SETB`指令设置位,`CJNE`指令进行条件判断等汇编语言指令。 9. **C语言混合编程**: - 虽然没有给出C语言部分的代码,但在汇编语言程序中可以结合C语言的编程思想,比如使用函数调用`LCALL DISP`来实现特定功能。 10. **定时器配置**: - 定时器0(T0)被配置为工作在方式1,用作2ms定时器,通过调整TH0和TL0的初值计算出适当的定时周期。 通过这个项目,你可以学习到单片机系统的基本操作,包括I/O口的使用、中断系统、定时器的配置、数码管显示以及汇编语言和C语言的混合编程技术。这不仅有助于理解嵌入式系统的工作原理,也为实际的硬件开发打下基础。