⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main_back.c

📁 自己开发的实用的430定时器自己开发的实用的定时器自己开发的实用的定时器自己开发的实用的定时器
💻 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 + -