📄 nemain.c
字号:
else
CLSR_1=0;
if(RXBUF1==0x0d)
CLSR_1=1;
if((RxTimeLong>179))
{
CLSR_1=0;
RxInputLong=0;
RxTimeLong=0;
}
if(CLSR_1==0X02)
{
RxInputLong=RxTimeLong;
RxTimeLong=0x00;
CLSR_1=0;
g_flag|=RXOK;
}
}
void delay_2(void)//10ms
{
unsigned int i;
for (i =12000; i > 0; i--);//2000
}
void ReadSmg(void)
{
uchar i,j=0,k=0;
if(zwr==00)
{
for(i=0;i<g_RecSmgLong;i++)
{
if(i>=160)
break;
smgbuf[i]=(((g_RecSmg[k]<<(j+1))>>1)&0x7f)|(g_RecSmg[k-1]>>(8-j));
k++;
j++;
if((j%8)==0)
{
j=0;
k--;
}
}
//****设置****
if(((smgbuf[0]==0x2a)&&(smgbuf[1]==0x2a))||((smgbuf[0]==0x23)&&(smgbuf[1]==0x23)))
g_flag|=SETINPUT;
//****查询****
if((smgbuf[0]==0x23)&&(smgbuf[1]==0x2a))
g_flag|=QUSTION;
}
else
{
if(zwr==0x08)
{
for(i=0;i<g_RecSmgLong;i++)
{
if(i>=160)
break;
smgbuf[i]=g_RecSmg[i];
}
//****设置****
if(((smgbuf[1]==0x2a)&&(smgbuf[3]==0x2a))||((smgbuf[1]==0x23)&&(smgbuf[3]==0x23)))
g_flag|=SETINPUT;////设置
//****查询****
if((smgbuf[1]==0x23)&&(smgbuf[3]==0x2a))
g_flag|=QUSTION;
}
}
TXBUF1='R';
while ((UTCTL1&0x01)==0);
if(outnum[0]%2==0)
{
for(k=0;k<=outnum[0]/2;k++)
{
TXBUF1=outnum[k+1]-(outnum[k+1]/0x10)*0x10+0x30;
while ((UTCTL1&0x01)==0);
TXBUF1=(outnum[k+1]/0x10)+0x30;
while ((UTCTL1&0x01)==0);
}
}
else
{
for(k=0;k<=(outnum[0]/2-1);k++)
{
TXBUF1=outnum[k+1]-(outnum[k+1]/0x10)*0x10+0x30;
while ((UTCTL1&0x01)==0);
TXBUF1=(outnum[k+1]/0x10)+0x30;
while ((UTCTL1&0x01)==0);
}
TXBUF1=(outnum[outnum[0]/2+1]-0xf0)+0x30;
while ((UTCTL1&0x01)==0);
}
if(zwr==0x08)
{
TXBUF1='C';
while ((UTCTL1&0x01)==0);
}
else
{
if(zwr==0x00)
{
TXBUF1='E';
while ((UTCTL1&0x01)==0);
}
}
TXBUF1='>';
while ((UTCTL1&0x01)==0);
for(i=0;i<g_RecSmgLong;i++)
{
TXBUF1=smgbuf[i];
while((UTCTL1&0X01)==0);
}
TXBUF1=0x0d;
while ((UTCTL1&0x01)==0);
TXBUF1=0x0a;
while ((UTCTL1&0x01)==0);
if( g_flag_2 & DELSIMSMS )
DelSmg(DelNo);
else
DelSmg(1);
DelSMS_Time = 200;
g_flag_2 &= ~FIRSTDEL;
g_flag_2 &= ~DELSIMSMS;
delay_2();
P5OUT &= ~0x02;
}
void TestFlash(void)//写入号码
{
char *ptr; /* pointer to byte (8 bit)*/
char ch; /* byte variable */
IFG1=0; /* clear interrupt flag1 */
DCOCTL=0X60;
FCTL2=0x0A542; /* select MCLK/3 for flash timing */
_DINT(); /* disable all interrupts to protect CPU */
FCTL1=FWKEY+ERASE; /* during programming from system crash */
FCTL3 =FWKEY; //0x0A500; /* Lock = 0 写完一定要置1*/
Flash_clr( (int *) FSEG_B );
FCTL1 =FWKEY+WRT;// 0x0A540; /* WRT = 1 */
ptr = (char *) FSEG_B;
for(ch=0;ch<=127;ch++)
Flash_wb(ptr++,W_flash[ch]);
FCTL1=FWKEY;
FCTL3=FWKEY+LOCK;
_EINT();
}
void Flash_wb( char *Data_ptr, char byte )
{
*Data_ptr=byte; /* program Flash word */
}
void Flash_clr( int *Data_ptr )
{
*Data_ptr=0; /* erase Flash segment */
}
void MbWriteSec(void)//目标号码设置及修改
{
uchar i,k;
char *paw_m;
k=0;
paw_m=(char *) FSEG_B;
for(i=0;i<128;i++)
{
W_flash[i]=*paw_m;//read flash
paw_m++;
}
if(R232_or_SMS==0x88)
{
R232_or_SMS==0;
for(i=0;i<(RxInputLong-4);i++)
W_flash[i+4]=RXsmg[i+2]-0x30;
TestFlash();
set_ok_ok();
}
else
{
if(zwr==0x08)
{
for(i=0;i<(g_RecSmgLong-4)/2;i++)
{
W_flash[i+4]=smgbuf[k+5]-0x30;
k=k+2;
}
TestFlash();
Send_SetOk();
}
else
{
if(zwr==0x00)
{
for(i=0;i<g_RecSmgLong-2;i++)
W_flash[i+4]=smgbuf[i+2]-0x30;
TestFlash();
Send_SetOk();
}
}
}
}
/*
void CWiteSec(void)//中文
{
uchar i,j;
char *K_a;
K_a=(char *) FSEG_A;
for(i=0;i<128;i++)
{
W_flash[i]=*K_a;//read flash
K_a++;
}
for(i=0;i<6;i++)
{
if(smgbuf[i*20+5]=='A')
break;
for(j=0;j<20;j++)
W_flash[(smgbuf[i*20+5]-0x31)*20+j] = smgbuf[i*20+4+j];
}
TestFlash_1();
Send_SetOk();
}
void EriteSec(void)//englsih
{
uchar i,j;
char *K_a;
K_a=(char *) FSEG_A;
for(i=0;i<128;i++)
{
W_flash[i]=*K_a;//read flash
K_a++;
}
for(i=0;i<6;i++)
{
if(smgbuf[i*20+2]=='A')
break;
for(j=0;j<20;j++)
W_flash[(smgbuf[i*20+2]-0x31)*20+j] = smgbuf[i*20+2+j];//4
}
TestFlash_1();
Send_SetOk();
}
*/
void TestFlash_1(void)//写入中文
{
char *ptr; /* pointer to byte (8 bit)*/
char ch; /* byte variable */
IFG1=0; /* clear interrupt flag1 */
FCTL2=0x0A50b; /* select MCLK/3 for flash timing */
_DINT();
FCTL1=FWKEY+ERASE; /* disable all interrupts to protect CPU */
FCTL3 = FWKEY;//0x0A500; /* Lock = 0 */
Flash_clr( (int *) FSEG_A );
FCTL1 = FWKEY+WRT;//0x0A540; /* WRT = 1 */
_NOP(); /* to get valid memory content the breakpoint */
/* must be set on following instruction !! */
// === 六个中文段分别设置,先读出原来的数据 =======================================
ptr = (char *) FSEG_A;
for(ch=0;ch<=127;ch++)
Flash_wb(ptr++, W_flash[ch]);
FCTL1=FWKEY;
FCTL3=FWKEY+LOCK;
_EINT();
}
void EnableEnhance(void)////扩展命令允许
{
uchar i;
const uchar buf1[]= {0x1e,0x00, 0x0C, 0x40, 0x00,0x06,0x00,0x01,0x64,0x01,0x01};
SendSync();
for(i=0;i<sizeof(buf1);i++)
g_Send.Buf[i]=buf1[i];
Send6110Cmd(sizeof(buf1));
}
void Enable_R(void)////工程模式
{
uchar i;//1E 00 0c 40 00 06 00 01 7E f3 01 43
const uchar buf1[]= {0x1e,0x00, 0x0C, 0x40, 0x00,0x06,0x00,0x01,0x7e,0xf3,0x01};
SendSync();
for(i=0;i<sizeof(buf1);i++)
g_Send.Buf[i]=buf1[i];
Send6110Cmd(sizeof(buf1));
}
void Rlacid(void)////读基站代码
{
uchar i;
const uchar buf1[]= {0x1e,0x00, 0x0C, 0x40, 0x00,0x06,0x00,0x01,0x7e,0x0b,0x01};
SendSync();
for(i=0;i<sizeof(buf1);i++)
g_Send.Buf[i]=buf1[i];
Send6110Cmd(sizeof(buf1));
}
/*
void MpWriteSec(void)//设置报警电话
{
uchar i,k;
char *paw_m;
k=0;
paw_m=(char *) FSEG_B;
for(i=0;i<128;i++)
{
W_flash[i]=*paw_m;//read flash
paw_m++;
}
if(zwr==0x08)
{
for(i=0;i<g_RecSmgLong;i++)
{
W_flash[i+80]=smgbuf[k+13];
k=k+2;
}
W_flash[((g_RecSmgLong-12)/2)+80]=0x41;
TestFlash();
Send_SetOk();
}
if(zwr==0x00)
{
for(i=0;i<g_RecSmgLong;i++)
W_flash[i+80]=smgbuf[i+6];
W_flash[g_RecSmgLong-6+80]=0x41;
TestFlash();
Send_SetOk();
}
}
*/
interrupt[TIMERB0_VECTOR] void Timer0_232(void)
{
RxCls++;
if(RxCls == 2)
{
RxCls=0;
RxTimeLong=0;
}
DelSMS_Time++;
if( (!(g_flag_2 & FIRSTDEL) && (DelSMS_Time >= 800)) || ((g_flag_2 & FIRSTDEL) && (DelSMS_Time >= 12000)) )
{
DelSMS_Time = 0;
g_flag_2 |= QUERYSMS;
}
PhoneOff_Time++;
if( PhoneOff_Time >= 1200 )
{
PhoneOff_Time = 0;
g_flag_2 |= QUERYSTA;
}
}
/*
interrupt[PORT2_VECTOR] void PORT22_TS (void)//输入中断,6个
{
P2IFG=0x00;
if(g_flag&IOINPUT)
return;
pin_pin=P2IN;
g_flag|=IOINPUT;
}
void IOinput(void)/////////////xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
uchar TL;
char *K_C;
if((pin_pin&0X01)==0X01)//第一路p2.0
{
K_C=(char*)0x1080;
for(TL=0;TL<20;TL++)
{
buf[TL]=*K_C;
K_C++;
}
K_C=(char*)0x1080;
if((*K_C)==0X00)
C_or_E=0x10;//中文方式发
else
C_or_E=0x01;//英文方式发
g_flag_2|=IOINPUTOK;
}
else if((pin_pin&0X02)==0X02)
{
K_C=(char*)0x1094;
for(TL=0;TL<20;TL++)
{
buf[TL]=*K_C;
K_C++;
}
K_C=(char*)0x1094;
if((*K_C)==0X00)
C_or_E=0x10;//中文方式发
else
C_or_E=0x01;//英文方式发
g_flag_2|=IOINPUTOK;
}
else if((pin_pin&0X04)==0X04)
{
K_C=(char*)0x10A8;
for(TL=0;TL<20;TL++)
{
buf[TL]=*K_C;
K_C++;
}
K_C=(char*)0x10A8;
if((*K_C)==0X00)
C_or_E=0x10;//中文方式发
else
C_or_E=0x01;//英文方式发
g_flag_2|=IOINPUTOK;
}
else if ((pin_pin&0X08)==0X08)
{
K_C=(char*)0x10BC;
for(TL=0;TL<20;TL++)
{
buf[TL]=*K_C;
K_C++;
}
K_C=(char*)0x10BC;
if((*K_C)==0X00)
C_or_E=0x10;//中文方式发
else
C_or_E=0x01;//英文方式
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -