📄 19264cv0_1.c
字号:
//void sys_list_FaceSet(); //SYS信息光标停在3“界面设置”栏
void send_result_disp(uchar send_fan_sign);
uchar number_ascii(uchar number);//将数值转换成ASCII码
void send_keyval(uchar hkeyval,uchar lkeyval); //发送键值
uchar send_feedback(uchar);
uchar send_help(uchar);
void send_workinfo_face(); //发送业务信息显示“业务信息发送中”
void send_help_face(); //发送求助信息显示“求助信息发送中”
void send_feedback_face(); //发送反馈信息显示“反馈信息发送中”
void disp_ver(); //display ver
void disp_sign_val(); //显示信号标值
void disp_set_menu(); //显示界面设置选择菜单/隐含操作
void face1_set(); //界面设置:“伊爱高新”
void face2_set(); //界面设置:“一路顺风”
void face3_set(); //界面设置:“伊爱高新为你服务”
void face4_set();//界面设置:“伊爱车载显示终端”
void face_Set_operate(); //执行界面设置操作
void send_workinfo_fail(); //显示“发送业务信息失败、成功”
void send_help_success(); //显示“发送求助信息成功”
void send_feedback_success(); //显示“发送反馈信息失败、成功”
///////////菜单结构表内函数声明结束///////////////////////////////////
uchar HandleIR(void);//红外拨号器处理
void selfexamine(void);//自检
uchar bytetune(uchar);//字节按位倒序
void putdown(uchar xpos,uchar ypos,bit);//在第0行显示向下的箭头符号
void putup(uchar xpos,uchar ypos,bit);//在第0行显示向上的箭头符号
void p1tune(uchar);//往P1送片选信号控制LCDE ROMCS RAMCS HZKCS KEYCS BEEP
void display(uchar *,uchar);
void dispscreen(void);
void serive_tx_data(void);
void keytune(void); //键值处理
void delaykey(void);
void raminit(void);
//void disnonews(void);
bit testkey(void);//检测是否有按键
bit rxmaindata(void);//接收主机数据
void cleardisram(void);//清显示RAM 0-12 BYTE
void cleardisram1(void);//无实现部分。
void antennaroue(void);//显示GSM信号强度
void dispdate(void);
void disptime(void);
void dispnewsnumb(void);
void dingwroue(void);
//void dispscreenchin(void);
void seridatatune(void);
void dotetimedate(void);
void byte12(void);
void speedtune(void);
// Header:
// File Name:
// Author:
// Date:
//void lightbell(void);
void beginmap1(uchar);
void gpsmap(void);
void gpsfang(void);
void dis12dote(uchar,uchar,uchar *,bit);
void dis12dote1(uchar,uchar,uchar *,bit);
void d12jianmian(void);
void dispscreen1 (void);
//void rxdatatune1(void);
void rxdatatune(void);//串行接收主机数据处理
void readtelep(void);
//void readnews(void);
void beginmap(uchar);
void displaynop(void);
bit lcdstate(void); //读LCD状态
void lcdinitz(void); //设置显示初始行为第0行
void lcdiniton(void);//开显示
void lcdclose(void);//关显示
bit lcdwcommd(uchar);//写命令入LCD
bit lcdwdata(uchar); //写显示数据入LCD
void disdatatune(void);//横向数据调整成纵向数据
uchar menutune(uchar,uchar *,uchar,uchar);
//void disonenews(uchar *);
//void displsysure(uchar *);
void displaysurenews(uchar );
void displayline3 (uchar); // 清除一行
void displayline2(uchar ,uchar * ,bit ); // 显示信息目录中的某一行
void displayline1(uchar ,uchar * ,bit ); //显示一行电话号码。
void displayline(uchar ,uchar * ,bit); // 显示一行ASCII字符或者汉字。uchar *:指向GB码的指针。
void readromandchpot(uchar ,uchar );
void Dispchar(uchar ,uchar ,uchar ,bit);// 在指定位置显示一个ASCII字符 入口为ASCII码
//void Dispchin(uchar ,uchar ,uchar ,uchar ,bit);
void Dispchin(uchar ,uchar ,bit);//将调整后的Dispdata[32]数据写入LCD
void disromdata(uchar ,uchar );//根据内码取ROM中点阵数据并传给汉显缓冲disdata[]
//extern void serive_rx_data(void);
//调用外部的汇编程序
//extern uchar SPIRecAChar(void); //asm files
//extern SPIWRITESD(uchar i ); //asm files
//extern bit SPISendAChar(uchar senddata);
//extern void SPISendStr(INT8U * senddata, INT8U length);
/*****************************************
//key time rset: 键检测时间复位 宏定义
****************************************
#define (){\
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;
EA=0;
//if(byte_read(0,0x02!=0x30))
//{
//wrsr_dog(0x30); //写使能
//byte_write(0,0x02,0x30);//X5045 的02H是登陆密码初始化字。30表示已经
//wrsr_dog(0x3e);//写保护
for(j=0,k=0x30;j<3;j++,k++)
for(i=0;i<6;i++)
{
RegPswVal[j][i]=k;//登录密码值:数字的ASCII
}
page_write(0x10,&RegPswVal[0][0],6);//写入X5045
page_write(0x20,&RegPswVal[1][0],6);//写入X5045
page_write(0x30,&RegPswVal[2][0],6);//写入X5045
//}
}
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;//串口为最高优先级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;
//位标志//初始化
bGSM_GPRS=0;//0:GSM状态 1:GPRS状态
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;
KeyCaller=0;
//调用Keytune()的调用者声明。0x10为LCD面板按键检测程序 0x20为IRKEY检测程序
//0为无调用者
p1tune(RAMCS);
NoTalkCnt=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公共信息计数器
ReinforceConveneNum=0;//填充标地的电召存储序号
CommTotal=0;
RegOK=0;
AutoConnectionFlag=0;// 自动接听标志。1:自动 0:手动
Feedingdog();
cleardisram();
antenna = 0;
//tnumbnews = 0x00;
seri_rx_prt = 0x00;
TotalWorkRec=0;//业务记录总的条数
ConveneInforCnt=0;//电召信息计数器
NoReadConveneCnt=0;//未读电召信息计数器
NewAimFlag=0;//收到新标标志
MainRecBusy_flag=0;
MainRecBusyTime=0;
MainRecTimer=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);
if(jiannumb>3)
jiannumb=3;
bNewInfor=0;//有新短信标志
WaitingOver=0;//在主界面以及拨打电话、通话界面以外待机超过5分钟
reginit();//登录初始化
XdataInint();
//wrsr_dog(0x00);//for debug
}
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;
uchar data i;
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;
send_keyval(0x0f,0x00);//请求中心发送“定制信息”
//FOR DEBUG START
//wrsr_dog(0x34);//启动看门狗
//FOR DEBUG END
/////////////////按键处理////////////////////////////////////////////////
while(1)
{
Feedingdog();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -