📄 19264cv0_1.c.bak
字号:
/***********************************************************************************
Start date: 2004-06-15
mcu: STC89C516RD、STC89C516RD+
ver: 0.8
Writer: hujie
Purpose: V type machine
------------------------------------------------------------------------------------
NOTICE:
1)STC89C512RD+内有1024BYTE XRAM,如用此IC 读写外部RAM:0X400以内地址需屏蔽
STC89C512RD 内有768YTE XRAM,如用此IC 读写外部RAM:0X300以内地址需屏蔽
2)读写XRAM时候 A0-A15 、/WR、 /RD无输出。
3)更换虚拟XDATA不同的MCU后需修改以下函数:
void disromdata(uchar hicode,uchar locode)//从ROM中读取汉字点阵数据
另,在对所有XDATA型数据的访问前,需执行p1tune(RAMCS)函数。
//------- MODIFY DATE:2004-10-19------------//
//**********************************************************************************/
//#pragma SRC
#include "regx52.h"
#include "lcd192.h"
#include <absacc.h>
#include <intrins.h>
#include "io_assign.h"
#include "IRrec.h"
#include "keyval_def.h"
#include "array_def.h"
#include "newmenu.h"
#include "x5045.h"
//#include <hanshudef.h>
//#include <keytune.h>
#define MAIN_COMM 1 //接收主机数据
#define DGPS_COMM 0 //接收GPS数据
//////////////////位标志定义///////////////////////
//////////原始位标志///////////////
bit gps_star;//
bit gps_rec_end;//
bit gps_dingw;//GPS定位标志
bit gps_write;//
//bit dispnews;//
bit fangsign;//
bit time50mssign,time100mssign,time1ssign,miao60sign,dispteleph;//
bit dispsign,comeingtelep,selfsign,screen2;//
bit alarmsign,loudsign,lightsign,dismiaosign,testsign;//
bit nogpsdata1;//
bit nogpsdata;//"1"GPS定位状态“0”GPS无定位
//////////////////////////////新定义位标志///////////////
//bit newtel,news;//
bit flag_main_dgps;//接收主机与DGPS选择标志
bit RxMain_head=FALSE;
bit BeepSound,BLlight;//蜂鸣器发声以及背光点亮标志
bit readkeysign;//有键盘按下标志
bit volatile RecJoin;//接收主机数据字节高、低4位结合标志。1:结合
bit FlagOldComeTel;//上一次来电标志
bit bNewInfor;//有新短信标志
bit WaitingOver;//在主界面以及拨打电话、通话界面以外待机超过5分钟
bit regingflag;//“密码验证成功但还未返回”标志 1:未返回 0已经:返回
////////////////////////////////////////////////////////
uchar data pic_temp;//上一状态号码
uchar data other_temp;
uchar data other1_temp; //上一状态号
uchar data keyval_temp; //上一键值
uchar data TxPos;
//uchar idata TxPos;
uchar data TxNum;
uchar data RxMain_star;
uchar data RxMain_end;
uint16 data RxMain_ptr;
uchar data COMM_OK;
uchar data KEYVAL_OK;
uchar data sec5;//
uchar idata RegOK;// 登录标志
uchar idata CommCounter;//公共信息计数器
uchar idata SMScnt;//短信计数器
uchar idata CommTotal;//公共信息总数 包含公共信息计数器+短信计数器
uchar idata SchInforCnt;//调度信息计数器
uchar idata InforTotal;//总的信息条数
uchar idata InforListCnt;//信息显示列表计数器
uchar idata InforDispCnt;//信息内容显示计数器
uchar idata WaitingTimer;//待机定时器;单位:分钟
uchar idata FlagNoHotTel;//无热线号码标志
uchar idata FlagPortInput;//IP端口输入状态标志
bit AutoConnectionFlag;// 自动接听标志。1:自动 0:手动
bit SelectAutoConnection;//自动接听选择标志:1:自动 0:手动
uchar idata IRKeyVal;
uchar idata mcsbak;//片选信号备分
uchar idata FlagXram;//读取点阵时使用XDATA 0x0000--0x02ff标志。1:使用 0:未使用
uchar idata ComeTelTimer;//来电超时定时器
uchar idata TxCmdCnt;//发送除电话号码以外的命令数据的字节数
uchar idata HotLineCnt;//热线条数
uchar idata ForntMID;//前一位是间隔符标志
uchar idata InforType;//收到新信息的类型标志
//0x10 电召 0x20 调度 0x30 GPRS 公共 OX40 短信
//0x11 0x21 0x31 0x41 表示信息已经显示
uchar idata RefushCommInfor;//刷新公共信息标志
uchar idata RefushCmdInfor;//刷新调度信息标志
uchar idata NoReadCmdCnt;// 未读调度信息计数器
uchar idata NoReadSmsCnt;// 未读短信信计数器
uchar idata NoReadGprsCommCnt;// 未读GPRS公共信息计数器
uchar idata NoReadInfoCnt;//未读信息计数器
uchar idata NewInforTimer;//新信息显示定时器
uchar idata REG_No;//当前登录驾驶员编号
uchar idata ModifyPsw_No;//当前更改登录密码的驾驶员编号
bit FlagOldOK;//旧密码验证OK
bit FinishRegModify;//完成登陆密码更改标志
bit FlagFinishReg;//登陆验证完成标志
//////////////////////////////////////////////////////////////
uchar idata antenna;//USED GSM信号强度值。
uchar data mcs138;
uchar idata miaotime;
uchar idata time_count_s;
uchar idata time_10ms;
uchar idata command;
uchar idata time20mssign;
uchar idata KeyIntervalTime;//按键间隔时间
uchar idata BEEPtime;//蜂鸣器响闹时间
uint16 idata BLtime;//LCD背光时间
//uchar data tnumbnews;
uchar idata jiannumb;//主界面问候语句序号
uchar data gpstime;
uchar data seri_rx_prt;
uchar data hi_gb;
uchar data low_gb;
/***********************信息显示部分变量声明开始*********************/
uchar idata InforListCurser;//信息列表光标
uchar idata InforListPtr;//显示信息列表时的序号//以3递增递减
uchar idata InforScreenNum;//信息内容显示屏号
uchar idata InforScreenCnt;//信息内容屏数
bit InforListClrScreen;//信息列表清屏标志
bit InforDispBuffering;//信息内容已经全部缓冲标志
uchar idata x5045data;//for debug
/*************************信息显示部分变量声明结束********************/
struct GprsInforStruct//GPRS方式发出信息的结构
{
uchar ReadFlag;//是否阅读标志//0x2a未读、0x20已读//00表示废弃
uchar InforNumber;//信息存储序号//0xff表示无用信息
uchar CodeMode;//编码方式内码或UNICODE//0XF0内码、0XF8 UNICODE
uchar BlockNumber;
uchar BlockTotal;
//uchar Tels[54];//电召及顾客电话
uchar Text[512];//文本
uint16 TextLenth;//文本长度
};
struct SMSstruct//短信的结构
{
uchar ReadFlag;//是否阅读标志//10未读、80已读 //00表示废弃
uchar InforNumber;//信息存储序号
uchar CodeMode;//编码方式内码或UNICODE//0XF0内码、0XF8 UNICODE
uchar Tel[24];//
uchar Text[166];//文本
uchar TextLenth;//文本长度
};
struct ComeTelStruct//来电记录的结构
{
uchar TalkFlag;//是否通话标志
uchar ComeTelNumber;// 电话序号
uchar ComeTel[22];//来电号码
uchar ComeTelDate[24];//来电日期时间
};
struct ComeTelStruct xdata ComeTel[20] _at_ 0x60e6;//来电记录
struct GprsInforStruct xdata CmdInfor[20] _at_ 0x1000; //调度信息
struct GprsInforStruct xdata ConvokeInfor[10] _at_ 0x388c;//电召信息
struct SMSstruct xdata SMSInfor[10] _at_ 0x4cd2;//短信
struct GprsInforStruct xdata CommInfor[10] _at_ 0x64e6;//公共信息
uchar data keytabindex;//菜单状态索引变量
typedef struct
{
unsigned char KeyTab_MenuIndex; //当前状态索引号
//unsigned int KeyTab_MaxItems; //本级菜单最大条目数
unsigned char KeyTab_PressOk; //按下"确认"键时转向的状态索引号
unsigned char KeyTab_PressEsc; //按下"退出"键时转向的状态索引号
unsigned char KeyTab_PressDEL; //按下"DEL"键时转向的状态索引号
unsigned char KeyTab_PressFUNC; //按下"功能"键时转向的状态索引号
unsigned char KeyTab_PressDown; //按下"下翻"键时转向的状态索引号
unsigned char KeyTab_PressUp; //按下"上翻"键时转向的状态索引号
unsigned char SubTotal; //该级子菜单数//OXFF表示小于2
unsigned char SubNum; //该画面的子序号对应红外键值转向
void (code *CurrentOperate)(); //当前状态应该执行的功能操作
}KeyTabStruct;
void (code *KeyFuncPtr)(); //按键功能指针
KeyTabStruct code KeyTab[121];
///////////////////////////////////////////////////////
void untogb(uchar hi_unicode,uchar low_unicode);
void Feedingdog(void);
void XdataInint(void);
//uchar AscToHex(uchar Asc);//ASCII转HEX
void CommProcess(uint16 p);//GPRS发送的公共信息处理//入口数据长度值
void ReturnOK(uchar token);//向串口发送接收OK。入口为命令字
void TxCommand(void);//向主机发送(除电话号码以外)数据的公共函数
void DialNum(void);//在待机界面显示数字以及* #,及在通话状态向主机发送键值
void SendTel(void);// 发送号码到主机
/////////菜单结构表内函数声明开始/////////////////////////////////////
void disp_halfline(uchar xpost,uchar * discodeprt,bit tempsign);
void RefushFace(void);//刷新主界面
void SendGprsInforListToDisBuf(struct GprsInforStruct *InforPtr,struct SMSstruct *SMS_Ptr,
uchar ReverseLine);
void SendGprsInforContentToDisBuf(void); //将入口参数对应的GPRS
//信息的当前屏的内容送显示缓冲
void DispCommError(void);//显示通讯异常
void owntel_number_in(void);//自定义电话:号码输入界面
void store_owntel(void);//自定义号码:存储界面
void SMScenter_number_in(void);//设置短信中心界面
void store_SMScenter(void);//存储短信中心号码
void SendSMS_CentTel(void);// 发送短信中心号码到主机
void GPRS_IPset(void);//GPRS IP设置界面
void GPRS_Pw(void);//GPRS设置密码输入
void Validate(void);//GPRS IP以及密码验证
void PwNotice(uchar xpos,uchar ypos,bit tempsign);//密码提示语句显示“请输入X位密码”
void TempDispFuc(uchar xpos,uchar ypos,bit tempsign);//从固定地址提取内码显示一行临时语句
void CommSMSProcess(uint16 p);//短信方式发送的公共信息处理
void ScheduleInforProcess(uint16 p);//GPRS发送的调度信息的处理
void ScheduleInfor_Del_face(void);//GPRS调度信息删除询问界面
void ScheduleInfor_Del_Operate(void);//GPRS调度信息删除操作,无截面
///调度信息列表显示函数
void SendCmdInforListToDisBuf(struct GprsInforStruct *InforPtr,uchar ReverseLine);
void workRec_disp_face(void); //业务记录列表:显示详细业务记录
void SendCmdInforContentToDisBuf(void);//调度信息的当前屏的内容送显示缓冲
void DispCurrentInfor(void);//显示当前收到的短信,全局变量入口:InforType为信息类型
//0x10 电召 0x20 调度 0x30 GPRS 公共 OX40 短信
//0x11 0x21 0x31 0x41 表示信息已经显示
SendComeTelListToDisBuf(struct ComeTelStruct *pComeTel,uchar ReverseLine);//显示来电记录列表
void NumberInput(uchar xpos,uchar LowBit,uchar HighBit);//从IRKEY输入数字的公共函数
void NumberInput_Separate(uchar xpos,uchar LowBit,uchar HighBit);//从IRKEY或者FACEBORD输入数字的公共函数
void store_config(void);//自动接听配置界面:手动
void auto_connection_face(void); //自动接听配置界面:自动
void modify_psw_face1(void); //"1#更改登录密码"
void modify_psw_face2(void); //"2#更改登录密码"
void modify_psw_face3(void); //"3#更改登录密码"
void Input_OldRegPsw(void);//更改登录密码--》旧密码输入
void RegPsw_Sure(void); //输入新登陆密码以及确认
void often_list_feedback(void){;} //常用短语列表-》“2 反馈短语”
void into_tel_disp(void){;} //来电详细内容显示
void del_intotel_request(void){;} //DEL来电记录询问
void del_intotel_face(void){;} //DEL来电操作并显示
void manual_connection_face(void){;}//自动接听配置界面:手动
//显示8*16的天线符号
void DispAntenna(uchar xpost,uchar ypost,bit tempsign);
void ComeTel_Del_Face(void);//删除来电列表询问界面
void ComeTel_Del_Operate(void);// 删除来电列表操作,无界面
void Dial_ComeTel(void);//拨打来电号码界面
void DispDetial_ComeTel(void);//显示来电号码以及时间等详细信息
void SendComeTelContentToDisBuf(void);//发送来电详细记录到显示缓冲
void mainface(void);//显示主界面
void main_menu_query(); //主菜单,光标停在“查询来电”栏
void main_menu_workinfo(); //主菜单,光标停在“业务信息”栏
//void main_menu_publicInfo();//主菜单,光标停在“公共信息”栏
void sub_menu_workinfo(); //业务信息列表,光标停在第一栏"车到侯客"
void sub_menu_help(); //求助信息列表,光标停在第一栏"塞 车"
void sub_menu_feedback(); //反馈信息列表光标停在第一栏"车内有事物"
//以下三个是对应3个预留主菜单的内容显示结构
void read_sms_face(); //阅读短信界面,根据10状态的光标停留栏显示短信
void read_tel_face(); //阅读来电界面,根据11状态的光标停留栏显示来电
//目前暂和11的功能一样--未使用
void send_workinfo_ask(); //发送业务信息询问界面
void send_help_ask(); //发送求助信息询问界面
void send_feedback_ask(); //发送反馈信息询问界面
void gps_status(); //GPS定位状态。
void del_sms_face(void); // DEL 短信无界面
void disp_send_success();
void workinfo_list_jdk();//业务信息光标停在2“接到客人”
void workinfo_list_kc();//业务信息3空车
void workinfo_list_wzdzcdd();//业务信息4未找到召车地点
void workinfo_list_zcdwk();//业务信息5召车地无客
void workinfo_list_wfasdd();//业务信息6无法按时到达
void workinfo_list_qlpc(); //业务信息7请另派车
void help_list_gz(); //求助信息2光标停在"故 障"栏
void help_list_sg(); //求助信息3光标停在"事 故"栏
void help_list_pm(); //求助信息4光标停在"抛 锚"栏
void help_list_qzsjyz();//求助信息5光标停在"请指示加油站"栏
void help_list_ylqz(); //求助信息6光标停在"医疗求助"栏
void help_list_mlqzswz();//求助信息7光标停在"迷路,请指示位置"栏
void feedback_list_cnwsw(); //反馈信息2车内有失物
void feedback_list_tcxx(); //反馈信息3停车休息
void feedback_list_cljy(); //反馈信息4车辆加油
void sys_list_ver(); //SYS信息光标停在4"版本信息"栏
void sys_list_gsm(); //SYS信息光标停在2"GSM信号标值"栏
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 Keytimerset(){\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -