📄 timermanage.c
字号:
/**************************************************************
定时器管理、计时时钟
设计者:彭恩文
日期: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 (); //系统定时器初始化
Mini = 0;
Second = 0;
/**************延时测试***************/
for(i = 0; i < 17; i++)
{
memset(DispBuf,i,4);//送显示数据
delay(500); //延时0.5S //等待定时
}
memset(DispBuf,0,4);
Sys_TimerRequest(OTimerID0,10,1) ; //1S定时
Sys_TimerRequest(OTimerID1,5,1) ; //word led flash
while(1)
{
Led_Display();
temp_data = Analyse_OTimerID(); //查询逻辑定时器
if(temp_data == OTimerID0) //1S定时到
{
Second++;
if(Second == 60)
{
Second = 0;
Mini++;
if(Mini == 60)
{
Mini = 0;
}
}
Disp_Updata();
}
else if(temp_data == OTimerID1) //WORD LED 闪烁定时器
{
IOE ^= WORK_LED;
}
////////////////////////////////////////////////////////////
temp_data = OKey_RP_Scan(); //键盘扫描
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;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -