📄 tm2.c
字号:
/*********************************************************************
* Filename: Tm2.c *
* Date: 10/22/2002 *
* Edit by Yamato View ,Goldenchip Electronic Co. ,Ltd. *
* *
* TEL: 86-0591-3375855-721 *
* *
*********************************************************************/
#include <pic.h>
#include <stdio.h>
#include "lcd.h"
unsigned char seconds = 0x00;
unsigned char minutes = 0x00; // Minutes variable
unsigned char hours = 0x00; // Hours variable
unsigned char monthes = 0x0A;
unsigned char days = 0x14;
unsigned char years = 0x02;
unsigned char daysLmt;
extern char Temp;
/*********************************************
* Real Time Clock Update and Display Code *
*********************************************/
void Dayscount(void)
{
switch(monthes)
{
case 1 : daysLmt = 31;break;
case 2 : daysLmt = 28;break;
case 3 : daysLmt = 31;break;
case 4 : daysLmt = 30;break;
case 5 : daysLmt = 31;break;
case 6 : daysLmt = 30;break;
case 7 : daysLmt = 31;break;
case 8 : daysLmt = 31;break;
case 9 : daysLmt = 30;break;
case 10: daysLmt = 31;break;
case 11: daysLmt = 30;break;
case 12: daysLmt = 31;break;
}
}
void Time_Disp1(void)
{
Line_1(); // Reset LCD Cusor to home
printf("20");
if (years <10) printf("0");
printf("%d",years); // Print years
printf("-");
if (monthes <10) printf("0"); //
printf("%d",monthes); // Print monthes
printf("-");
if (days<10) printf("0"); //
printf("%d",days); // Print days
}
void Time_Disp2(void)
{
Line_2();
printf("It's %2d",hours); // Print "It's" time
printf(":");
if (minutes<10) printf("0"); // If minutes <10, print leading 0
printf("%d",minutes); // Print minutes
printf(":");
if (seconds<10) printf("0"); // If seconds <10, print leading 0
printf("%d",seconds); // Print seconds
}
void Tm1_disp( void )
{
Time_Disp1();
printf(" %d",Temp);
printf("C ");
Time_Disp2();
}
void Tm1_Update( void )
{
if ( seconds < 59 ) // Is cummulative seconds < 59?
seconds++; // Yes, so increment seconds
else // else seconds => 59
{
seconds = 0x00; // Reset seconds
if ( minutes < 59 ) // Is cummulative minutes < 59?
minutes++; // Yes, so updates minutes
else // else minutes => 59
{
minutes = 0x00; // Reset minutes
if ( hours < 23 ) // Is cummulative hours < 23
hours ++; // Yes, so update hours
else
{
hours = 0x00; // Reset time
Dayscount();
if(days<daysLmt)
days++;
else
{
days=1;
if(monthes<12) monthes++;
else
{
monthes=1;
if (years<99)
years++;
else years=0;
}
}
}
}
}
}
/******************************
* Timer1 initialization code *
******************************/
void Init_Timer1( void )
{
T1CON = 0b00001110; // T1CON register setup
TMR1L = 0x00; // Initialize Timer1 low byte: TMR1L
TMR1H = 0x80; // initialize Timer1 high byte:TMR1H
TMR1IF = 0; // Reset Timer1 Overflow H/W flag
TMR1IE = 1; // Enable Timer1 Overflow interrupt:TMR1IE
PEIE = 1;
TMR1ON = 1; // Turn on Timer1 module: TMR1ON
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -