TX1C板ds12c887电子表程序设计与设置

需积分: 4 32 下载量 161 浏览量 更新于2024-11-09 收藏 9KB TXT 举报
"TX1C的ds12c887程序是基于TX-1C开发板设计的一个电子表(闹铃)程序,由郭天祥编写。程序涉及到的主要硬件接口和功能包括对DS12C887时钟芯片的操作以及与LCD1602显示器的交互。" 在该程序中,可以看到对多个特殊功能寄存器(SFR)的定义,例如用于控制LCD显示的P2和P3口的某些位,以及与DS12C887通信的P1口的某些位。`#define`语句用于定义这些位,使得代码更易于理解和调试。 `write_ds()`和`read_ds()`函数是与DS12C887时钟芯片进行数据交换的关键。DS12C887是一款实时时钟/日历芯片,能够提供精确的时间保持和报警功能。`write_ds()`用于向芯片写入数据,而`read_ds()`则用于读取芯片中的时间信息。这两个函数的实现通常涉及I2C协议,通过设置P1口的特定引脚来模拟I2C总线上的START、STOP和DATA信号。 `set_alarm()`函数用于设置闹钟时间,它接收三个参数,分别代表小时、分钟和星期。这可能涉及到对DS12C887内部寄存器的操作,以便在指定时间触发报警。 `read_alarm()`函数用于读取当前设置的闹钟信息,可能将DS12C887中存储的闹钟时间返回到程序中,以便在需要时显示或处理。 `set_time()`函数用于设置系统时间,可能通过用户输入或者从DS12C887读取时间后更新内部变量,如`miao`、`shi`、`fen`、`amiao`、`ashi`、`afen`等,这些变量表示分钟、小时、秒、上午/下午标志等。 `delay()`函数是一个简单的延时函数,使用两个嵌套循环来实现微秒级别的延时。这种延时方法在没有高级定时器或RTOS支持的情况下常见于简单嵌入式系统。 `di()`函数是蜂鸣器控制函数,用于在特定时刻发出声音,比如提醒用户闹钟响起或时间已更新。 `write_com()`和`write_date()`函数是用于控制LCD1602显示器的,它们分别发送命令和数据到LCD的控制线和数据线。这些函数的目的是更新LCD显示的内容,如日期、时间或报警状态。 `init()`函数是系统的初始化函数,它开启中断(EA),设置外部中断1(EX1)为边沿触发,并初始化一些状态标志(如`flag1`),以及对DS12C887和LCD1602的初始配置。 整个程序的结构和功能设计是围绕着实现实时时钟和闹钟功能展开的,同时通过LCD显示器提供可视化的时间显示。通过这个程序,我们可以学习到如何在微控制器环境中操作外围设备,如DS12C887时钟芯片和LCD1602显示器,以及如何构建一个简单的实时操作系统组件。