📄 cputimerb.c.bak
字号:
/**********************************************************
*文件名称:time.c
*当前版本:1.0
*作 者:szb
*编写日期:2006.11.1
*摘 要:为系统提供时钟,并负责键盘扫描
***********************************************************/
#ifndef _TIMEB
#define _TIMEB
#include "datastru.h"
#include "func.h"
#endif
void TBinit(void) //定时器初始化
{
TBCCTL1 = CCIE; // CCR1 interrupt enabled
TBCCR1 = 40960;//32771; // 100ms中断一次
TBCCTL2 = CCIE; // CCR2 interrupt enabled
TBCCR2 = 819;//6554;//16384; // 2ms中断一次
TBCTL = TBSSEL_2 + ID_0 + TBCLR; // SMCLK(3.2768M/8), devider = 1, clear TBR
TBCTL |= MC1; // 以连续计数模式启动TimerB
Degree = 0;
}
interrupt [TIMERB1_VECTOR] void TimerB_ISR(void)
{
_DINT(); //关闭中断
switch (TBIV)
{
case 2: //100ms
/*采用中断方式进行进行时钟计数,现在的写法 有可能产生错误数据例如month=13,调试时应该注意*/
Clocktime[6] = Clocktime[6] + 1;
if (Clocktime[6] == 10) //毫秒进位
{
Clocktime[6] = 0;
Clocktime[5] = Clocktime[5] +1;
}
if (Clocktime[5] == 60) //秒进位
{
Clocktime[5] = 0;
Clocktime[4] = Clocktime[4]+1;
}
if (Clocktime[4] == 60)//分钟进位
{
Clocktime[4] = 0;
Clocktime[3] = Clocktime[3] + 1;
}
if (Clocktime[3] == 24)//小时进位
{
Clocktime[3] = 0;
Clocktime[2] = Clocktime[2] + 1;
}
if (((Clocktime[1] == 1 || Clocktime[1] == 3 || Clocktime[1] == 5 || Clocktime[1] == 7 || Clocktime[1] == 8 ||
Clocktime[1] == 10 || Clocktime[1] == 12) && Clocktime[2] == 32)
||((Clocktime[1] == 4 || Clocktime[1] == 6 || Clocktime[1] == 9 || Clocktime[1] == 11) && Clocktime[2] == 31)
|| (!(Clocktime[0] % 4) && Clocktime[1] == 2 && Clocktime[2] == 30 )
|| (Clocktime[0] % 4 && Clocktime[1] == 2 && Clocktime[2] == 29 )) //日进位
{
Clocktime[2] = 1;
Clocktime[1] = Clocktime[1]+1;
}
if (Clocktime[1] == 13) //月进位
{
Clocktime[1] = 1;
Clocktime[0] = Clocktime[0]+1;
}
if (BeeCount)//售烟定时器
BeeCount--;
TBCCR1 = TBCCR1 + 40960;//32771;
break;
case 4: //2ms
if(FilterEnable == OFF)//加入FilterEnable == OFF条件为了防止在率波过程中,数组中的数据被改动
{
MotorVdetect[Degree] = ADC12MEM0;
PowerVdetect[Degree] = ADC12MEM1;
Degree++;
if (Degree >= 3)
{
Degree = 0; //开始新的一组计数
FilterEnable = ON; //允许滤波
}
}
ADC12CTL0 |= ADC12SC; //检测电压开始新一轮转换
if (MotorRunEnable)
{
BeeNum++;
if(!(P1IN & BIT7) && BeeNum >= 5000)//烟道正转等待时延10s
{
BeeAlarmEnable = BEEALARMCN;
MotorStopEnable = ON;
BeeNum = 0;
}
if(P1IN & BIT7 && BeeNum >= 15000)//烟道反转等待时延30s
{
BeeAlarmEnable = BEEALARMCN;
MotorStopEnable = ON;
BeeNum = 0;
}
TBCCR2 = TBCCR2 + 819;//6554;//16384;
break;
}
BeeNum = 0;
TBCCR2 = TBCCR2 + 819;//819;//6554;//16384;
break;
default:break;
}
_EINT();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -