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

📄 key.c

📁 这是uc/osii在msp430上移植的详细代码
💻 C
📖 第 1 页 / 共 2 页
字号:
			delay(500);
			LedDisply();
		}
		else
		{
			smallLed[0]     = smallLed[0]&(~led16);
			LEDBuf[8]	= smallLed[0];
			delay(500);
			SendGas_Flag=0;
			delay(500);
			LedDisply();
		}
	
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
		case SWITCH:
 		if(Switch_Flag==0)
		{
			smallLed[3]     = smallLed[3]|led37;
			LEDBuf[11]	= smallLed[3];
			delay(500);
			Switch_Flag=1;
			delay(500);
			LedDisply();
		}
		else
		{
			smallLed[3]     = smallLed[3]&(~led37);
			LEDBuf[11]	= smallLed[3];
			delay(500);
			Switch_Flag=0;
			delay(500);
			LedDisply();
		}
	
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
		case ROMOTE:
 		if(Romote_Flag==0)
		{
			smallLed[3]     = smallLed[3]|led38;
			LEDBuf[11]	= smallLed[3];
			delay(500);
			Romote_Flag=1;
			delay(500);
			LedDisply();
		}
		else
		{
			smallLed[3]     = smallLed[3]&(~led38);
			LEDBuf[11]	= smallLed[3];
			delay(500);
			Romote_Flag=0;
			delay(500);
			LedDisply();
		}
	
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
		case FUNC:
 		
  			if(FuncLed_Flag==0)
			{
				
				smallLed[2]     = smallLed[2]&(~led25)&(~led26)|led31;
				LEDBuf[10]	= smallLed[2];
				delay(500);
                                FuncLed_Flag=1;
                                delay(500);
				LedDisply();
			}
			else if(FuncLed_Flag==1)
			{
				
				smallLed[2]     = smallLed[2]&(~led31)&(~led26)|led25;
				LEDBuf[10]	= smallLed[2];
				delay(500);
                                FuncLed_Flag=2;
                                delay(500);
				LedDisply();
			}
			else 
			{
				smallLed[2]     = smallLed[2]&(~led25)&(~led31)|led26;
				LEDBuf[10]	= smallLed[2];
				delay(500);
                                FuncLed_Flag=0;
                                delay(500);
				LedDisply();
			}
			
		
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
		
		case MODE:
 		
  			if(ModeLed_Flag==0)
			{
				
				smallLed[2]     = smallLed[2]&(~led27)|led32;
				LEDBuf[10]	= smallLed[2];
				delay(500);
                                ModeLed_Flag=1;
                                delay(500);
				LedDisply();
			}
			else 
			{
				
				smallLed[2]     = smallLed[2]&(~led32)|led27;
				LEDBuf[10]	= smallLed[2];
				delay(500);
                                ModeLed_Flag=0;
                                delay(500);
				LedDisply();
			}
			
		
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
		case CONTROL:
 		
  			if(Control_Flag==0)
			{
				
				smallLed[2]     = smallLed[2]&(~led29)|led28;
				LEDBuf[10]	= smallLed[2];
				delay(500);
                                Control_Flag=1;
                                delay(500);
				LedDisply();
			}
			else 
			{
				
				smallLed[2]     = smallLed[2]&(~led28)|led29;
				LEDBuf[10]	= smallLed[2];
				delay(500);
                                Control_Flag=0;
                                delay(500);
				LedDisply();
			}
			
		
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
		case SAVE:
 		if(Save_Flag==0)
		{
			smallLed[2]     = smallLed[2]|led30;
			LEDBuf[10]	= smallLed[2];
			smallLed[3]     = smallLed[3]&(~led33);
			LEDBuf[11]	= smallLed[3];
			delay(500);
			Save_Flag=1;
			smallLed[0]     = smallLed[0]|led9;
			LEDBuf[8]	= smallLed[0];
			LEDBuf[6]	= NUM_LED[channel[0]];
			LEDBuf[7]	= NUM_LED[channel[1]];
			delay(500);
			LedDisply();
		CURT_SELT = 0;
		VOLE_SELT = 0;
		CHAN_SELT = 1;
		}
		
		else
		{
			smallLed[2]     = smallLed[2]&(~led30);
			LEDBuf[10]	= smallLed[2];
			delay(500);
			Save_Flag=0;
			delay(500);
			LedDisply();
		}
	        
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
		case LOAD:
 		if(Load_Flag==0)
		{
			smallLed[3]     = smallLed[3]|led33;
			LEDBuf[11]	= smallLed[3];
			smallLed[2]     = smallLed[2]&(~led30);
			LEDBuf[10]	= smallLed[2];
			delay(500);
			Load_Flag=1;
			smallLed[0]     = smallLed[0]|led9;
			LEDBuf[8]	= smallLed[0];
			LEDBuf[6]	= NUM_LED[channel[0]];
			LEDBuf[7]	= NUM_LED[channel[1]];
			delay(500);
			LedDisply();
		CURT_SELT = 0;
		VOLE_SELT = 0;
		CHAN_SELT = 1;
		
		}
		
		else
		{
			smallLed[3]     = smallLed[3]&(~led33);
			LEDBuf[11]	= smallLed[3];
			delay(500);
			Load_Flag=0;
			delay(500);
			LedDisply();
		}
	        
		//Kill_Coder_Flag();
		key_Flag  = 0;
		break;
	        case CONFIRM:
 		if((Save_Flag==1)||(Load_Flag==1))
 		{
 		  Chan_Num=10*channel[0]+channel[1];
 		  switch(Chan_Num)
 		  {  
 		   case 1:
 		   if(Save_Flag==1)
 		   Save((char*)FLASH1_ADR);
 		   else if(Load_Flag==1)
 		   Load((char*)FLASH1_ADR); 		   
 		   LedDisply();
		   key_Flag  = 0;
		   break;
		   case 2:
		   if(Save_Flag==1)
 		   Save((char*)FLASH2_ADR);
 		   else if(Load_Flag==1)
 		   Load((char*)FLASH2_ADR); 		   
 		   LedDisply();
		   key_Flag  = 0;
		   break;
		   case 3:
		   if(Save_Flag==1)
 		   Save((char*)FLASH3_ADR);
 		   else if(Load_Flag==1)
 		   Load((char*)FLASH3_ADR); 		   
 		   LedDisply();
		   key_Flag  = 0;
		   break;
		   }
		   Kill_Coder_Flag();
		}
		else
		{
		smallLed[0]     = smallLed[0]&(~led14)&(~led13)&(~led12)&(~led10)&(~led11);
		LEDBuf[8]	= smallLed[0];
		LEDBuf[0]	= NUM_LED[current[0]];
		LEDBuf[1]	= NUM_LED[current[1]];
		LEDBuf[2]	= NUM_LED[current[2]];
		LEDBuf[3]	= NUM_LED[voltage[0]];
		LEDBuf[4]	= NUM_LED[voltage[1]]&0x7F;
		LEDBuf[5]	= NUM_LED[voltage[2]];
		LedDisply();
		key_Flag  = 0;
		break;
		}
		Kill_Coder_Flag();
		default: 	
		key_Flag  = 0;
		break;
		
	}



        
}


/******************************************************
*  文件说明:
*     文件名:flash.c
*    程序初始化Flash后,首先擦除flash的内容,
*    然后写入write_Buf的内容,接着读出内容到read_Buf
*   程序的执行结果可通过查看read_Buf的值确定是否操作正确
******************************************************/

/**************************************************************
*   读Flash
*    输入参数说明:
*           addr:     读地址
*           length:   要读取的字节数
*           readBuf:  用以存储读取内容的缓存区地址
***************************************************************/
void read_Flash(char* addr,unsigned char* rbuf,int len)
{
    unsigned int cnt;

    while((FCTL3 & 0x01) == 0x0001);            // 等待flash空闲
    for(cnt=0;cnt<len;cnt++)
    {
        *(rbuf+ cnt) = *(addr + cnt);           // 读数据
    }
    FCTL3  = FWKEY + LOCK;                      // Lock
}
/**************************************************************
*
*  函数功能:写数据到Flash
*  输入参数:
*             addr:    地址
*             buf:     要写数据的首地址
*             len:     写入的字节数
***************************************************************/

void write_Flash(char*addr,unsigned char*buf,int len)
{
    unsigned int cnt;

    while((FCTL3 & 0x01) == 0x0001);            // 等待Flash空闲
    FCTL3  = FWKEY;                             // 清除“LOCK”标识
    FCTL1  = FWKEY + WRT;                       // 准备写
    for(cnt=0;cnt<len;cnt++)
    {
        *(addr+cnt) = *(buf + cnt);             // 写数据
    }
    FCTL3  = FWKEY + LOCK;                      // Lock

}
/**************************************************************
*
*   Erase Flash
*   intput:
*          add: address that sepecify a Segment
*
**************************************************************/
void erase_Flash(char* add)
{
    while((FCTL3 & 0x01) == 0x0001);            // 等待空闲
    FCTL3  = FWKEY;                             // 清除 "Lock"
    FCTL1  = FWKEY + ERASE;                     // 准备擦除
    *add   = 2;                                 // 擦除,写任意数均可
    FCTL3  = FWKEY + LOCK;                      // 置“LOCK”

}
/**************************************************************
**************************************************************/
unsigned char FlashBusy()
{ 
    if((FCTL3&BUSY)==BUSY)
    return 1;
    else
    return 0;
}
/**************************************************************
*
*   shutdown_Save
*   intput:
*          add: address that sepecify a Segment
*
**************************************************************/
void Save(char* add)
{
   unsigned char i;
   for(i=0;i<9;i++)
   write_Buf[i]=voltage[i];
   for(i=0;i<6;i++)
   write_Buf[i+9]=current[i];
   for(i=0;i<2;i++)
   write_Buf[i+15]=channel[i];
   for(i=0;i<4;i++)
   write_Buf[i+17]=smallLed[i];
   erase_Flash(add);
   write_Flash(add,write_Buf, 22);
   while(FlashBusy()==1)
   Kill_Coder_Flag();
 
}
void Load(char* addr)
{
   unsigned char i;
   read_Flash(addr,read_Buf,22);
   for(i=0;i<9;i++)
   voltage[i]=write_Buf[i];
   for(i=0;i<6;i++)
   current[i]=read_Buf[i+9];
   for(i=0;i<2;i++)
   channel[i]=read_Buf[i+15];
   for(i=0;i<4;i++)
   smallLed[i]=read_Buf[i+17];
   
   while(FlashBusy()==1)
   Kill_Coder_Flag();
 
   
}

⌨️ 快捷键说明

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