⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtc.c

📁 用KEIL开发的出租车计费系统
💻 C
字号:
/**************************************************************************
  
						Real Time Clock
  
	File Name:		RTC.c
	Author:			Lin Qian
	Created:		2008/04/28
	Modified:		NO
	Revision: 		1.0
  
***************************************************************************/

#define __RTC
#include "INC\\main.h"
#undef __RTC

// 实时时钟 ******************************
#if RealTimeClock_en
void RealTimeClock (void)
// [注: 本函数必须在<60s的时间内被再次调用.]
{
// --- 变量定义 ---
	static uchar lastSec=0;		// 上一秒时刻
	static bit lastBT500ms=0;	// 上一500ms标记
	uchar Sec;	// 当前秒时刻

// --- Operation ---
	Sec = (uchar)Cnt1s;		// 取当前时间

// 注: 秒计数准确的换算应按以下注释程序. 由于此处负数自动被抛弃负号, 至保留相减的绝对值.
/*
	if (Sec < lastSec)		// 换算秒计数器值
		Sec = Sec+256-lastSec;
	else
		Sec = Sec-lastSec;
*/

	if( lastSec != Sec )
	{
		ClockSec += Sec - lastSec;	// 时钟Sec累加
		lastSec = Sec;

		if( ClockSec >= 60 )	// 满一分钟处理
		{
			ClockSec %= 60;		// 时钟秒清零
			ClockMin++;			// 时钟分累加
		
			if (ClockMin == 60)		// 满一小时处理
			{
				ClockMin = 0;	// 时钟分清零
				ClockHour = (ClockHour + 1) % 24;	// 时钟时累加
			
				// 当在主画面时, 刷新实时时钟Hour显示
				if( MenuMode == MENU_MAIN )
				{
					IntToStr(ClockHour, &TempBuffer[0], 2, RESERVE0);
					LCD_GotoXY(2,0);
					LCD_Print(&TempBuffer[0]);
				}
				
				// 更新实时时钟Hour存储
				x24c02_Write(X24C02_0, EEPROM_CLOCK_HOUR, ClockHour);
				DelayXms(5);
			}

			// 当在主画面时, 刷新实时时钟Min显示
			if( MenuMode == MENU_MAIN )
			{
				IntToStr(ClockMin, &TempBuffer[0], 2, RESERVE0);
				LCD_GotoXY(5,0);
				LCD_Print(&TempBuffer[0]);
			}

			// 更新实时时钟Min存储
			x24c02_Write(X24C02_0, EEPROM_CLOCK_MIN, ClockMin);
			DelayXms(5);
		}

		// 当在主画面时, 刷新实时时钟Sec显示
		if( MenuMode == MENU_MAIN )
		{
			IntToStr(ClockSec, &TempBuffer[0], 2, CLEAR0);
			LCD_GotoXY(14,0);
			LCD_Print(&TempBuffer[0]);
		}
		
		// 更新实时时钟Sec存储
		x24c02_Write(X24C02_0, EEPROM_CLOCK_SEC, ClockSec);
		DelayXms(5);
	}

	if ( MenuMode == MENU_MAIN && BT500ms != lastBT500ms )	// 满500ms处理
	{
		lastBT500ms = BT500ms;
		
		// 刷新时钟":"显示
		LCD_GotoXY(4,0);
		if( BT500ms )
			LCD_Print(":");
		else
			LCD_Print(" ");
	}
}
#endif

//************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -