?? timermanage.c
字號(hào):
/**************************************************************
定時(shí)器管理、計(jì)時(shí)時(shí)鐘
設(shè)計(jì)者:彭恩文
日期:2003/11/02
**************************************************************/
#include "fx2.h"
#include "fx2regs.h"
#include "string.h"
#include "io.h"
#include "led.h"
#include "key.h"
#include "OTimer.h"
BYTE Mini; //分鐘
BYTE Second; //秒
void Disp_Updata()
{
DispBuf[0] = Second % 10; //更新顯示
DispBuf[1] = Second / 10;
DispBuf[2] = Mini % 10+0x80;
DispBuf[3] = Mini / 10;
}
void Clock_Updata(BYTE m_s_flag, BYTE inc_dec_flag)
{
if(m_s_flag == 0) //分鐘
{
if(inc_dec_flag == 0) //加1
{
Mini++;
if(Mini >= 60)
{
Mini = 0;
}
}
else if(inc_dec_flag == 1) //減1
{
Mini--;
if(Mini >= 60)
{
Mini = 59;
}
}
else if(inc_dec_flag == 2) //清零
{
Mini = 0;
}
else if(inc_dec_flag == 3) //置為59
{
Mini = 59;
}
}
else //秒
{
if(inc_dec_flag == 0) //加1
{
Second++;
if(Second >= 60)
{
Second = 0;
}
}
else if(inc_dec_flag == 1) //減1
{
Second--;
if(Second >= 60)
{
Second = 59;
}
}
else if(inc_dec_flag == 2) //清零
{
Second = 0;
}
else if(inc_dec_flag == 3) //置為59
{
Second = 59;
}
}
Disp_Updata();
}
void main()
{
BYTE i;
BYTE temp_data;
IO_Init();
REG_Init();
Disp_Init();
OKey_RP_Init();
Sys_TimerInit (); //系統(tǒng)定時(shí)器初始化
Mini = 0;
Second = 0;
/**************延時(shí)測(cè)試***************/
for(i = 0; i < 17; i++)
{
memset(DispBuf,i,4);//送顯示數(shù)據(jù)
delay(500); //延時(shí)0.5S //等待定時(shí)
}
memset(DispBuf,0,4);
Sys_TimerRequest(OTimerID0,10,1) ; //1S定時(shí)
Sys_TimerRequest(OTimerID1,5,1) ; //word led flash
while(1)
{
Led_Display();
temp_data = Analyse_OTimerID(); //查詢邏輯定時(shí)器
if(temp_data == OTimerID0) //1S定時(shí)到
{
Second++;
if(Second == 60)
{
Second = 0;
Mini++;
if(Mini == 60)
{
Mini = 0;
}
}
Disp_Updata();
}
else if(temp_data == OTimerID1) //WORD LED 閃爍定時(shí)器
{
IOE ^= WORK_LED;
}
////////////////////////////////////////////////////////////
temp_data = OKey_RP_Scan(); //鍵盤(pán)掃描
switch(temp_data)
{
case 3:
Clock_Updata(0,0); //分鐘加1
break;
case 1:
Clock_Updata(0,1); //分鐘減1
break;
case 7:
Clock_Updata(1,0); //秒加1
break;
case 5:
Clock_Updata(1,1); //秒減1
break;
case 2:
Clock_Updata(0,2); //分鐘清零
break;
case 4:
Clock_Updata(0,3); //分鐘置‘59’
break;
case 6:
Clock_Updata(1,2); //秒清零
break;
case 8:
Clock_Updata(1,3); //秒置‘59’
break;
default:break;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -