亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rscomm.c

?? MSP430FE42X復(fù)費率電表DEMO(編譯器 IAR 3.42A)
?? C
字號:

//*****************************************************************
// Config UART0
//*****************************************************************
void StartUART0(void)
{
//for ACK=32.768k
//			bps:	300		600		1200	2400	4800	9600	19200	38400
//	ACLK=32.768kHz
//			U0BR1:	00		00		00		00		00		00
//			U0BR0:	6D		36		1B		0D		06		03
//			U0MCTL:	22		D5		03		6B		6F		4A
//	SMCLK=1.048576MHz
//			U0BR1:	0D		06		03		01		00		00		00		00
//			U0BR0:	A7		D3		69		B4		DA		6D		36		1B
//			U0MCTL:	00		FF		FF		FF		55		03		6B		03
	//U0CTL  = 0xD0;	// 1101 0001
	//U0TCTL = 0x10;	// 0001 0000: ACLK, 0010 0000: SMCLK
	//U0RCTL = 0x00;	// 0000 0000
	//U0BR1  = 0x00;	// 0000 0000
	//U0BR0  = 0x1B;	// 0001 1011
	//U0MCTL = 0x03;	// 0000 0011
  UCTL0 |= PENA+PEV+CHAR;         //偶校驗,8位數(shù)據(jù)位,1個停止位//UCTL0 = CHAR;
  UTCTL0 = SSEL0;                 //選擇ACLK
  U0RCTL = 0x00;
  UBR00 = 0x1B;                   // 設(shè)置分頻因子 32k/2400 - 13.65
  UBR10 = 0x00;                        
  UMCTL0 = 0x03;                  // Modulation
  UCTL0 &= ~SWRST;                // Initalize USART state machine  
}

void StopUART0(void)
{
	U0CTL  = 0x00;	// 1101 0001
	U0TCTL = 0x00;	// 0001 0000: ACLK, 0010 0000: SMCLK
	U0RCTL = 0x00;	// 0000 0000
	U0BR1  = 0x00;	// 0000 0000
	U0BR0  = 0x00;	// 0001 1011
	U0MCTL = 0x00;	// 0000 0011
}


void StartUR0(void)
{
#if PCB_VERSION==0
  DM.ucP595OUT &= ~RS485_CONTROL;
  Update_HC595_Port(DM.ucP595OUT);
#elif PCB_VERSION==1  
	COMM_CON485_OUT &=~COMM_CON485_BIT;
#endif   
	COMM_RXD0_DIR &=~COMM_RXD0_BIT;
	COMM_RXD0_SEL |= COMM_RXD0_BIT;
	
	COMM_RXD0_IE = COMM_RXD0M_BIT;
	COMM_RXD0_ME = COMM_RXD0M_BIT;
 
}

void StopUR0(void)
{
#if PCB_VERSION==0

#elif PCB_VERSION==1   
  
	COMM_RXD0_SEL &=~COMM_RXD0_BIT;
	
	COMM_RXD0_IE &=~COMM_RXD0M_BIT;
	COMM_RXD0_ME &=~COMM_RXD0M_BIT;
#endif  
}

void StartUT0(void)
{
#if PCB_VERSION==0
  DM.ucP595OUT |= RS485_CONTROL;
  Update_HC595_Port(DM.ucP595OUT);
#elif PCB_VERSION==1  
	COMM_CON485_OUT |= COMM_CON485_BIT;
#endif   
  
	
	COMM_ACLK_SEL |= COMM_ACLK_BIT;
  COMM_ACLK_DIR |= COMM_ACLK_BIT;
	
	COMM_TXD0_OUT |= COMM_TXD0_BIT;
	COMM_TXD0_DIR |= COMM_TXD0_BIT;
	COMM_TXD0_SEL |= COMM_TXD0_BIT;
	
	COMM_TXD0_IE = COMM_TXD0M_BIT;
	COMM_TXD0_ME = COMM_TXD0M_BIT;
}
void StopUT0(void)
{
//#if PCB_VERSION==0

//#elif PCB_VERSION==1 	
  
  COMM_ACLK_DIR &=~COMM_ACLK_BIT;
	COMM_ACLK_SEL &=~COMM_ACLK_BIT;
	
	COMM_TXD0_OUT &=~COMM_TXD0_BIT;
	COMM_TXD0_DIR &=~COMM_TXD0_BIT;
	COMM_TXD0_SEL &=~COMM_TXD0_BIT;
	
	COMM_TXD0_IE &=~COMM_TXD0M_BIT;
	COMM_TXD0_ME &=~COMM_TXD0M_BIT;
//#endif   
}


//*****************************************************************
// Program Led Trun On
//*****************************************************************
void ComLedOn( unsigned char byte )
{
	if( POWER_TEST_IN & POWER_TEST_BIT)
	{
		DM.ComLedTmr = byte;
		//SetComLed;
	}
}

//*****************************************************************
// Program Led Trun Off
//*****************************************************************
void ComLedOff( void )
{
	if( POWER_TEST_IN & POWER_TEST_BIT)
	{
		if( DM.ComLedTmr > 0 )
		{
			DM.ComLedTmr--;
			//if( DM.ComLedTmr == 0 ) ClrComLed;
		}
		else DM.ComLedTmr=0;
	}
}

//*****************************************************************
// Calculate the CRC
//*****************************************************************
unsigned char ComCRC( void )
{
	unsigned int iii;
	unsigned char Sum;

	Sum=0;
	iii=0;
	while( iii<(DM.ComBuf[RS_LenPtr]+RS_CmdPtr) )
	{
		Sum+=DM.ComBuf[iii];
		iii++;
	}
	return Sum;
}

//*****************************************************************
// Read Data
//*****************************************************************
int ComRead(void)
{
	unsigned int Cmd;
	unsigned int Ptr;
 // unsigned int tempPtr;
 // unsigned char * Buf;
	
	Cmd=((unsigned int)DM.ComBuf[RS_CmdHPtr]<<8)+(unsigned int)DM.ComBuf[RS_CmdLPtr];

	Ptr=0;
	for( Ptr=0;Ptr<ComInfoNum;Ptr++ )
	{
		if( ComInfo[Ptr].ComID==Cmd ) break;
	}
	if( Ptr>=ComInfoNum ) return -1;
	
  
	MemCopy( &DM.ComBuf[RS_DPtr], ComInfo[Ptr].Addr, ComInfo[Ptr].Info&0xFF);
 // MemCopy( &DM.ComBuf[RS_DPtr], ComInfo[Ptr].Addr, 4);
  {
   //DM.ComBuf[RS_DPtr+4]=0;
   //DM.ComBuf[RS_DPtr+4]=0x05; 
   //for(tempPtr=0,Buf=&RS_Data+5;tempPtr<5;tempPtr++,Buf++)*Buf=0;
   //Buf=&RS_Data+10;
   
   //MemCopy( Buf, DM.ubV1RMS+1, 2);
   //Buf=&RS_Data+12;
   //MemCopy( Buf, DM.ubIRMS, 2);
   //Buf=&RS_Data+14;
   //MemCopy( Buf, SM.ClkBcd.Sec, 7);
   //MemCopy(&RS_Data+21,&SM.Cfg.MetStatus[0],2);
  }
	DM.ComBuf[RS_LenPtr]=(ComInfo[Ptr].Info&0xFF)+2;
	
	return 0;
}


//*****************************************************************
// write data into meter
//*****************************************************************
int ComWrite(void)
{
	unsigned int Cmd;
	unsigned int Ptr;
	unsigned char Tmp;
  unsigned char *Buf;

	if(DM.ComBuf[RS_DPtr]>1)return -1;    //??????????????????????????
	
	for(Tmp=0,Buf=&DM.ComBuf[RS_DPtr]; Tmp<=3; Tmp++,Buf++)
  {
		if( (*Buf)!=SM.Cfg.Pswd[1][Tmp]) return -1;
  }
	
	Cmd=((unsigned int)DM.ComBuf[RS_CmdHPtr]<<8)+(unsigned int)DM.ComBuf[RS_CmdLPtr];

	Ptr=0;
	for( Ptr=0;Ptr<ComInfoNum;Ptr++ )
	{
		if( ComInfo[Ptr].ComID==Cmd ) break;
	}
	if( Ptr>=ComInfoNum || DM.ComBuf[RS_LenPtr]!=((ComInfo[Ptr].Info&0xFF)+6) ) 
  {
    return -1;
  }
	if( Ptr>=ComInfoNum || DM.ComBuf[RS_LenPtr]!=((ComInfo[Ptr].Info&0xFF)) ) 
  {
    return -1;
  }
	if( (ComInfo[Ptr].Info&RS_TP_wr)==0 ) 
  {
    return -1;
  }
	switch( ComInfo[Ptr].Info&RS_TP )
	{
		case RS_TP_Norm:
			MemCopy( ComInfo[Ptr].Addr, &DM.ComBuf[RS_DPtr]+4, ComInfo[Ptr].Info&0xFF);
			break;
						
		case RS_TP_Clk:
			MemCopy( ComInfo[Ptr].Addr, &DM.ComBuf[RS_DPtr], ComInfo[Ptr].Info&0xFF);
			SM.ClkBcd.Week[0] = GetWeek();
			SM.ClkBcdChk=ChkSum( SM.ClkBcd.Sec, sizeof(CLKDEF) );
			ClkBcd_ClkHex();
			return 0;
    case RS_TP_Tariff:
      for(Ptr=0,Tmp=0;Ptr<8;Ptr++,Tmp+=3)
					{
						SM.Cfg.TariList[Ptr].FeeNo=DM.ComBuf[Tmp+16]-1;
						SM.Cfg.TariList[Ptr].Tmr=(DM.ComBuf[Tmp+18]<<8)+DM.ComBuf[Tmp+17];
					}
      break;
		default:
			return -1;
	}
	

  SM.CfgChk=ChkSum((unsigned char *)&SM.Cfg, sizeof(SM.Cfg));
	
	DM.ComBuf[RS_LenPtr] = 0;
	return 0;
}




//*****************************************************************
// main communication program
//*****************************************************************
void ProcCom(void)
{
	unsigned int iii;
  //unsigned int Cmd;
  unsigned char Tmp;
	unsigned char *Buf;
	SystemEventFlag &= ~SYSTEM_COMM_FLAG;
	DM.ComFlg=0;
	if( DM.ComPtr<RS_MinSize ) return;

	if( DM.ComBuf[RS_HeadPtr]!=0x68
     || DM.ComBuf[RS_Head0Ptr]!=0x68
     || DM.ComBuf[RS_CmdPtr+DM.ComBuf[RS_LenPtr]+1]!=0x16 ) return;

	if( DM.ComBuf[RS_CmdPtr+DM.ComBuf[RS_LenPtr]]!=ComCRC() ) return;

	if(    DM.ComBuf[RS_CtlPtr]!=RS_CTL_Time 
      && DM.ComBuf[RS_CtlPtr]!=RS_CTL_MetID 
      && DM.ComBuf[RS_CtlPtr]!=RS_CTL_FRMetID  
    )
	{
		for( Tmp=0,Buf=&DM.ComBuf[RS_AddrPtr];Tmp<6;Tmp++,Buf++ )
		{
			//if( ((*Buf!=0xAA)||(Tmp==0)) ) return;            //?????????????????????
      //if( Ptr==0 && *Buf==0xAA ) goto LoopComExit;
      if( *Buf!=SM.Cfg.MetID[Tmp] && *Buf!=0xAA ) return;
      
		}
	}
	
	if( DM.ComBuf[RS_LenPtr]>120 ) return;
  
  for( Tmp=0,Buf=&DM.ComBuf[RS_CmdPtr];Tmp<DM.ComBuf[RS_LenPtr];Tmp++,Buf++ ) 
  {
    *Buf-=0x33;
  }

	switch ( DM.ComBuf[RS_CtlPtr] )
	{
		case RS_CTL_Read:
			if( ComRead()!=0 )
			{
				DM.ComBuf[RS_CtlPtr] |= 0x40;
        DM.ComBuf[RS_LenPtr]=1;
        //DM.ComBuf[11] = RS_SER;
        //DM.ComBuf[12] = SM.Cfg.MetStatus[1];
        //DM.ComBuf[13] = SM.Cfg.MetStatus[0];
				//DM.ComBuf[RS_LenPtr] = 1;
				//DM.ComBuf[RS_CmdPtr] = 1;
			}
			
			break;
		case RS_CTL_Write:
      if(ComWrite()!=0)
      {
        DM.ComBuf[RS_CtlPtr] |=0x40;
        DM.ComBuf[RS_LenPtr]=1;
      }			
			break;
		case RS_CTL_MetID:
      MemCopy( SM.Cfg.MetID, &DM.ComBuf[RS_CmdPtr], 6 );
			DM.ComBuf[RS_LenPtr]=0;
			
			break;
		case RS_CTL_Time:
			//if( (CHECK_AMM1_IFG&CHECK_AMM1_BIT)==0 )
			{
				MemCopy( SM.ClkBcd.Sec, &DM.ComBuf[RS_CmdPtr], 3 );
				MemCopy( SM.ClkBcd.Day, &DM.ComBuf[RS_CmdPtr]+3, 3 );
				SM.ClkBcd.Week[0]=GetWeek();
				SM.ClkBcdChk=ChkSum( SM.ClkBcd.Sec, sizeof(CLKDEF) );
				ClkBcd_ClkHex();
			}
			
			return;
		case RS_CTL_Pswd:
			//if( (CHECK_AMM1_IFG&CHECK_AMM1_BIT)==0 )
			{
				Tmp=DM.ComBuf[RS_CmdPtr+4];
				if( Tmp>1 ) return;
				
				//if(Tmp==0)
					//MemCopy( &SM.Cfg.Pswd[0][0], &DM.ComBuf[RS_CmdPtr+4], 4 );
				//else
					//MemCopy( &SM.Cfg.Pswd[1][0], &DM.ComBuf[RS_CmdPtr+4], 4 );
				
        SM.CfgChk=ChkSum( (unsigned char *)&SM.Cfg, sizeof(SM.Cfg) );
			}
			DM.ComBuf[RS_LenPtr]=4;
			
			break;
    case RS_CTL_FRMetID:  
      MemCopy( &DM.ComBuf[RS_AddrPtr],SM.Cfg.MetID,  6 );
      DM.ComBuf[RS_LenPtr]=6;
      MemCopy( &DM.ComBuf[RS_CmdPtr],SM.Cfg.MetID,  6 );
      break;
		case RS_CTL_RdMet:
			if( DM.ComBuf[RS_LenPtr]!=6 ) return;
			SM.ClkBcdChk=ChkSum( SM.ClkBcd.Sec, sizeof(CLKDEF) );
			ClkBcd_ClkHex();
			DM.ComBuf[RS_LenPtr]=0;
			
			break;
		default:
      //DM.ComBuf[RS_CtlPtr]= 0xff;
      //DM.ComBuf[RS_LenPtr]=3;
      //DM.ComBuf[11] = RS_SER;
      //DM.ComBuf[12] = SM.Cfg.MetStatus[1];
      //DM.ComBuf[13] = SM.Cfg.MetStatus[0];
      
			return;
	}
	
	DM.ComBuf[RS_CtlPtr] |= 0x80;
	if( DM.ComBuf[RS_LenPtr]>120 ) 
  {
    return;
  }
	for( Tmp=0,Buf=&DM.ComBuf[RS_CmdPtr];Tmp<DM.ComBuf[RS_LenPtr];Tmp++,Buf++ ) 
  {
    *Buf+=0x33;
  }
	DM.ComBuf[RS_CmdPtr+DM.ComBuf[RS_LenPtr]]=ComCRC();
	DM.ComBuf[RS_CmdPtr+DM.ComBuf[RS_LenPtr]+1]=0x16;
	
	DM.ComFlg |= F_Txing;
	DM.ComPtr=1;
	
	iii=TAR;
	while( (TAR-iii)<655 ) {};			// 655
	
	
	if( (DM.ComFlg & F_PortX )==P_UART0)
	{
		StartUT0();
    //COMM_ACLK_SEL |= COMM_ACLK_BIT;
		U0TXBUF=DM.ComBuf[RS_HeadPtr];
    DM.ComPtr=1;
    //SystemEventFlag &= ~SYSTEM_COMM_FLAG;
	}
	else if( (DM.ComFlg & F_PortX )==P_UART1)
	{
		StartUT0();
		//U1TXBUF=DM.ComBuf[RS_HeadPtr];
	}
	
	_NOP();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人v欧美综合天堂| 国产1区2区3区精品美女| 亚洲精品一区二区三区精华液| 成人高清免费在线播放| 裸体健美xxxx欧美裸体表演| 中文字幕一区二区三区在线不卡 | 成人午夜伦理影院| 亚洲成人免费在线| **欧美大码日韩| 久久久国产精品午夜一区ai换脸| 欧美亚洲高清一区| 国产suv精品一区二区三区| 日韩国产精品久久| 亚洲伊人色欲综合网| 国产精品午夜在线| 亚洲成人av福利| 亚洲少妇最新在线视频| 久久久99精品久久| 正在播放亚洲一区| 欧美美女网站色| 在线一区二区三区| 972aa.com艺术欧美| 高清成人在线观看| 国产剧情一区二区| 久久精品国产澳门| 五月天精品一区二区三区| 亚洲精品中文字幕在线观看| 自拍偷拍亚洲欧美日韩| 亚洲国产精品99久久久久久久久| 久久新电视剧免费观看| 欧美一级片免费看| 欧美一级午夜免费电影| 18欧美亚洲精品| 国产精品素人视频| 国产日韩精品久久久| 久久久国产一区二区三区四区小说 | 国产日产欧美一区| 2024国产精品视频| 精品国产乱码久久久久久浪潮| 欧美一级欧美三级在线观看| 91精品免费在线| 欧美一区二区三区小说| 91精品福利在线一区二区三区 | 国产精品电影一区二区三区| 国产精品美女久久福利网站| 丝袜诱惑亚洲看片| 日韩电影在线观看一区| 久久激五月天综合精品| 狠狠色丁香婷综合久久| 国产精品一区在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 日韩福利电影在线| 久久9热精品视频| 国产伦精品一区二区三区免费迷 | 欧美性大战久久久久久久蜜臀| 91麻豆国产精品久久| 日本韩国欧美三级| 91精品欧美福利在线观看| 日韩免费高清电影| 欧美国产精品专区| 亚洲伦在线观看| 五月激情综合色| 国内精品伊人久久久久av一坑| 国产乱国产乱300精品| 成人免费av在线| 在线国产电影不卡| 日韩三级电影网址| 国产精品久久三| 午夜精品福利在线| 国产福利一区二区| 色综合久久久久综合体| 欧美一级片在线观看| 蜜臀久久99精品久久久久宅男| 国内久久精品视频| 91蜜桃在线观看| 91精品国产欧美一区二区18| 久久久久久久久久美女| 亚洲精品国产视频| 精品一区二区三区免费| 99久久久久久99| 欧美精品xxxxbbbb| 久久久精品天堂| 亚洲高清中文字幕| 国产成人av电影在线播放| 欧美嫩在线观看| 国产欧美日韩在线视频| 亚洲h动漫在线| 国产精品66部| 欧美一区二区三区电影| 国产精品免费免费| 日本中文字幕一区| 色综合天天综合网天天看片| 精品久久久久久久久久久久久久久久久 | 久久久高清一区二区三区| 亚洲综合一二区| 国产成人av网站| 777亚洲妇女| 亚洲视频一区在线| 国产大陆亚洲精品国产| 欧美日产国产精品| 亚洲欧美综合色| 精彩视频一区二区| 91麻豆精品国产91久久久资源速度| 中文字幕不卡在线观看| 黄色日韩网站视频| 91精品国产综合久久久蜜臀图片 | 亚洲蜜臀av乱码久久精品 | 欧美性高清videossexo| 国产精品看片你懂得| 精品一区在线看| 在线播放视频一区| 亚洲一区二区三区四区在线观看| 国产成人8x视频一区二区| 欧美一区二区三区精品| 亚洲成a人片在线观看中文| 91视视频在线直接观看在线看网页在线看 | 亚洲不卡av一区二区三区| 成人av免费在线播放| 国产午夜亚洲精品理论片色戒| 三级亚洲高清视频| 欧美在线免费观看亚洲| 国产精品影视天天线| 日韩亚洲欧美综合| 舔着乳尖日韩一区| 欧美日韩精品一区二区三区四区| 亚洲欧美日韩小说| 97久久人人超碰| 中文字幕一区二区在线观看| 成人黄色小视频在线观看| 日本一区二区综合亚洲| 国产经典欧美精品| 久久综合九色综合97婷婷| 九九久久精品视频| 久久久国产一区二区三区四区小说| 激情深爱一区二区| 久久久久久久性| 国产98色在线|日韩| 国产女主播一区| 波多野结衣中文字幕一区| 中文无字幕一区二区三区| 高清国产一区二区三区| 国产精品毛片大码女人| 国产亚洲1区2区3区| 高清成人免费视频| 国产精品福利在线播放| 日本道精品一区二区三区| 亚洲午夜精品17c| 欧美精品一二三四| 开心九九激情九九欧美日韩精美视频电影 | 国产午夜亚洲精品午夜鲁丝片| 国产酒店精品激情| 欧美激情一区二区三区全黄| 91美女福利视频| 亚洲一区二区三区视频在线播放| 91.com视频| 精品在线一区二区| 国产日韩在线不卡| 色婷婷综合中文久久一本| 图片区小说区区亚洲影院| 精品欧美一区二区久久| 成人一级片在线观看| 中文字幕日韩一区| 成人免费在线观看入口| 色诱视频网站一区| 日日夜夜精品免费视频| 精品久久久久久久久久久久包黑料 | 久久成人免费网| 国产日产亚洲精品系列| 在线欧美小视频| 另类小说一区二区三区| 国产精品美女久久久久av爽李琼| 在线观看日韩电影| 蜜桃一区二区三区在线观看| 国产精品日韩精品欧美在线| 91福利视频久久久久| 韩国成人福利片在线播放| 亚洲欧美一区二区三区孕妇| 亚洲日本在线看| 精品国产一区二区三区久久久蜜月 | 欧美性猛交xxxx黑人交| 国产在线精品免费| 一区二区三区日韩精品视频| 911国产精品| 93久久精品日日躁夜夜躁欧美| 美日韩一级片在线观看| 18成人在线观看| 精品国产露脸精彩对白| 在线免费一区三区| 国产成人在线网站| 日本vs亚洲vs韩国一区三区二区| 最近中文字幕一区二区三区| 日韩一级高清毛片| 欧美在线免费观看亚洲| 成人天堂资源www在线| 老司机精品视频线观看86| 一区二区国产视频| 中文字幕巨乱亚洲| 欧美va日韩va| 9191久久久久久久久久久| 色综合天天综合网天天狠天天|