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

📄 timer.c

📁 自己开发的实用的430定时器自己开发的实用的定时器自己开发的实用的定时器自己开发的实用的定时器
💻 C
字号:
#include "timer.h"



void InitBt(void)
{ 
  BTCTL=BT_ADLY_1000;  // for 1s timer interrupt
  //IE2 &= ~BTIE;
  IE2 |= BTIE; 
}

//时间值转换为LCD显示的单个数字
void time_convert(void)
{
  time_disbuff[0] = minute/100;
  time_disbuff[1] = (minute%100)/10;
  time_disbuff[2] = minute%10;
  
  //time_disbuff[3] = SEG_G;
  
  time_disbuff[4] = second/10;
  time_disbuff[5] = second%10;
}



//设置定时时间
void set_time(void)
{
  
  //IE2 |= BTIE;
        P1IE &= ~(STOP_DOWN+START_UP);
	//second = 60;
	    LCDMEM[0] = LCD_Tab[bai];
		LCDMEM[1] = LCD_Tab[shi];
		LCDMEM[2] = LCD_Tab[ge];
	
        LCDMEM[3] = SEG_G;
        LCDMEM[4] = LCD_Tab[0];
        LCDMEM[5] = LCD_Tab[0];
	
     
    
        while(set_flag==BAIWEI)  //if
        {
          LCDMEM[0] |= SEG_H;
          if(!(P1IN&START_UP))
          {
                bai ++;
				if(bai>9)bai=0;
                LCDMEM[0] = LCD_Tab[bai]|SEG_H;
               
                delay(60000);
          }
          if(!(P1IN&STOP_DOWN))
          {
                bai --;
				if(bai<1)bai=9;
		        LCDMEM[0] = LCD_Tab[bai]|SEG_H;
               
                delay(60000);
          }  
        }
        
        while(set_flag==SHIWEI)
        {
          LCDMEM[1] |= SEG_H;
          if(!(P1IN&START_UP))
          {
                shi ++;
				if(shi>9)shi=0;
		
                LCDMEM[1] = LCD_Tab[shi]|SEG_H;
               
                delay(60000);
          }
          if(!(P1IN&STOP_DOWN))
          {
                shi --;
				if(shi<1)shi=9;
		
                LCDMEM[1] = LCD_Tab[shi]|SEG_H;
               
                delay(60000);
          }  
        }
        
        while(set_flag==GEWEI)
        {
          LCDMEM[2] |= SEG_H;
          if(!(P1IN&START_UP))
          {
                ge ++;
				if(ge>9)ge=0;
		
                LCDMEM[2] = LCD_Tab[ge]|SEG_H;
                
                delay(60000);
          }
          if(!(P1IN&STOP_DOWN))
          {
                ge --;
				if(ge<1)ge=9;
		
                LCDMEM[2] = LCD_Tab[ge]|SEG_H;
                
                delay(60000);
          }  
        }
        
        if(set_flag==DONE)
        {
          set_flag = 0;
          if(bai>0)
          {
            minute = bai*100+shi*10+ge;
          }
          else
          {
            minute =shi*10+ge;
          }
          
          bai=0;shi=0;ge=0;
          
          second = 60;
          ClrLcd();
          LCD_update();
        }
    
    MODE = 0;    
	
    P1IE |= STOP_DOWN+START_UP;
}


// 1000ms timer
#pragma vector = BASICTIMER_VECTOR
__interrupt void BTISR (void)
{
  //if(!(editing))
  //{
    if((MODE == MODE_START)&&(minute>1))
    {
        second --;
    	if(second <1)
    	{
      	second = 60;
      	minute --;
    
      	if(minute<1)
      	{
        	MODE = MODE_STOP;
      	}
        }
    }
    if(!(CACTL2&CAOUT)) // 如果电池电压低,BT提供LED闪烁时基
    {
    	bat_second ++;
    	P1OUT ^= BIT7;
    	if(bat_second>59)
    	{
    		bat_second = 0;
    		bat_minute ++;
    		if(bat_minute>5)   // 检测到电池电压低,5分钟以后关闭电机,停止采样
    		{
    			bat_minute = 0;
    			MODE = MODE_STOP;
    			return;
    		}
    	}
    }
    
    
   
  
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -