
Keil下用C语言开发的多功能计时器
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本项目介绍如何在Keil环境下使用C语言编写一个具备多种功能的计时器程序,适用于嵌入式系统开发。
#include
这段代码包含了一个定时器中断服务程序、时间读取函数以及设置时间的函数,并且涉及到了I2C通信协议来操作DS1307实时时钟模块。以下是简要概述:
```c
void timer_interrupt_service(void) {
bit EATemp;
if (en == 3) { // 正计时模式
count++;
if(count >= 20){
count = 0;
dsec++; // 每隔约0.1秒,最后一位加一。
if(dsec == 10){
dsec = 0;
sec++;
if(sec == 60) {
sec = 0;
min++;
if(min == 60)
min = 0; // 最大计时到60分钟
}
}
}
}
else { // 倒计时模式
count++;
if(count >= 20){
count = 0;
dsec--;
if(dsec == -1) {
dsec = 9; sec--;
if(sec == -1) {
sec = 59; min--;
if(min == -1)
min = 59;
}
}
}
// 倒计时结束处理
}
dis_min_h=tab[min/10];
dis_min_l=tab[min];
dis_sec_h=tab[sec/10];
dis_sec_l=tab[sec];
}
void ReadTime(unsigned char TIME[7]) {
bit EATemp;
// I2C通信读取时间
}
```
```c
void SetTime(unsigned char TIME[7]){
bit EATemp;
for(temp = 0; temp < 7; ++temp)
TimeTemp[temp] = TIME[temp];
iicstart();
iicwriteda(0xd0);
// I2C通信写入时间
}
```
```c
void SwitchRTC(unsigned char SWITCH){
bit EATemp;
if (SWITCH) temp &= 0x7f;
else temp |= 0x80;
iicstart();
iicwriteda(0xd0);
// I2C通信设置写入
}
```
以上代码展示了如何通过I2C总线来操作DS1307实时时钟模块,包括读取、修改时间以及控制是否允许改变内部的时间。这些函数可以被集成到更复杂的系统中以实现对时钟的精确管理和监控功能。
这段描述总结了上述提供的代码段的主要功能和用途,并且没有包含任何联系方式或网址等信息。
全部评论 (0)


