📄 main_back.c
字号:
#include <msp430x41x.h>
#include "main.h"
#include "key.h"
#include "display.h"
#include "timer.h"
const unsigned char LCD_Tab[] = {
SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F, // Displays "0"
SEG_B + SEG_C, // Displays "1"
SEG_A + SEG_B + SEG_D + SEG_E + SEG_G, // Displays "2"
SEG_A + SEG_B + SEG_C + SEG_D + SEG_G, // Displays "3"
SEG_B + SEG_C + SEG_F + SEG_G, // Displays "4"
SEG_A + SEG_C + SEG_D + SEG_F + SEG_G, // Displays "5"
SEG_A + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G, // Displays "6"
SEG_A + SEG_B + SEG_C, // Displays "7"
SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G, // Displays "8"
SEG_A + SEG_B + SEG_C + SEG_D + SEG_F + SEG_G, // Displays "9"
SEG_A + SEG_B + SEG_C + SEG_E + SEG_F + SEG_G, // Displays "A"
SEG_B + SEG_C + SEG_E + SEG_F + SEG_G, // Displays "H"
SEG_A + SEG_D + SEG_E + SEG_F, // Displays "C"
SEG_D + SEG_E + SEG_F, // Displays "L"
SEG_A + SEG_B + SEG_E + SEG_F + SEG_G, // Displays "P"
0x00 // Displays Blank
};
unsigned int MODE=0; //系统状态
unsigned char set_flag = 0;
unsigned char editing = 0; //定义修改标志
unsigned char flash = 0; //被修改位闪烁标志
unsigned char first_start = 0;
unsigned char low_bat = 0; // low battary voltage flag
unsigned int minute;
unsigned char second;
unsigned char bat_second = 0;
unsigned char bat_minute = 0;
unsigned char ge=0,shi=0,bai=0;
unsigned int timer_set = 60; // count_down timer value
//int timer_buffer[2] = {0}; //for MINITE and SECOND storage
unsigned char time_disbuff[6] = {0}; //datas for LCD display
//循环一次约5us
void delay(unsigned int v)
{
while(v!=0)v--;
}
void InitPort(void)
{
P1IE = 0;
P1IFG = 0;
P1IES |= STOP_DOWN+START_UP+SET;
P1IE |= STOP_DOWN+START_UP+SET; //BIT3+BIT4+BIT5;
//设置比较器,做电池电压检测。接P1.6,CA0
CACTL1 |= CARSEL+CAREF_2+CAON;//CAIES+CAIE+CAON;
CACTL2 |= P2CA0+CAF;
//CACTL1 &= ~CAON;
//P1.7做电池欠压指示,正常输出0,欠压输出方波信号,指示灯闪烁
P1DIR |= BIT7;
P1OUT &= ~BIT7;
//P2.0 控制电机启停,初始状态输出为0,关闭电机
P2DIR |= BIT0;
P2OUT &= ~BIT0;
}
void InitSys(void)
{
FLL_CTL0 |= XCAP14PF;
//TACTL = TASSEL0+MC1+TACLR;
InitPort();
InitBt();
InitLcd();
}
//启动电机,开始采样
void motor_start(void)
{
if(minute<1)return;
P2OUT |= BIT0;
/*
if(first_start)
{
delay(40000);
delay(30000);
first_start = 0;
}*/
//IE2 |= BTIE; //开启BT中断
}
//关闭电机,停止采样,采样时间回复初始值
void motor_stop(void)
{
P2OUT &= ~BIT0;
//IE2 &= ~BTIE; //关闭BT中断
minute = timer_set;
second = 60;
LCD_update();
}
void main (void)
{
//int timer_set = 60; // 默认设置时间,分钟
WDTCTL = WDTPW + WDTHOLD;
InitSys();
_EINT();
minute = timer_set;
second = 60;
LCD_update();
while(1)
{
// _BIS_SR(LPM3_bits+GIE);
switch(MODE)
{
case MODE_SET_TIME:
{
set_time();
break;
}
case MODE_START:
{
motor_start();
time_convert();
time_display();
break;
}
case MODE_STOP:
{
motor_stop();
break;
}
default:
{
//_BIC_SR_IRQ(LPM3_bits);
break;
}
}
}
}
//interrupt[TIMERA0_VECTOR] void Timer_A (void)
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
//_DINT();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -