在keil设计STC8G2K60S4上RTC计数器值 ,每秒自动加一,并存放于字符数组,不用转变为时间格式,并方便修改和读取
时间: 2023-12-04 19:02:08 浏览: 81
javascript下计数器每秒自动加1
好的,对于您的问题,我可以提供以下代码实现:
```c
#include <STC8.H>
unsigned char code RTC_Tab[] = {0x50,0x59,0x23,0x01,0x01,0x01,0x21}; // RTC初始值,年月日周时分秒
unsigned char RTC_Val[8]; // 存放RTC计数器值的字符数组
unsigned char RTC_Count = 0; // RTC计数器值
void RTC_Init(void)
{
unsigned char i;
for(i = 0; i < 7; i++)
{
RTC_Val[i] = RTC_Tab[i]; // 将RTC初始值存放到RTC计数器值数组中
}
}
void RTC_Update(void)
{
RTC_Count++; // RTC计数器值加1
if(RTC_Count >= 100) // 每秒钟更新一次
{
RTC_Count = 0;
RTC_Val[6]++; // 秒加1
if(RTC_Val[6] >= 60)
{
RTC_Val[6] = 0;
RTC_Val[5]++; // 分加1
if(RTC_Val[5] >= 60)
{
RTC_Val[5] = 0;
RTC_Val[4]++; // 时加1
if(RTC_Val[4] >= 24)
{
RTC_Val[4] = 0;
RTC_Val[3]++; // 周加1
if(RTC_Val[3] >= 8)
{
RTC_Val[3] = 1;
RTC_Val[2]++; // 日加1
if(RTC_Val[2] >= 32)
{
RTC_Val[2] = 1;
RTC_Val[1]++; // 月加1
if(RTC_Val[1] >= 13)
{
RTC_Val[1] = 1;
RTC_Val[0]++; // 年加1
}
}
}
}
}
}
}
}
void main(void)
{
RTC_Init(); // 初始化RTC计数器值数组
while(1)
{
RTC_Update(); // 更新RTC计数器值数组
// 在这里您可以方便地读取RTC计数器值数组并进行修改
}
}
```
上述代码中,我们定义了一个`RTC_Tab`数组存放RTC计数器的初始值,以及一个`RTC_Val`数组存放RTC计数器的实时值。在`RTC_Update`函数中,我们每秒钟更新一次RTC计数器值数组,然后您可以在主函数中方便地读取和修改这个数组。
以上代码仅供参考,您可以根据实际需求进行修改和完善。
阅读全文