8253A驱动的电子时钟程序设计与仿真

需积分: 10 3 下载量 17 浏览量 更新于2024-09-12 收藏 209KB DOC 举报
"这篇资源是关于使用Protues软件仿真的电子时钟程序设计,主要讲述了电子时钟的三个核心组成部分:显示模块、对时模块和时钟运算模块。电子时钟采用8253A可编程定时/计数器进行时间计算,并利用中断服务程序更新显示。程序使用C语言编写,包含头文件`keil.h`,并定义了相关寄存器和控制位。同时,还提供了月份的英文字符串数组和一系列辅助函数,如延时、写指令、写数据和显示数字等。" 在这个电子时钟程序中,主要知识点包括: 1. **电子时钟结构**:由显示模块、对时模块和时钟运算模块构成。显示模块利用7段显示器展示时间;对时模块和时钟运算模块负责处理时间的增加和重置。 2. **时间进位逻辑**:秒、分、时在达到特定边界时需自动清零并向前一位进位,例如秒到达60时向分进1,分到达60时向时进1,时到达24时清零重新开始。 3. **中断机制**:时钟运算通过8253A的中断来实现。8253A工作在模式三,产生1KHz的方波,该方波作为定时/计数器2的时钟,每秒产生一个负脉冲,触发中断服务程序,更新时间。 4. **8253A定时/计数器**:8253A是一个可编程定时/计数器,用于精确的时间计算。它的工作模式、计数初值以及输入时钟频率决定了其输出的方波频率。 5. **C语言编程**:程序使用C语言编写,定义了几个关键的函数,如`delay()`用于延时,`write_com()`用于写指令,`write_dat()`用于写数据,`deplay()`用于显示数字。 6. **LCD接口**:通过P2口与LCD显示器交互,控制RS、RW和EN引脚实现对LCD的操作。 7. **时间变量和初始化**:程序中定义了存储年、月、日、时、分、秒的变量,并在`init()`函数中进行了初始化。 8. **日期处理**:包含了一个`test_yue()`函数,可能用于根据月份和年份计算该月的天数,但具体内容没有给出。 9. **定时器T0**:设置TMOD寄存器使T0工作在方式1,用于产生定时中断,初值设置使得中断间隔为50ms。 这个程序展示了如何利用微控制器(可能是51系列)和外围设备构建一个简单的电子时钟系统,涵盖了中断处理、定时器配置、LCD显示控制等多个嵌入式系统的核心概念。