📄 time.c
字号:
//---------------------------------------------------------------
// Note Frequency @ 4MHz Crystal Oscillator
//---------------------------------------------------------------
/*
#define Do1 0xFB // 131Hz
#define Re1 0xF4 // 147Hz
#define Mi1 0xEE // 165Hz
#define Fa1 0xEC // 175Hz
#define Sol1 0xE7 // 197Hz
#define Ra1 0xE3 // 220Hz
#define Chi1 0xBF // 247Hz
#define Do2 0xFB // 262Hz
#define Re2 0xF4 // 294Hz
#define Mi2 0xEE // 330Hz
#define Fa2 0xEC // 349Hz
#define Sol2 0xE7 // 392Hz
#define Ra2 0xE3 // 440Hz 坷纳胶飘扼 扁霖 林颇荐
*/
#define Chi2 0xFE // 494 --> 496Hz
#define Do3 0xFB // 523 --> 512Hz
#define Re3 0xF4 // 587 --> 590Hz
#define Mi3 0xEE // 659 --> 665Hz
#define Fa3 0xEC // 698 --> 694Hz
#define Sol3 0xE7 // 784 --> 781Hz
#define Ra3 0xE3 // 880 --> 868Hz
#define Chi3 0xBF // 988 --> 976Hz
#define Do4 0xBB // 1046 --> 1042Hz
#define Re4 0xB4 // 1175 --> 1179Hz
#define Mi4 0xAE // 1319 --> 1330Hz
#define Fa4 0xAC // 1397 --> 1389Hz
#define Sol4 0xA7 // 1568 --> 1563Hz
#define Ra4 0xA3 // 1760 --> 1736Hz
#define Chi4 0x7F // 1975 --> 1953Hz
#define Do5 0x7B // 2092 --> 2083Hz
#define Re5 0x74 // 2350 --> 2358Hz
#define Mi5 0x6E // 2638 --> 2660Hz
#define Fa5 0x6C // 2794 --> 2778Hz
#define Sol5 0x67 // 3136 --> 3125Hz
#define Ra5 0x62 // 3520 --> 3571Hz
#define Chi5 0x3E // 3950 --> 3968Hz
//---------------------------------------------------------------
// Melody : "炉啊"
//---------------------------------------------------------------
CODE uchar Tab_Beep_JjangGa[] =
{ Allegro/16,Ra4, // 傈林邦
Allegro/16,Chi4, //
Allegro/16,Do5, //
Allegro/16,Ra4, //
Allegro/8, Ra4, //
Allegro/8, Mi4, //
Allegro/8, Fa4, //
Allegro/8, Re4, //
Allegro/8, Mi4, //
Allegro/8, Do4, //
Allegro/16,Chi3, //
Allegro/16,Do4, //
Allegro/16,Re4, //
Allegro/16,Mi4, //
Allegro/8, Do4, //
Allegro/8, Chi3, //
Allegro/8, Ra3, //
Allegro/8, Sol3-3, // #
Allegro/8, Ra3, //
Allegro/1, PAUSE, //
//-------------------------------------------------
Allegro/8, Mi4, //
Allegro/16,Mi4, //
Allegro/16,Mi4, //
Allegro/8, Mi4, //
Allegro/8, Do4, //
Allegro/4, Re4-2, //
Allegro/8, Re4-3, // #
Allegro/16,Chi3, //
Allegro/16,Chi3, //
Allegro/8, Re4, //
Allegro/16,Re4, //
Allegro/16,Re4, //
Allegro/8, Re4, //
Allegro/8, Do4, //
Allegro/4, Ra3, //
Allegro/4, PAUSE, //
Allegro/8, Ra3, //
Allegro/16,Ra3, //
Allegro/16,Ra3, //
Allegro/8, Ra3, //
Allegro/8, Ra4, //
Allegro/8, Sol4, //
Allegro/16,Fa4, //
Allegro/16,Fa4, //
Allegro/8, Fa4, //
Allegro/8, Mi4, //
Allegro/16,Mi4, //
Allegro/16,Mi4, //
Allegro/16,Mi4, //
Allegro/16,Do4, //
Allegro/8, Re4, //
Allegro/4, Mi4, //
Allegro/4, PAUSE, //
Allegro/8, Mi4, //
Allegro/16,Mi4, //
Allegro/16,Mi4, //
Allegro/8, Mi4, //
Allegro/16,Do4, //
Allegro/4, Re4-3, // #
Allegro/8, Re4-3, //
Allegro/16,Chi3, //
Allegro/16,Chi3, //
Allegro/8, Re4, //
Allegro/16,Re4, //
Allegro/16,Re4, //
Allegro/8, Re4, //
Allegro/8, Mi4, //
Allegro/4, Do4, //
Allegro/4, PAUSE, //
Allegro/8, Mi4, //
Allegro/16,Mi4, //
Allegro/16,Ra4, //
Allegro/16,Ra4, //
Allegro/8, Ra4, //
Allegro/4, Do5, //
Allegro/8, Chi4, //
Allegro/8, Ra4, //
Allegro/8, Do5, //
Allegro/16,Do5, //
Allegro/16,Chi4, //
Allegro/8, Chi4, //
Allegro/16,Chi4, //
Allegro/4, Ra4, //
Allegro/4, PAUSE, //
//--------------------------------------
Allegro/16,Ra4, //饶放备
Allegro/16,Chi4, //
Allegro/16,Do5, //
Allegro/16,Ra4, //
Allegro/8, Ra4, //
Allegro/8, Mi4, //
Allegro/8, Fa4, //
Allegro/8, Re4, //
Allegro/8, Mi4, //
Allegro/8, Do4, //
Allegro/16,Chi3, //
Allegro/16,Do4, //
Allegro/16,Re4, //
Allegro/16,Mi4, //
Allegro/8, Do4, //
Allegro/8, Chi3, //
Allegro/8, Ra3, //
Allegro/8, Sol3-3, // #
Allegro/4, Ra3, //
Allegro/2, PAUSE, //
Allegro/16,Ra4, //
Allegro/16,Chi4, //
Allegro/16,Do5, //
Allegro/16,Ra4, //
Allegro/8, Ra4, //
Allegro/8, Mi4, //
Allegro/8, Fa4, //
Allegro/8, Re4, //
Allegro/8, Mi4, //
Allegro/8, Do4, //
Allegro/16,Chi3, //
Allegro/16,Do4, //
Allegro/16,Re4, //
Allegro/16,Mi4, //
Allegro/8, Do4, //
Allegro/8, Chi3, //
Allegro/8, Ra3, //
Allegro/8, Sol3-3, // #
Allegro/8, Ra3, //------------
EOT,EOT // End of table
};
//---------------------------------------------------------------
// Melody sound : "绊氢狼 航"
//---------------------------------------------------------------
CODE uchar Tab_Beep_Home[] =
{ Andante/8,Sol3, //
Andante/100,PAUSE, //
Andante/8,Sol3, //
Andante/16,Mi3, //
Andante/16,Fa3, //
Andante/8,Sol3, //
Andante/8,Ra3, //
Andante/100,PAUSE, //
Andante/8,Ra3, //
Andante/4,Sol3, //
Andante/100,PAUSE, //
Andante/8,Sol3, //
Andante/8,Do4, //
Andante/8,Mi4, //
Andante/16,Re4, //
Andante/16,Do4, //
Andante/2, Re4, //
Andante/8,Mi4, //
Andante/100,PAUSE, //
Andante/8,Mi4, //
Andante/8,Re4, //
Andante/8,Re4, //
Andante/8,Do4, //
Andante/16,Re4, //
Andante/16,Do4, //
Andante/4,Ra3, //
Andante/8,Sol3, //
Andante/100,PAUSE, //
Andante/8,Sol3, //
Andante/100,PAUSE, //
Andante/8,Sol3, //
Andante/16,Mi3, //
Andante/16,Re3, //
Andante/2,Do3, // --------------
EOT,EOT // End of table
};
//---------------------------------------------------------------
// off sound : "荤扼咙 瓤苞澜"
//---------------------------------------------------------------
CODE uchar Tab_Beep_Off[]= //
{ Andante/60,Mi4, //
Andante/60,Re4, //
Andante/60,Do4, //
Andante/60,Chi3, //
Andante/50,Ra3, //
Andante/50,Sol3, //
Andante/50,Fa3, //
Andante/30,Mi3, //
Andante/30,Re3, //
Andante/20,Do3, //
EOT,EOT // End of table
};
//---------------------------------------------------------------
// 1736 Hz beep sound table
//---------------------------------------------------------------
CODE uchar Tab_Alarm_High[]=
{ Andante/20,Ra4, // 1.736 kHz
Andante/50,PAUSE, //
Andante/20,Ra4, //
Andante/50,PAUSE, //
Andante/20,Ra4, //
Andante/20,PAUSE, //
Andante/20,Ra4, //
Andante/50,PAUSE, //
Andante/20,Ra4, //
Andante/50,PAUSE, //
Andante/20,Ra4, //
EOT,EOT // End of table
};
//---------------------------------------------------------------
// 521 Hz beep sound table
//---------------------------------------------------------------
CODE uchar Tab_Beep_Low[]=
{ Andante/20,Do3, // 521 Hz
Andante/50,PAUSE, //
Andante/20,Do3, //
Andante/50,PAUSE, //
Andante/20,Do3, //
Andante/8, PAUSE, //
Andante/20,Do3, //
Andante/50,PAUSE, //
Andante/20,Do3, //
Andante/50,PAUSE, //
Andante/20,Do3, //
EOT,EOT // End of table
};
//---------------------------------------------------------------
// task : Melody start
//---------------------------------------------------------------
void Melody_Out(void) //
{
TM2 = 0x00; //
TDR2 = 249; // 16ms interval
TM2 = 0x13; // T2 psc = 64us
rMelody_cnt = 1; //
T2E = ON; // Timer2 interrupt enable
}
//==================================================================
// task : Time check process
//==================================================================
//---------------------------------------------------------------
// task : Timer2 25 mSec time interval interrupt
//---------------------------------------------------------------
void T2_Int_Handler(void) // bit timer
{
T2IF = OFF; // 06-07-25 appended !
if (rMelody_cnt) //
rMelody_cnt--; // 50 x N ms
else
{ iTemp = *wMelody_Ptr++; //
if (iTemp == EOT) //
{ T2E = OFF; //
R0FUNC= 0x00; // pulse out
}
else rMelody_cnt = iTemp; //
iTemp = *wMelody_Ptr++; //
if(iTemp == PAUSE) //
R0FUNC= 0x00; // pulse out
else if (iTemp != EOT) //
{ BUZR = iTemp; //
T2E = ON; // timer2 interrupt enable
R0FUNC= 0x10; // pulse out
}
}
// rStop_Timer = 250; // 20ms x 150 = 3sec delay before STOP mode in
}
//---------------------------------------------------------------
// Clock count and display
//---------------------------------------------------------------
void Process_Time(void)
{
if(f_Minute) //
{ f_Minute = OFF; //
rMinute++; // Which minute?
if(rMinute > 59) // 0~59
{ rMinute = 0; //
rHour++; // Which hour?
if (rHour > 23) // 0~23
{ rHour = 0; //
rDate++; // Which date?
if (Check_Last_Date()); // 30/31 or 28/29 modification
{ rDate = 1; //
rMonth++; // 1~12 Which month?
if (rMonth > 12) //
{ rMonth = 1; //
rYear++; // 2000~2099 Which year?
} //
} //
Check_Week_Day(); // 0~6 Which week day?
}
}
Clock_Hex_Decimal(); // change hex to decimal for LCD
if((rHour == rAlram_Hour)&&(rMinute == rAlram_Minute)) //
rMelody_Mode = BEEP_ALARM; // check Alarm
}
switch(rMelody_Mode) // melody service
{
case BEEP_ALARM: //
(uchar *)wMelody_Ptr = &Tab_Alarm_High[0]; //
Melody_Out(); //
break; //
case BEEP_OFF: //
(uchar *)wMelody_Ptr = &Tab_Beep_Off[0]; //
Melody_Out(); //
break; //
case BEEP_ERROR: //
(uchar *)wMelody_Ptr = &Tab_Beep_Home[0]; //
Melody_Out(); //
break; //
case BEEP_LOW: //
(uchar *)wMelody_Ptr = &Tab_Beep_Low[0]; //
Melody_Out(); //
break; //
case BEEP_JjangGa: //
(uchar *)wMelody_Ptr = &Tab_Beep_JjangGa[0]; //
Melody_Out(); //
break; //
}
rMelody_Mode = BEEP_NONE; //
}
//==================================================================
/* the end of time.C */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -