📄 19264cv0_1.c
字号:
/***********************************************************************************
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------------//
------包含电召模块------2004-12-13
//**********************************************************************************/
//#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数据
/*
extern void Write8(unsigned char byt);//向5045写入8位数据
extern unsigned char Read8(void);//从5045读出8位数据
extern unsigned char rdsr_dog(void);//读5045状态寄存器
extern void wrsr_dog(unsigned char status_reg);//写5045状态寄存器
extern unsigned char wip_poll(void);////检验写操作是否结束。
//void wrdi_dog(void);//看门狗写禁止子程序
//void rest_dog(void);//喂狗
extern unsigned char byte_read(bit HiHalf,unsigned char Addr);//字节读
extern void byte_write(bit HiHalf,unsigned char Addr,unsigned char Data);//字节写
*/
//////////////////位标志定义///////////////////////
//////////原始位标志///////////////
bit gps_star;//
bit gps_rec_end;//
bit gps_dingw;//GPS定位标志
bit gps_write;//
bit MainRecBusy_flag;//接收或者发送主机数据后的状态延迟
uchar idata MainRecBusyTime;//接收或者发送主机数据后的状态延迟计时
uchar idata MainRecTimer;////接收主机数据计时器
//bit dispnews;//
bit fangsign;//
bit time1ssign,miao60sign,dispteleph;//
bit dispsign,comeingtelep;//,screen2;//
bit alarmsign,loudsign,lightsign,dismiaosign,testsign;//
bit nogpsdata1;//
bit nogpsdata;//"1"GPS定位状态“0”GPS无定位
bit bGSM_GPRS;//0:GSM状态 1:GPRS状态
//////////////////////////////新定义位标志///////////////
//bit newtel,news;//
bit flag_main_dgps;//接收主机与DGPS选择标志
bit RxMain_head=FALSE;
bit readkeysign;//有键盘按下标志
bit volatile RecJoin;//接收主机数据字节高、低4位结合标志。1:结合
bit FlagOldComeTel;//上一次来电标志
bit bNewInfor;//有新短信标志
bit WaitingOver;//在主界面以及拨打电话、通话界面以外待机超过5分钟
bit NewAimFlag;//收到新标 标志
bit regingflag;//“密码验证成功但还未返回”标志 1:未返回 0已经:返回
bit FlagXram;//读取点阵时使用XDATA 0x0000--0x02ff标志。1:使用 0:未使用
bit TempFlag1, TempFlag2,TempFlag3;//电召部分暂用标志
////////////////////////////////////////////////////////
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 FinallyKeyVal;//最终键值。可作为KEYTUNE程序以外的用户程序使用的键值
//无论由LCD面板还是红外手柄输出的键值译码后都必须在此变量中备份
uchar idata sec5;//
uchar idata RegOK;// 登录标志
uchar idata CommCounter;//GPRS公共信息计数器
uchar idata SMScnt;//短信计数器
uchar idata CommTotal;//公共信息总数 包含公共信息计数器+短信计数器
uchar idata SchInforCnt;//调度信息计数器
uchar idata InforTotal;//总的信息条数
uchar idata InforListCnt;//信息显示列表计数器
uchar idata InforDispCnt;//信息内容显示计数器
uchar idata WaitingTimer;//待机定时器;单位:分钟
uchar xdata FlagNoHotTel;//无热线号码标志
uchar xdata FlagPortInput;//IP端口输入状态标志
bit AutoConnectionFlag;// 自动接听标志。1:自动 0:手动
bit SelectAutoConnection;//自动接听选择标志:1:自动 0:手动
uchar idata IRKeyVal;
uchar idata ComeTelTimer;//来电超时定时器
uchar idata TxCmdCnt;//发送除电话号码以外的命令数据的字节数
uchar xdata 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 ConveneInforCnt;//电召信息计数器
uchar idata NoReadConveneCnt;//未读电召信息计数器
uchar idata TotalWorkRec;//业务记录总条数
uchar idata ReinforceConveneNum;//填充标地的电召存储序号 如果最高位:1:有填充 0:无填充
//uchar idata ConveneOpt;//电召菜单操作状态
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;//信息内容屏数
uchar idata InforPubPtr;//=m+InforListPtr;//各种信息当前正在操作的存储通用指针
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 E_ConveneStruct//电召信息结构//
{
uchar TradeFlag;//交易标志//0x00:废标,0x01:收到标头,未读//0X02:抢标,还未回复
//0X03:已抢标成功,未收到标地//0X04:收到标地未读
//0X05:收到标地已读未载到客//00x06:收到标地载到客交易完成。
uchar InforNumber;//信息序号
uchar AimNumber[3];//标书编号
uchar Timer;//等待定时 //大于0X80开始定时
uchar HeaderLenth;// 标头文本长度
uchar AimContentLenth;//标的文本长度
uchar E_ConveneTel[24];//电召电话
uchar BuyerTel[24];//顾客电话
uchar AimHeader[90];//标头
uchar AimContent[400];//标的
};
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_ 0x792c;//来电记录
struct GprsInforStruct xdata CmdInfor[20] _at_ 0x0e31; //调度信息
struct SMSstruct xdata SMSInfor[10] _at_ 0x36bd;//短信
struct GprsInforStruct xdata CommInfor[10] _at_ 0x6100;//公共信息
struct E_ConveneStruct xdata E_ConveneRec[10] _at_ 0x45d1;//电召记录
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[131];
///////////////////////////////////////////////////////
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 ConveneInforProcess(uint16 p);//电召信息存储
void ScheduleInfor_Del_face(void);//GPRS调度信息删除询问界面
void ScheduleInfor_Del_Operate(void);//GPRS调度信息删除操作,无截面
///调度信息列表显示函数
void SendCmdInforListToDisBuf(struct E_ConveneStruct *pConveneInfor,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 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 InforIndexTune(uchar cnt);//信息目录显示的索引处理
//void SendConveneInforContentToDisBuf(void); //缓冲电召信息内容
void List_Dial_ConTel(void); //拨打电召电话选项
void List_Dial_BuyerTel(void); //拨打顾客电话选项
void Dial_InforTel(void); //拨打信息中的电话
void LootAim(void); //发送抢标命令选项
void putBmp16(uchar code *BmpPtr,uchar xpos,uchar ypos);//显示16*16图标
void SendSucJudge(void);//上传信息后的结果处理
void main_menu_CenterCstmWords(void); //由中心自定义短语项
void List_CenterCstmWords(void);//列表 中心定制短语
void Q_Send_CenterCstmWords(void);//发送中心定制短语
void A_Send_CenterCstmWords(void);//发送定制短语
void DisSendCstmWordsSuc(void);//显示发送定制短语才成功
void DispSendSucess(void);//显示发送成功
//列表自定义短语
void SendWordsInforListToDisBuf(uchar xdata *pCstmWords,uchar ReverseLine);
void CenterCstmWordsProcess(uint16 p);//处理从串口收到的中心定制短语
void TrafficSeverCancel(void); //交通信息服务-》取消
void NewsSeverCancel(void); //新闻--》取消
void WeatherSeverCancel(void); //天气预报-》取消
void IncreValSend(void); //发送增值服务代码到中心
void SysSet_PswCompare(void);//短信中心设置比较密码
void Disp_Dial(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 dispzi(uchar xpost,uchar ypost,uchar *discodeprt,bit tempsign);
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信号标值"栏
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -