📄 stc串口gps.c
字号:
{ //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 + -