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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uart.c.bak

?? 這是一個利用短信實現抄表的工程的源碼,單片機通過串口與TC35通訊.同時單片機通過485與表記通訊,獲得表記數據后以短信的形式發給用戶.
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
#include "sfr_r811.h"
#include "sms.h"
#include "string.h"
#include "int.h"
/***************************/

static const char tab[]="0123456789";
/*****************************************************/
void send_str(char ui,const char* sendat);
char sch_str(char ui,const char * strptr);
char wait_str(char ui,const char *strptr);
void clr_rxbuf(char ui);
void delay(unsigned int nms);
/**************************/
char news_index[3];
char news_mem[5];
char uirxcount[2],uitxcount[2],uinumoftx[2];
char *u0txptr;
char *u1txptr;
//#pragma ROM tab
//extern static const char tab[]="0123456789ABCDEF";
#pragma ROM csend
static const char csend[]={0x1a,'\0'};
struct{
	char lrd_mem[5];
	char rw_mem[5];
	char rec_mem[5];
	unsigned char lrd_used;
	unsigned char lrd_totle;
	unsigned char rw_used;
	unsigned char rw_totle;
	unsigned char rec_used;
	unsigned char rec_totle;							
	}gsmstat;

//extern SM_STAT stat;
/*------------------------------------------------------*/
#pragma BIT flag
union {
  struct{
    char  u0txbusy:1;        
    char  u0usetxbuf:1;        
    char  u1txbusy:1;        
    char  u1usetxbuf:1;        
    char  gsmerror:1;
    char  newmsg:1;
    char  chargestar:1;
    char  chargeend:1;
  }bit;
  char  byte;
 }flag;

char  txbuf[TXBUFSIZE];
char u0rxbuf[u0RXBUFSIZE];
char u1rxbuf[u1RXBUFSIZE];
void sfr_ref(void);

typedef struct{
              unsigned char index;
              unsigned char mstat[2];
              }MADDR;


MADDR m_addr[16];
unsigned char n_phone[16];
unsigned char max_addr,max_phone;

init_uart0(int baud,char eon)
{   s0tic=0x3;
	s0ric=0x4;
	if(eon=='n')
	{
	u0mr=0x05; /*set uar0 MODE 8  1*/
	/*setting uart0 register*/
	}
	else if(eon=='e')
	{
	u0mr=0x65;
	}
	else if(eon=='o')
	{
	u0mr=0x45;
	}
	else 
	{
	u0mr=0x05;
	}
	if(baud==1200)
	{
	u0c0=0x05;             //0x85 for 645 /*internal clock ;txdi pin fuction select; lsb first;f1sio 0x00 f1 0x01 f8*/ 
	u0brg=129;             /*(n+1)fi*/
		
	}
    else if(baud==2400)
	{
	u0c0=0x05;             //0x85 for 645 /*internal clock ;txdi pin fuction select; lsb first;f1sio 0x00 f1 0x01 f8*/ 
	u0brg=64;             /*(n+1)fi*/	
	}
	else if(baud==4800)
	{
	u0c0=0x05;             //0x85 for 645 /*internal clock ;txdi pin fuction select; lsb first;f1sio 0x00 f1 0x01 f8*/ 
	u0brg=32;             /*(n+1)fi*/	
	}
	else if(baud==9600)
	{
	u0c0=0x04;             //0x85 for 645 /*internal clock ;txdi pin fuction select; lsb first;f1sio 0x00 f1 0x01 f8*/ 
	u0brg=129;             /*(n+1)fi*/	
	}	
	else if(baud==19200)
	{
	u0c0=0x04;             //0x85 for 645 /*internal clock ;txdi pin fuction select; lsb first;f1sio 0x00 f1 0x01 f8*/ 
	u0brg=64;             /*(n+1)fi*/	
	}	
       else
	{
	u0c0=0x05;             //0x85 for 645 /*internal clock ;txdi pin fuction select; lsb first;f1sio 0x00 f1 0x01 f8*/ 
	u0brg=129;             /*(n+1)fi*/
		
	}
	
	u0c1=0x00;              /*stop tx;stop rx*/
	ucon=0x20;             /*uart0/1 int source select;uart1 txd1 selection, txd1 enable*/
	
	
}
init_uart1(void)
{
	/*setting uart1 register*/
	s1tic=0x5;
	s1ric=0x6;
	u1mr=0x05;
	u1c0=0x04;
	u1brg=129;
	u1c1=0x00;

}
void init_io(void)
{
	/* Setting port registers */
	prc2=1;
	pd0|=0x19;
	pd1=0xdf;
	pd3=0x0f;
	pd4=0x20;
	
	pur0=0x00;
	pur1=0x00;
	drr=0x1f;
	p0 = 0x00;
	p1 = 0x04;			
	p3 = 0x0;				
	p4 = 0x20;
}
void init_int(void)
{
	/*setting interrupt control register*/
	kupic=0x00;
	adic=0x00;
	cmp1ic=0x00;
	int2ic=0x0;
    txic=0x1;
    tyic=0x2;
     tzic=0x0;
     int1ic=0x0;
        int2ic=0x0;
        tcic=0x00;
        cmp0ic=0x0;
        int0ic=0x00;
        /*setting INT0 registers*/
        inten=0x00;
        int0f=0x00;
        /*setting timer mode register*/
}
void init_timer(void)
{
        txmr=0x00;
        tyzmr = 0x00;		/* Timer Z mode = Programmable waveform generation mode */
	pum = 0;			/* Timer Y, Z waveform output control register */
	tys=0;                          /*Timer  y count start flag= stop*/
	tzs = 0;			/* Timer Z count start flag = stop */
	tcss = 0x26;		/* division = X=32 Y=8 Z:y/
	/* Setting main cycle timer */
	/* 20MHz* 1/8 * 250 * 100 =10ms */
	prex = 250;		/* Setting Prescaler X register */
	prey =250;
	tx = 250;		/* Setting timer X register */
	tysc=0;
	typr=10;
	txs = 1;			/* Timer X count start flag = start */
	tys =1 ;
	tcc0=0x00;
	tcc1=0x00;

}
void init_key(void)
{
/*setting key input register*/
	kien=0;
	aier=0;	
}
void init_wdc(void)
{
		/*setting wdt register*/
	wdc=0;
	wdtr=0;
	wdts=0;
	
}
void init_adc(void)
{
	adcon2 = 0x01;	               
	adcon1 = 0x10;		/* 8/10-bit mode select bit = 8-bit mode */
	adcon0 = 0x80;		/* fAD/2 and AN0 is selected */
	adst = 0;			/* A-D conversion STOPED */
}
/************************************************************************************
Name:        sfr_init
Parameters:  None
Returns:     None
Description: Initial setting of SFR registers
************************************************************************************/
void sfr_init(void){
	/*setting vcr registers*/
//	prcr=0x04;
//	vcr2=0;
//	d4int=0;
//	prcr=0x00;
	/*setting clock generare register*/
//	prcr=0x01;
//	cm0=0x78;
//	cm1=0x18;
//	ocd=0x00;
//	prcr=0x00;
	
	//hr0=0x00;
	//pcr0=1;
	//hr1=0x00;
	//pcr0=0;
	tcout=0x00;

     
}
/************************************************************************************
Name:        sfr_ref
Parameters:  None
Returns:     None
Description: Refresh of SFR registers
************************************************************************************/
void sfr_ref(void){
/* Setting port direction registers */
	prcr = 0x04;
	pd0 = 0;
	prcr = 0;
	pd1 = 0x1E;
	pd3 = 0x02;
	pd4 = 0;
}
/************************************************************************************
Name:        send_n_byte
Parameters:  ui,send n bytes data through uart0/1;
	     chptr,point to  data array that will be send;
	     n,the char number in the string; 
Returns:     none 
Description: send n bytes data through uart0/1
************************************************************************************/
void send_n_byte(char ui,char *chptr,char n)
{  // RTS0=1;
    stop_timery();
    timycount[ui]=0;
    clr_rxbuf(ui);   
    
	if(ui==0)
	{REDI=0;
	 
	//RTS0=0;
	//while(CTS0==1){}
	flag.bit.u0txbusy=1;
	u0txptr=chptr;
	u0tb=*u0txptr;
	*u0txptr=0;
	u0txptr++;
	uitxcount[0]=1;
	uinumoftx[0]=n;
	uirxcount[0]=0;
	start_u0tx();
    }
    else if(ui==1)
    {
    flag.bit.u1txbusy=1;
	u1txptr=chptr;
	u1tb=*u1txptr;
	*u1txptr=0;
	u1txptr++;
	uitxcount[1]=1;
	uinumoftx[1]=n;
	uirxcount[1]=0;
	start_u1tx();
	
      }
} 
/************************************************************************************
Name:        sch_645_frame
Parameters:  ui, uart0/1,search in the u0/1rxbuf
Returns:     0:not find;1:have fond
Description: search dl645 frame in the u0/1rxbuf,search result store txbuf;
************************************************************************************/
char sch_645_frame(char ui,unsigned char *pdst)
{
char byte_count,frame_len,result,k;
result=0;
if(ui==0)
 {
  for(byte_count=0;byte_count<u0RXBUFSIZE;byte_count++)
  {  
     if(u0rxbuf[byte_count]==0x68)
       { frame_len=u0rxbuf[byte_count+9]+12;
          if(u0rxbuf[byte_count+frame_len-1]==0x16)
          {    for(k=0;k<=frame_len-1;k++)
  	           {     
  	           	pdst[k]=u0rxbuf[byte_count+k];
  	 		    u0rxbuf[byte_count+k]=0;	
  	 	        }
  	 	 result=frame_len;
  	 	 uirxcount[0]=0;
         break;
          } 
       }
   }
  }
else if(ui==1)
 {
 for(byte_count=0;byte_count<u1RXBUFSIZE;byte_count++)
  {  
     if(u1rxbuf[byte_count]==0x68)
       { frame_len=u0rxbuf[byte_count+9]+12;
          if(u1rxbuf[byte_count+frame_len-1]==0x16)
          {    for(k=0;k<=frame_len-1;k++)
  	           {     
  	           	pdst[k]=u1rxbuf[byte_count+k];
  	 		    u1rxbuf[byte_count+k]=0;
  	 	        }
  	 	 result=frame_len;	
  	 	 uirxcount[1]=0;
         break;
          } 
       }
   }
 }
    return(result);
}
/************************************************************************************
Name:        send_str
Parameters:  ui,send a string through uart0/1;
	     sendat,point to  a string that will be send;
Returns:     none 
Description: none
************************************************************************************/
void send_str(char ui,char* sendat)
{  
   //strncpy(txbuf,sendat,strlen(sendat));
   send_n_byte(ui,sendat,strlen(sendat));
}
/************************************************************************************
Name:        int2str
Parameters:  src:int number
	     pDst:dest string
	     len:length of string 
Returns:     None
Description: transform a integer number to string which length is equal to len;
************************************************************************************/
void int2str(int src, char* pDst,char len)
{	
	int index;     
	char i;
	char nzero;
	nzero=5-len;
	//char *ptr;
	i=0;
	//ptr=pDst;
	index=(int)src/10000;
	src=src%10000;
	if(i++>=nzero)*pDst++=tab[index];
	index=(int)src/1000;
	src=src%1000;
	if(i++>=nzero)*pDst++=tab[index];
	index=(int)src/100;
	src=src%100;
	if(i++>=nzero)*pDst++=tab[index];
	index=(int)src/10;
	src=src%10;
	if(i++>=nzero)*pDst++=tab[index];
	if(i++>=nzero)*pDst++=tab[src];
	*pDst= '\0';
	//for(i=0;i<=lenint;i++)ptr[i]=ptr[5-lenint+i];
	
	

}

void int2str1(int src, char* pDst)
{	
	int index;     
	char i;
	char nzero,len;
	if(src<10)len=1;
	else if(src<100)len=2;
	else if(src<1000)len=3;
	else if(src<10000)len=4;
	nzero=5-len;
	i=0;
	index=(int)src/10000;
	src=src%10000;
	if(i++>=nzero)*pDst++=tab[index];
	index=(int)src/1000;
	src=src%1000;
	if(i++>=nzero)*pDst++=tab[index];
	index=(int)src/100;
	src=src%100;
	if(i++>=nzero)*pDst++=tab[index];
	index=(int)src/10;
	src=src%10;
	if(i++>=nzero)*pDst++=tab[index];
	if(i++>=nzero)*pDst++=tab[src];
	*pDst= '\0';
}

/************************************************************************************
Name:        sch_str
Parameters:  ui, uart0/1,search in the u0/1rxbuf
             strptr,point to the const char
Returns:     none
Description: search const char in the u0/1rxbuf,search result store txbuf;
************************************************************************************/
char sch_str(char ui,const char * strptr)
{
char byte_count,k,result,LEN;
result=0;
LEN=strlen(strptr);
if(ui==0)
{
for(byte_count=0;byte_count<u0RXBUFSIZE;byte_count++)
  {  
     for(k=0;k<LEN;k++)
       {   
         if(u0rxbuf[byte_count+k]!=*(strptr+k))break;
       }
     if(k==LEN)
     	{
     	 //for(j=0;j<u0RXBUFSIZE;j++)u0rxbuf[j]=0x00;
     	 result=1;
     	 break;
     	}
    }
 }
 else if(ui==1)
 {
 for(byte_count=0;byte_count<u1RXBUFSIZE;byte_count++)
  {  
     for(k=0;k<LEN;k++)
       {   
           if(u1rxbuf[byte_count+k]!=*(strptr+k))break;
       }
     if(k==LEN)
     	{
     	//for(j=0;j<u1RXBUFSIZE;j++)u1rxbuf[j]=0x00;
     	 result=1;
     	 break;
     	}
    }	
 }
     return(result);
}

/************************************************************************************
Name:        sendATcom
Parameters:  ui, uart0/1,search in the u0/1rxbuf
	     com,AT command string
	     ack,AT command ack string
	     err,AT error ack string
	     timeout,if GSM has no ack,seth timeout number :(ms)
Returns:     -1,0/1,AT command is successful executed/fail to executed
Description: send a AT command to GSM modle ,then wait for ack
************************************************************************************/
char sendATcom(char ui,const char *com,const char *ack,const char *err,unsigned int timeout)
{

send_str(ui,(char *)com);
 while(sch_str(ui,ack)==0)
     {  
	if(sch_str(ui,err)==1)
	{
	return(0);
	break;
	}
	if(timycount[ui]>=timeout)
	{
	return(-1);
	break;
	}
     }
 return(1);
}
/************************************************************************************
Name:        sendATdata
Parameters:  ui, uart0/1,search in the u0/1rxbuf
	     data,AT command or data string
	     ack,AT command ack string
	     err,AT error ack string
	     timeout,if GSM has no ack,seth timeout number :(ms)
Returns:     -1,0/1,AT command is successful executed/fail to executed
Description: send a AT command or data to GSM modle ,then wait for ack
************************************************************************************/
char sendATdata(char ui,char *data,const char *ack,const char *err,unsigned int timeout)
{
  send_n_byte(ui,data,strlen(data));
	while(sch_str(ui,ack)==0)
     {  
	if(sch_str(ui,err)==1)
	{
	return(0);
	break;
	}
	if(timycount[ui]>=timeout)
	{
	return(-1);
	break;
	}
     }
 return(1);
}


/************************************************************************************
Name:        wait_str
Parameters:  ui, uart0/1,search in the u0/1rxbuf
	     strptr,point to a const string that is the ack of GSM modle
Returns:     0/1,have not searched/searched
Description: wait a GSM modle string,note:not clear the u0/1rxbuf
************************************************************************************/
char wait_str(char ui,const char *strptr)
{char byte_count,k,j,result,LEN;
result=0;
LEN=strlen(strptr);
if(ui==0)
{
for(byte_count=0;byte_count<u0RXBUFSIZE;byte_count++)
  {  
     for(k=0;k<LEN;k++)
       {   
           if(u0rxbuf[byte_count+k]!=*(strptr+k))break;
       }
     if(k==LEN)
     	{
     	 result=1;
     	 break;
     	}
    }
 }
 else if(ui==1)
 {
 for(byte_count=0;byte_count<u1RXBUFSIZE;byte_count++)
  {  
     for(k=0;k<LEN;k++)
       {   
           if(u1rxbuf[byte_count+k]!=*(strptr+k))break;
       }
     if(k==LEN)
     	{
     	 result=1;
     	 break;
     	}
    }	
 }
    return(result);
}
/************************************************************************************
Name:        clr_rxbuf
Parameters:  ui, uart0/1,search in the u0/1rxbuf
Returns:     none
Description: clear uirxbuf;
************************************************************************************/
void clr_rxbuf(char ui)
{int i;
 if(ui==0)
 {
 for(i=0;i<u0RXBUFSIZE;i++)u0rxbuf[i]=0;
 uirxcount[0]=0;	
 }
 else if(ui==1)
 {
 for(i=0;i<u1RXBUFSIZE;i++)u1rxbuf[i]=0;
 uirxcount[1]=0;
 }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩99亚洲| 国产精品资源在线看| 91一区二区三区在线观看| 国产精品免费丝袜| 91麻豆高清视频| 一区二区三区四区五区视频在线观看| 91蝌蚪国产九色| 一区二区三区精品视频在线| 欧美亚洲精品一区| 日韩成人精品视频| 久久久亚洲国产美女国产盗摄| 岛国精品一区二区| 国产一区二区三区免费观看| 国产片一区二区三区| 在线精品观看国产| 久久草av在线| 中文字幕日韩一区| 欧美三级韩国三级日本一级| 蜜桃精品视频在线| 国产精品人人做人人爽人人添| 91麻豆精品在线观看| 青青草97国产精品免费观看 | 亚洲天堂精品在线观看| 色婷婷精品大视频在线蜜桃视频| 偷拍亚洲欧洲综合| 久久久99久久精品欧美| 色综合久久中文综合久久牛| 丝袜a∨在线一区二区三区不卡| 久久女同互慰一区二区三区| 91麻豆国产精品久久| 久久成人羞羞网站| 亚洲蜜桃精久久久久久久| 欧美xxxxxxxx| 日本韩国一区二区| 国产精品99久久久久久有的能看| 亚洲欧美国产三级| 精品国产1区二区| 91精品91久久久中77777| 九色|91porny| 亚洲综合一区二区三区| 久久综合九色综合久久久精品综合| 99这里只有久久精品视频| 蜜桃久久精品一区二区| 亚洲精品乱码久久久久久黑人| 欧美α欧美αv大片| 91视频.com| 国产成人在线视频网站| 日韩电影一区二区三区| 夜夜揉揉日日人人青青一国产精品| 国产色一区二区| 日韩片之四级片| 欧美性感一类影片在线播放| 成人自拍视频在线观看| 精品一区二区国语对白| 天天亚洲美女在线视频| 亚洲精选视频免费看| 亚洲国产精品成人久久综合一区| 日韩一区二区三区三四区视频在线观看| 99久久精品一区| 成人a级免费电影| 国产成人av影院| 黄色日韩三级电影| 久久精品国内一区二区三区| 丝袜a∨在线一区二区三区不卡| 亚洲精品视频在线观看网站| 椎名由奈av一区二区三区| 国产日韩欧美不卡| 久久久欧美精品sm网站| 精品久久久网站| 精品国产免费人成在线观看| 欧美一区二区三区在线观看视频| 一本一道久久a久久精品综合蜜臀| 懂色av噜噜一区二区三区av| 国产真实乱偷精品视频免| 欧美aaa在线| 免播放器亚洲一区| 麻豆精品在线观看| 免费在线观看一区| 日韩国产在线观看| 免费日本视频一区| 免费成人性网站| 毛片基地黄久久久久久天堂| 日韩黄色片在线观看| 日本麻豆一区二区三区视频| 五月天一区二区三区| 天天影视网天天综合色在线播放| 视频在线在亚洲| 美女一区二区视频| 激情综合五月婷婷| 国产91露脸合集magnet | 亚洲国产综合色| 亚洲午夜国产一区99re久久| 丝袜美腿一区二区三区| 青娱乐精品视频在线| 精品一区二区日韩| 国产成人精品aa毛片| 91麻豆国产精品久久| 日本韩国欧美三级| 91精品国产一区二区人妖| 欧美成人艳星乳罩| 欧美高清在线一区二区| 亚洲人成精品久久久久久| 亚洲v中文字幕| 久久国产精品第一页| 国产精品一品视频| 色综合一个色综合| 欧美一区在线视频| 国产欧美一区二区在线| 亚洲欧美日韩国产成人精品影院 | 欧美片在线播放| 日韩欧美国产综合| 国产精品热久久久久夜色精品三区 | 亚洲精品ww久久久久久p站| 亚洲成人av中文| 国产一区美女在线| 色婷婷激情综合| 欧美大片一区二区| 国产精品超碰97尤物18| 色婷婷综合激情| 日韩一区二区三区在线视频| 国产精品美女久久久久av爽李琼| 亚洲高清在线视频| 国产mv日韩mv欧美| 欧美日韩激情一区二区三区| 久久久久国色av免费看影院| 亚洲永久精品大片| 国产自产视频一区二区三区| 日本韩国欧美国产| 国产免费久久精品| 老汉av免费一区二区三区| 97久久精品人人爽人人爽蜜臀| 91精品蜜臀在线一区尤物| 国产精品免费丝袜| 韩国欧美国产一区| 欧美日韩一区二区三区四区 | 成人国产在线观看| 日韩欧美亚洲一区二区| 亚洲欧洲精品一区二区精品久久久 | 亚洲日本电影在线| 经典一区二区三区| 欧美色图免费看| 国产精品久久久久久久久免费丝袜| 五月婷婷综合网| 91免费在线播放| 欧美国产综合一区二区| 美女任你摸久久 | 欧美日韩成人在线| 1024成人网| 国产成人99久久亚洲综合精品| 日韩天堂在线观看| 亚洲综合一区在线| 一本久道中文字幕精品亚洲嫩| www国产亚洲精品久久麻豆| 日韩福利电影在线| 欧美日韩电影在线播放| 一片黄亚洲嫩模| 一本大道久久a久久综合婷婷| 中文在线一区二区| 国产成人精品午夜视频免费| 日韩美女视频一区二区在线观看| 天堂影院一区二区| 欧美日韩不卡在线| 日韩在线a电影| 777午夜精品视频在线播放| 亚洲一区二区三区中文字幕在线| 91免费国产在线观看| 最近日韩中文字幕| 99riav一区二区三区| 亚洲婷婷在线视频| 91黄色免费版| 亚洲综合激情网| 69堂国产成人免费视频| 青青草原综合久久大伊人精品优势| 欧美精品日韩一本| 婷婷夜色潮精品综合在线| 欧美久久久久久久久| 日韩成人dvd| 欧美videofree性高清杂交| 久久99国产精品久久99果冻传媒| 精品粉嫩aⅴ一区二区三区四区| 麻豆精品视频在线观看视频| 久久夜色精品国产欧美乱极品| 国产一区视频网站| 综合久久国产九一剧情麻豆| 色偷偷88欧美精品久久久| www.亚洲在线| 亚洲乱码国产乱码精品精小说 | 午夜精品久久久久久久99水蜜桃| 欧美日韩精品欧美日韩精品 | 国产成人精品亚洲777人妖| 国产精品久久久久7777按摩| 99久久久久免费精品国产| 一区二区三区四区不卡在线| 欧美系列一区二区| 久久精品国产久精国产| 久久免费国产精品| 色呦呦一区二区三区| 麻豆视频观看网址久久| 国产精品久久久久久久蜜臀| 在线免费亚洲电影|