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

📄 stc串口gps.c

📁 #include <reg52.h> #include <stdio.h> #include <string.h> #define uchar unsigne
💻 C
📖 第 1 页 / 共 3 页
字号:
		{		 //SBUF = *p;
				//while (TI == 0) ;
				//TI = 0;
		*(liss++)=*p;
		p++;
		}
		
	}
	else{//执行修改指令
	EA=0;

		
		//擦除
		
			for(dxy=0;dxy<11;dxy++){
				ISP_ADDRH=0x80+dxz*2;
				ISP_ADDRL=dxy;
				
				ISP_CONTR=0x81;
				ISP_CMD=isp_iap_sector_erase;
				ISP_TRIG=0x46;
				ISP_TRIG=0xb9;
				
			}
		
		//擦除
		ISP_CONTR=0x0;
		ISP_CMD=0x0;
		for (dxu=dxp+1;dxu<dxp1;dxu++){
			ISP_DATA=duanxin[dxu];
			ISP_ADDRH=0x80+dxz*2;
			ISP_ADDRL=dxu-dxp-1;
			
			ISP_CONTR=0x81;
			ISP_CMD=isp_iap_byte_program;
			ISP_TRIG=0x46;
			ISP_TRIG=0xb9;
		}
		ISP_CONTR=0x0;
		ISP_CMD=0x0;
	 EA=1;
	 //返回修改正确信息
		p=rrr[1];
		length = strlen(p);
	
		
		for(dxy = 0; dxy<length; dxy++) //依次发送待合成的文本数据
		{ //SBUF = *p;
		//while (TI == 0) ;
		//TI = 0;
		*(liss++)=*p;
		p++;
		}
	}
}
void duanxinlist(char *liss){
char dxi,dxk;
//char *lis;
strcpy(liss,"");
	for(dxk=0;dxk<3;dxk++){
		EA=0;
		for(dxi=0;dxi<11;dxi++){
			ISP_ADDRH=0x80+dxk*2;

			ISP_ADDRL=dxi;
			
			ISP_CONTR=0x81;
			ISP_CMD=isp_iap_byte_read;
			ISP_TRIG=0x46;
			ISP_TRIG=0xb9;
		
			listemp=ISP_DATA;
			if (listemp==0xff){
				if (dxk==2) *(liss++)='\0';
				break;
			}
			else{
				if (dxi==0){
					*(liss++)=dxk+1+0x30;
					*(liss++)=0x3A;
					*(liss++)=listemp;
				}
				if (dxi>0 && dxi <10){
				*(liss++)=listemp;
				}
				if (dxi==10){
					*(liss++)=listemp;
					*(liss++)=0x2c;
					if (dxk==2) *(liss++)='\0';
				}
				
			}
			
		}
		ISP_CONTR=0x0;
		ISP_CMD=0x0;
		EA=1;
		
	}
}
void duanxinzx(){
char czi,czj,czk;

	for(czi=0;czi<4;czi++){
		czk=1;
		for(czj=0;czj<4;czj++){
			if (duanxin[czj]!=caozuo[czi][czj]){
				czk=0;
			}
		}
		if (czk){
			switch(czi){
				case 0://list
					duanxinlist(dxlist);
					break;
				case 1://edit
					duanxinedit(dxlist);
					break;
				case 2://dele
					duanxindel(dxlist);
					break;
				case 3://posi
					duanxinposi(dxlist);
					break;
			}
			break;	
		}

	}
}
void yizhensjh(char *quanxian,char *abc){//验证手机号是否合法//返回此手机号存储的位置//quanxian返回此手机号的权限
char yzi,yzk,reslt;
*quanxian=0;
	for(yzk=0;yzk<3;yzk++){
		EA=0;
		for(yzi=0;yzi<12;yzi++){
			ISP_ADDRH=0x80+yzk;

			ISP_ADDRL=yzi;
			
			ISP_CONTR=0x81;
			ISP_CMD=isp_iap_byte_read;
			ISP_TRIG=0x46;
			ISP_TRIG=0xb9;
		
			epsjh[yzi]=ISP_DATA;
			
		}
		ISP_CONTR=0x0;
		ISP_CMD=0x0;
		EA=1;
		reslt=1;
		for(yzi=0;yzi<11;yzi++){
			if(sjh[yzi]!=epsjh[yzi]) {
			reslt=0;
			break;
			}
		}
		if (reslt){
			*quanxian=epsjh[11];
			*abc=yzk+1;
			//return(yzk+1);
			break;
		}
		else{
			if (yzk>=2){
				*abc=0xff;//return(0xff);
				break;
			}
		}
	}
}
void clearrecive(){
int ic;
	for(ic=0;ic<256;ic++){
		recive[ic]=0x0;
	}
}
void fhxinxi(){
char *po;
int flength;
int fi,fcc;
p20=0x0;

		for (fi=0;fi<40;fi++)
				{
					for (fcc=0;fcc<10000;fcc++){
					}
				}
p20=0xff;
	po=text[0];
				flength = strlen(po);
				for(fi = 0; fi<flength; fi++) //依次发送待合成的文本数据
				{ SBUF = *po;
					while (TI == 0) ;
					TI = 0;
					po++;
				}
				SBUF = 0x0d;
				while (TI==0); //等待发送中断标志位置位
				TI = 0; //发送中断标志位清零

				for (fi=0;fi<40;fi++)
				{
					for (fcc=0;fcc<10000;fcc++){
					}
				}
	
				po=text[1];
				flength = strlen(po);
				for(sji = 0; sji<flength; sji++) //依次发送待合成的文本数据
				{ SBUF = *po;
					while (TI == 0) ;
					TI = 0;
					po++;
				}
				for(sji=0;sji<11;sji++){
					SBUF =sjh[sji];
					while (TI == 0) ;
					TI = 0;
				}
				SBUF = 0x0d;
				while (TI==0); //等待发送中断标志位置位
				TI = 0; //发送中断标志位清零

				for (fi=0;fi<40;fi++)
				{
					for (fcc=0;fcc<10000;fcc++){
					}
				}
				//for(sji=0;sji<11;sji++){
				//	SBUF =sjh[sji];
				//	while (TI == 0) ;
				//	TI = 0;
				//}

				//SBUF = recilen;
				//while (TI==0); //等待发送中断标志位置位
				//TI = 0; //发送中断标志位清零

				//SBUF = quanxian;
				//while (TI==0); //等待发送中断标志位置位
				//TI = 0; 
				flength = strlen(duanxin);
				for(sji=0;sji<flength;sji++){
					SBUF =duanxin[sji];
					while (TI == 0) ;
					TI = 0;
				}
				flength = strlen(dxlist);
				for(sji=0;sji<flength;sji++){
					SBUF =dxlist[sji];
					while (TI == 0) ;
					TI = 0;
				}
				SBUF = 0x1a;
				while (TI==0); //等待发送中断标志位置位
				TI = 0; //发送中断标志位清零
				
				
				for (fi=0;fi<40;fi++)
				{
					for (fcc=0;fcc<10000;fcc++){
					}
				}
}
int findend(int start){
int fs,fd;
uchar fk;

	for (fs=start;fs<249;fs++){
		fk=1;
		for(fd=0;fd<6;fd++){
			if (recive[fs+fd]!=mark[fd]){
		 		fk=0;
				break;
			}
		}
		if (fk){//当检测到接收完后,跞出接收
				return(fs);
				break;
				
		}
		else{
			if (fs>=249){
			 	return(333);
				break;
			}
		}
	}

}
int searchstr(int start){
int is,id;
uchar k;
	for (is=start;is<249;is++){
		k=1;
		for(id=0;id<7;id++){
			if (recive[is+id]!=recistart[id]){
				k=0;
				break;
			}
		}
		if (k){
			return(is);
			break;
			}
		else{
			if (is>=248){
				return(0xff);
				break;
			}
		}
	}
}
int searchstr2(int start){//查找"
int is;
uchar k;
k=0;
	for (is=start;is<249;is++){
		
			if (recive[is]==0x22){
				k=1;
				break;
			}
	}	
		if (k){
			return(is);
		}
		else{
			return(333);
		}
	
}
int searchstr3(int start){//在GPS数据中查找,
int is;
uchar k;
k=0;
	for (is=start;is<256;is++){
		
			if (recive[is]==0x2c){
				k=1;
				break;
			}
	}	
		if (k){
			return(is);
		}
		else{
			return(333);
		}
	
}
int searchstr4(int start){//在GPS数据中查找N
int is;
uchar k;
k=0;
	for (is=start;is<256;is++){
		
			if (recive[is]=='N'){
				k=1;
				break;
			}
	}	
		if (k){
			return(is);
		}
		else{
			return(333);
		}
	
}
int searchstr5(int start){//在GPS数据中查找E
int is;
uchar k;
k=0;
	for (is=start;is<256;is++){
		
			if (recive[is]=='E'){
				k=1;
				break;
			}
	}	
		if (k){
			return(is);
		}
		else{
			return(333);
		}
	
}
/*
void searchstrpos(char * arr,int start,char searh,int *reult){//查找"
int is;
char *ssp;
uchar k,sst;
k=0;
ssp=arr;
sst=strlen(arr);
	if (start>=sst) *reult=-1;
	else{
		ssp+=start;
		for (is=start;is<sst;is++){
			
				if (*(ssp++)==searh){
					k=1;
					break;
				}
		}	
			if (k){
				*reult=is;
			}
			else{
				*reult=-1;
			}
	}
}
*/
void main(void)
{

//float m_l,m_k;
//uchar ep,ek,ee,eu;

uint length=0;
//uint l_m;
uchar *p;
//unsigned long M_9;
unsigned char i;
int cc;
//m_l=3638.6716;
TL1=0xFa;
TH1 = 0xFa;
TMOD = 0x20;
SCON = 0x50; // 串口工作方式1,允许接收
PCON = 0x80;
//ep=m_l;
//length=0x3333;
//ek=length;
//length=m_l;
//M_9=m_l;
//m_k=M_9;
//l_m=m_l>>16;
//m_k=m_k | l_m;
//m_k=m_k<<16;
//m_k=m_k | length;

//di21=m_code;
//listemp=7;
//listemp=listemp<<4;
//listemp=listemp |(0x34-0x30);

P0=0x00;
P2=0x00;
EA = 0;
REN = 1;
TI = 0; //发送中断标志位置零
RI = 0; //接收中断标志位置零
TR1 = 1;
Loop_1:
p20=1;
	//8888888P1口灯闪栎一次
	//for (i=0;i<20;i++)
	//{
	//	for (cc=0;cc<10000;cc++){
	//	}
	//}
	//p20=0xff;
	

	//P1=r;
	//for (i=0;i<40;i++)
	//{
	//	for (cc=0;cc<10000;cc++){
	//	}
	//}
	
	p00=1;
	p01=1;
	p02=0;
	p03=0;
for(i=0;i<9;i++){
	duanxinp[i]=0x00;
}


 //定时器1用作波特率发生
//接收GPS数据//gpsdata[7]
clearrecive();
recilen=0;
dxccwz=0;//标志是否接收到$
//stapos=0;
while(1){ 

	
	while (RI==0); //等待接收中断标志位置位
	RI = 0; //接收中断标志位清零
	quanxian=SBUF;
//quanxian=recive[stapos];
	if (quanxian=='$' && !dxccwz){
		dxccwz=1;
	}
	if (dxccwz){
		recilen++;

⌨️ 快捷键说明

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