📄 19264cv0_1.c.bak
字号:
miaotime=0;\
miao60sign=0;\
}
void Feedingdog(void)
{
bit i,j,k;
i=MCS1;
j=MCS2;
k=MCS3;
MCS1=0;
MCS2=0;
MCS3=1;
MCS1=i;
MCS2=j;
MCS3=k;
}
//void no_p(void){;}
void dispnodata(void)
{
//extern uchar code gpssign[];
uchar data i;
for(i=7;i<23;i++)
{
disromdata(gpssign[i-7],gpssign[i-6]);
disdatatune();
Dispchin(0,i,0);
i++;
}
Dispchar(0,i,0x20,0);
//Dispchar(0,i,0x20,0);
//disromdata(0xb9,0xf4);
//disdatatune();
//Dispchin(0,0,0);
//disromdata(0xb9,0xfa); //
//for(j=0;j<28;j++)
//SBUF=disdata[i];
//disdatatune();
//for(j=0;j<24;j++)
//{
// disdata[j]=yy[j];
//
//}
//Dispchin(0,4,0);
//Dispchar(0,i,0x2e,0);
//Dispchar(0,i,0x2e,0);
}
void surenume()
{ //disromdata(0xc7,0xeb); // 请 //从ROM取数据-》数据横变纵调整-》将数据打入LCD
//disdatatune();
//Dispchin(6,4,0);
disromdata(0xcd,0xcb); // 退
disdatatune();
Dispchin(6,3,1);
disromdata(0xb3,0xf6); // 出
disdatatune();
Dispchin(6,5,1);
//disromdata(0xbb,0xf2); // 或
////disdatatune();
//Dispchin(6,12,0);
disromdata(0xc8,0xb7); // 确
disdatatune();
Dispchin(6,15,1);
disromdata(0xc8,0xcf); // 认
disdatatune();
Dispchin(6,17,1);
}
void reginit(void)
{
uchar data i,j,k;
for(j=0,k=0x30;j<3;j++,k++)
for(i=0;i<6;i++)
{
RegPswVal[j][i]=k;//登录密码值:数字的ASCII
}
}
void Myinit(void)
{
P0 = 0xFF;
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
BLIGHT=0;
//AUXR|=0x02;//屏蔽内部XRAM
FlagXram=0;//读取点阵时使用XDATA 0x0000--0x02ff标志。1:使用 0:未使用
AUXR&=0xfd;//使能内部XRAM//XDATA 0x0000--0x02ff;不对实际的外部RAM开放。
A18=0;//不选中UNICODE——GB表
//IP = 0x20; // t2为最高优权
IP=0x14;//t2为最高优先级ex1次之其它为低优先级//
IE = 0x00; //
PCON = 0x00; // give baud 9600 bps
// PCON=0x80; // give baud 9600*2 bps
SCON = 0x50;
TMOD = 0x21; //TIMER1 MODE 2,波特率发生器
TCON = 0x00; // ENABLE INRET BIT
T2CON = 0x09;//
T2MOD = 0x00;
TL0 = TIME0L;
TH0 = TIME0H; //10MS ONE TIMES
TL1 = TIME1L; //波特率9600
TH1 = TIME1H; //
TL2 = 0x00; //
TH2 = 0x00; //
RCAP2H=0x00;
RCAP2L=0x00;
// CONRX=DGPS_COMM;
// flag_main_dgps=DGPS_COMM;
CONRX=MAIN_COMM;//for debug
flag_main_dgps=MAIN_COMM;
//位标志//初始化
RecJoin=0;
////////////全局UCHAR 变量初始化/////////////
readkeysign=0;
time20mssign=0;
TxPos=0;
TxNum=0;
RxMain_ptr=0;
RxMain_star=0;
RxMain_end=0;
COMM_OK=0;//开机时与主机通讯状况标志。1:OK 0:异常
KEYVAL_OK=0;//发送键值是否成功标志1:发送成功 0:发送失败
KeyIntervalTime=0;//按键间隔时间
BEEPtime=0;//蜂鸣器响闹时间
BLtime=0;//LCD背光时间
sec5=0;
BeepSound=0;//蜂鸣器发声标志
BLlight=0;//背光点亮标志
KeyCaller=0;
//调用Keytune()的调用者声明。0x10为LCD面板按键检测程序 0x20为IRKEY检测程序
//0为无调用者
NoReadInfoCnt=0;//未读信息计数器
CommCounter=0;
// SPIWRITESD(0x00); // open watch dog
ComeTelCnt=0;//来电条数计数器
ComeTelView=0;//当前来电项指针指示当前光标位置
ComeTelOldView=0;//前一来电项指针
KeyCaller=0;//调用Keytune()的调用者声明。0x10为LCD面板按键检测程序 0x20为IRKEY检测程序
//0为无调用者
FinallyKeyVal=0xff;//最终键值。可作为KEYTUNE程序以外的用户程序使用的键值
//无论由LCD面板还是红外手柄输出的键值译码后都必须在此变量中备份
TxCmdCnt=0;//发送除电话号码以外的命令数据的字节数
SMScnt=0;
SchInforCnt=0;//调度信息计数器
InforType=0;//收到新信息的类型标志
RefushCommInfor=0;//刷新公共信息标志
RefushCmdInfor=0;//刷新调度信息标志
NewInforTimer=0;//新信息显示定时器
NoReadCmdCnt=0;// 未读调度信息计数器
NoReadSmsCnt=0;// 未读短信信计数器
NoReadGprsCommCnt=0;// 未读GPRS公共信息计数器
CommTotal=0;
RegOK=0;
AutoConnectionFlag=0;// 自动接听标志。1:自动 0:手动
Feedingdog();
cleardisram();
antenna = 0;
//tnumbnews = 0x00;
seri_rx_prt = 0x00;
selfsign=0;
//innewssign=0;
//rxmsign=0;
gps_write=0;
//sendsignt2=0;
alarmsign=0;
dispsign=1;
dismiaosign=0;
loudsign=0;
screen2=0;//主界面标志
//dispnews=0;
testsign=0;
dispteleph=0;
comeingtelep=0;
pic_temp=1;
jiannumb=byte_read(0,0x01);
bNewInfor=0;//有新短信标志
WaitingOver=0;//在主界面以及拨打电话、通话界面以外待机超过5分钟
reginit();//登录初始化
XdataInint();
// SPIWRITESD(0x30); // close watch dog
}
//void lightbell(void)
//{
// BLIGHT=0;
//}
void displayline3 (uchar xpost)
{ // 清除一行()
uchar data i;
for(i=0;i<24;i++)
Dispchar(xpost,i,0x20,0);
}
//uchar volatile idata axx=1;
////////////////主函数开始///////////////////////////////////////////////
/*void dtest(void)
{
uchar idata i,j;
i++;
j++;
/*if(ComeTelBuf[0]==0x24)
{
for(i=3,j=1;i<24;i++)
{
if(ComeTelBuf[j]==0x0d) break;
Dispchar(3,i,ComeTelBuf[j],0);
j++;
}
}
else
{ i=RxMain_data[0];
Dispchar(2,0,i,0);
i=RxMain_data[1];
Dispchar(2,1,i,0);
i=RxMain_data[2];
Dispchar(2,2,i,0);
i=RxMain_data[3];
i=number_ascii(i);
Dispchar(2,3,i,0);
i=RxMain_data[4];
i=number_ascii(i);
Dispchar(2,4,i,0);
i=RxMain_data[5];
i=number_ascii(i);
Dispchar(2,5,i,0);
i=RxMain_data[6];
j=(i&0xf0)>>4;
j=number_ascii(j);
Dispchar(2,6,j,0);
i=RxMain_data[6];
j=i&0x0f;
j=number_ascii(j);
Dispchar(2,7,j,0);
}
} */
void main()
{
//SP=0xd0;
raminit();
Myinit();
lcdiniton(); // OPEN DISPLAY
lcdinitz(); // LINE Z
Feedingdog(); // clear watch dog
lcdclose();
displaynop();
lcdiniton();
beginmap(3); // 开机图显示
delaykey();
//raminit();
cleardisram();
displaynop();
COMM_OK=0;
ES=1;
ET2 =1; // allow t2 int
ET0=1;
EA=1;
TR0 = 1;
TR1 = 1;
TR2 = 1;
selfexamine();
displaynop();
keytabindex=0;
(*KeyTab[keytabindex].CurrentOperate)();
if(nogpsdata)
{ dispdate();//显示日期
disptime();//显示时间
}
else
dispnodata();//显示:搜寻卫星信号...
Feedingdog();
dispnewsnumb();// 显示接收信息的条数、以及未读信息的条数
IRIN=1;
BEEPtime=0;
BLtime=0;
BEEP=0;
BLIGHT=0;
p1tune(RAMCS);
ManulCall[0]=0x0d;
comeingtelep=0;
OldInforCnt=0;
NewInforCnt=0;
FinallyKeyVal=0xff;
//FOR DEBUG START
//wrsr_dog(0x34);//启动看门狗
//FOR DEBUG END
/////////////////按键处理////////////////////////////////////////////////
while(1)
{
Feedingdog();
//if(keytabindex==0)
//dtest();//for test在LCD上显示从主机接收到的前7位
//for debug start
//byte_write(0,0x01,0x03);
//x5045data=byte_read(0,0x01);
//Dispchar(2,1,(number_ascii(antenna)),1);
//Dispchar(2,0,(number_ascii(((antenna)>>4))),1);
//Dispchar(2,3,(number_ascii(OldAntennaVal)),1);
//Dispchar(2,2,(number_ascii((OldAntennaVal>>4))),1);
//for debug end
RefushFace();//刷新主界面//for
//||OldInforCnt!=NewInforCnt
if((comeingtelep&&dispteleph)||WaitingOver||((BLtime>=6100)&&((InforType&0x0f)>0)))
{
keytabindex=0;
mainface();
pic_temp=0;
if((InforType&0x0f)>0)
InforType=0;
}
if(testkey())
{
KeyCaller=0x10;
keytune();
if(keytabindex==24)
{
screen2=1;
}
else
{
screen2=0;
}
}
IRKeyVal=HandleIR();
if(IRKeyVal!=0xff)
{
KeyCaller=0x20;
keytune();
if(keytabindex==24)
{
screen2=1;
}
else
{
screen2=0;
}
}
if(gps_rec_end)
{
seridatatune();
gps_star = 0;
gps_rec_end = 0;
}
//UartSendProcess();
rxdatatune();//处理主机发送来的数据*/
}
}
////////////////主函数结束///////////////////////////////////////////////
void untogb(uchar hi_unicode,uchar low_unicode)//unicode 转换成 GB2312内码
{ //查表后所得到的是区位码+0x2020
//加0x8080转化为内码送入缓冲
//如果以后RAM不够用可采用返回参数方式
//!!不可显示字符转换会出乱码!!!//不转换ASCII的UNICODE
uint16 data unicode;
/*if(hi_unicode==0&&low_unicode<0xa4)//如果是ASCII字符
{
}*/
p1tune(ROMCS);
A18=1;
A17=0;//非常重要!!!!!
LCDRWIO=1;
LCDDIIO=1;
//P1=ROMCS;
unicode=hi_unicode;
CY=0;
unicode=unicode<<8;
//k=low_unicode;
unicode+=(uint16)(low_unicode);
if(unicode>=0x80a4)//判断是在第一还是第二个64K范围
{
//unicode=unicode-0x80a4;
unicode-=0x80a4; //减去0x8000
A16=1;
//unicode-=0x00a4;
}
else
{
A16=0;
unicode-=0x00a4;
}
CY=0;
unicode=unicode<<1;
hi_gb=XBYTE[unicode];
unicode++;
low_gb=XBYTE[unicode];
/*if((hi_gb<0x21)||(low_gb<0x21))//for debug
{
hi_gb=0x21;low_gb=0x32;
} //for debug
//P1=j;
if((hi_gb>0x77)||(low_gb>0x7e))//for debug
{
hi_gb=0x21;low_gb=0x24;
} //for debug*/
hi_gb=hi_gb|0x80;
low_gb=low_gb|0x80;
A18=0;
}
void rxdatatune(void)//接收主机数据处理
{
uchar data i,j,k,checksum;
//uchar xdata *TempPtr;
//uchar xdata *pTemp1,*pTemp2;
uint16 idata p,q,r;
//uchar xdata pTemp1,pTemp2;
p=q=r=0;
i=j=k=checksum=0;
while(TxNum!=0||TxPos!=0);
//ES=0;
Feedingdog();
LCDRWIO=1;
LCDDIIO=1;
p1tune(RAMCS);
if(RxMain_end)
{
p=RxMain_data[3];
p=(p<<8);
p+=RxMain_data[4];
p+=5;//加上$+设备字+命令字+2数据长度字节
checksum=RxMain_data[3];
for(q=4;q<p;q++)
{
checksum^=RxMain_data[q];
}//算校验和
//for GPRS SMS DEBUG STAR
if(RxMain_data[2]==0x42)//for test
{ ReturnOK(0x42); //for test
BEEPtime=0;
BLtime=0;
BEEP=0;
BLIGHT=0;
if(RxMain_data[15]==0x00)//如果是公共信息
CommProcess(p);//GPRS发送的公共信息处理
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -