📄 time.c
字号:
//timer module.
#include "pic16f62xa.h"
#include "pic.h"
#include "typedefine.h"
#include "extern.h"
void TimeCntModule(void);
//定时器0初始化
void time0init(void)
{
OPTION |= 0b00000111; //bit5 T0CS 清零为选定定时器模式;
OPTION &= ~0b00111101; //bit4 T0SE 边缘选择;
TMR0 = 0x80;
T0IE = 1; // enable timer interrupt.
}//void time0init(void)
// timebase module.
void time_mission (void) //每500us时间到进入一次;
{
if(timeflag)
{
timeflag = 0;
}
if(TimeBase.bits.time1ms)
{
if(TimeShift.bits.time1ms)
{
TimeCntModule();
TimeShift.bits.time1ms = 0;
}
}
else
{
TimeShift.bits.time1ms = 1;
}
if(TimeBase.bits.time2ms)
{
if(TimeShift.bits.time2ms)
{
TimeShift.bits.time2ms = 0;
}
}
else
{
TimeShift.bits.time2ms = 1;
}
if(TimeBase.bits.time4ms)
{
if(TimeShift.bits.time4ms)
{
TimeShift.bits.time4ms = 0;
MissionFlag.bits.ledshow = 1;
NOP();
}
}
else
{
TimeShift.bits.time4ms = 1;
}
if(TimeBase.bits.time8ms)
{
if(TimeShift.bits.time8ms)
{
TimeShift.bits.time8ms = 0;
MissionFlag.bits.keybitmanage = 1;
}
}
else
{
TimeShift.bits.time8ms = 1;
}
if(TimeBase.bits.time64ms)
{
if(TimeShift.bits.time64ms)
{
MissionFlag.bits.ledshowdigitcou = 1;
TimeShift.bits.time64ms = 0;
}
}
else
{
TimeShift.bits.time64ms = 1;
}
}//void time_mission (void)
//1ms计时函数
void TimeCntModule(void)
{
static int ninemsflag;
static uint oneSecCou;
static uchar keyscancou;
static uint KeyScanSecCou;
keyscancou++;
if(keyscancou >= 2)
{
keyscancou = 0;
MissionFlag.bits.scankey = 1;
}
ninemsflag++ ;
if(ninemsflag >= 9)
{
ninemsflag = 0;
MissionFlag.bits.keymanage=1;
}
///一个原因:
// 因为,,,,,,字节与字节之间的时间间隔运小于帧与帧之间的时间间隔.
// 当receTimeOut记时到的时候,一帧也早就发送完成拉,
// 接受处理帧程序因该早就开始了处理帧的动作.
// 如果没有处理,这里也不等待了,直接清零
if(receTimeOut > 0)
{
receTimeOut--;
if(receTimeOut==0) // && receCount>0)
{
//出错标记也可在这里清除一次.
receCount = 0;
errorCheckout = 0;
//-----------test 需要修改
En_Idlesse();
//------------------------
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -