?? includes.h
字號:
//[Includes.h]總頭文件-----------------------------------------------------*
//本文件包含: *
// 主函數(main)文件中用到的頭文件、外部函數聲明及有關常量命名 *
//-------------------------------------------------------------------------*
//1.包含通用頭文件
#include "isr.h" //中斷處理函數頭文件
#include "Type.h" //類型別名定義
#include "MCUInit.h" //芯片初始化頭文件
//2.包含面向硬件對象頭文件
#include "SCI.h" //串行通信頭文件
#include "ADC.h" //A/D轉換頭文件
#include "DS12C887.c" //時鐘頭文件
//*******************************************************************/
//DS12C887寄存器地址定義
//*******************************************************************/
#define DS12C887_M XBYTE [0x7f00]//秒
#define DS12C887_MA XBYTE [0x7f01]//秒報警
#define DS12C887_F XBYTE [0x7f02]//分
#define DS12C887_FA XBYTE [0x7f03]//分報警
#define DS12C887_S XBYTE [0x7f04]//時
#define DS12C887_SA XBYTE [0x7f05]//時報警
#define DS12C887_X XBYTE [0x7f06]//星期
#define DS12C887_R XBYTE [0x7f07]//日
#define DS12C887_Y XBYTE [0x7f08]//月
#define DS12C887_N XBYTE [0x7f09]//年
#define DS12C887_A XBYTE [0x7f0a]//寄存器A,A.7—只讀判斷忙閑
#define DS12C887_B XBYTE [0x7f0b]//寄存器B,B.7—控制工作狀態:0正常、1停止
// B.2—BCD碼或二進制選擇:0 二進制
// B.1—24/12小時模式選擇:1 24小時進制
#define DS12C887_C XBYTE [0x7f0c]//寄存器C
#define DS12C887_D XBYTE [0x7f0d]//寄存器D 只讀,讀取該寄存器可使設置的時間和工作模式生效
//*******************************************************************/
//使用觸摸屏數據庫保存信息
//*******************************************************************/
#define PIC_INDEX 0x01 //使用外部非掉電字節,圖片自加索引好
#define PIC_SAVE_INDEX 0x02 //圖片在0x40~0x50存貯位置的號碼
#define WAIT_COST_H 0x03 //等待單價的外部存貯高位
#define WAIT_COST_L 0x04 //等待單價的外部存貯低位
#define SINGLE_COST_H 0x05 //單價
#define SINGLE_COST_L 0x06 //單價
#define FIRST_COST_H 0x07 //起步價
#define FIRST_COST_L 0x08 //起步價
#define PASSWORD_H 0x09 //密碼的外部保存
#define PASSWORD_L 0x0a //
/*11.22添加,單價信息的十分位信息*/
#define WAIT_COST_DOT 0x0b //等待單價十分位
#define SINGLE_COST_DOT 0x0c //單價十分位
#define FIRST_COST_DOT 0x0d //起步價十分位
#define WAIT_MINUTE_H 0x19
#define WAIT_MINUTE_L 0x0e //
#define MILEAGE_H 0x0f //
#define MILEAGE_L 0x10
#define TOTAL_COST_H 0x11 //
#define TOTAL_COST_L 0x12 //
#define TIME_YEAR 0x13
#define TIME_MONTH 0x14
#define TIME_DAY 0x15
#define TIME_HOUR 0x16
#define TIME_MINUTE 0x17
#define DIAODIAN_FLAG 0x18
///////////////////////////////////
/* AD轉換的入口參數,僅低4位有意義,高4位恒0,低4位意義依次為:StartBit|SGL|ODD|SelectBit
其中起始位恒為1,這里不歸入此字節 */
#define CHANNEL_0 0x0c //單通道0采集
#define CHANNEL_1 0x0e //單通道1采集
#define CHANNEL_2 0x0d //單通道2采集
#define CHANNEL_3 0x0f //單通道3采集
/////////////////////////////////////
/*繼電器端口號*/
#define PA XBYTE [0xBFFC] //PA口狀態控制字
#define PB XBYTE [0xBFFD] //PM口狀態控制字
#define PC XBYTE [0XBFFE] //PP口狀態控制字
#define CR XBYTE [0xBFFF] //8255控制字
/////////////////////
//函數聲明部分
void send_char(INT8U ch);
void send_string(INT8U *str,INT8U strlen);
void ini_lcd();
void ini_serialcomm();
void delay_ms(INT8U n);
bit Btn_click(INT16U x,INT16U y);
void btn_sel(INT8U index,INT8U btn_index,INT8U bit_index);//不同圖片的按鈕的響應
void btn_focus(INT8U index,INT8U count);//按鈕的動態效果
void btn_release(INT8U index,INT8U btn_index,INT8U bit_index);//釋放按鈕的響應函數
void Num_Pad(INT8U index);//小鍵盤函數,所有鍵盤的操作都在上面完成
void clock_paste(INT8U num,INT8U num_pos,INT8U row);
void num_paste(INT8U num,INT8U num_pos,INT8U row);
void time_dis();//顯示時間
void D_update();//車門狀態更新
void K_paste(INT16U num,INT8U row); //三位數的粘帖
void print_num(INT16U num); //發送到打印機的數字
void AD_dis(); //AD狀態的顯示
void M600_Write_Data(INT8U m_data,char index);//M600的讀寫函數
INT8U M600_Read_Data (char index);
void ms250_Proc(void);
////////////////////////
////////////////////////////////////////////////////////////////////
////對屏幕分塊,分為7*6=42塊
INT8U btn[25]={0,1,2,3,4,5,8,9,10,11,16,17,22,23,28,29,34,35,36,37,38,39,40,41,7};
////將要發送的字符存于固化在ROM中
INT8U code text1[13]={0x20,0x20,0x20,0x20,0xD7,0xDC,0x20,0x20,0x20,0x20,0xBC,0xDB,0x3A};
//總價:后加total_cost
INT8U code text2[17]={0xD4,0xAA,0x0D,0x0A,0x20,0x20,0x20,0x20,0xD7,0xDC,0x20,0xC0,0xEF,0x20,0xB3,0xCC,0x3A};
//總里程:后加公里數
INT8U code text3[17]={0x6B,0x6D,0x0D,0x0A,0x20,0x20,0x20,0x20,0xB5,0xA5,0x20,0x20,0x20,0x20,0xBC,0xDB,0x3A};
//單價:后加單價single_cost
INT8U code text4[20]={0xD4,0xAA,0x2F,0x6B,0x6D,0x0D,0x0A,0x20,0x20,0x20,0x20,0xB5,0xC8,0xB4,0xFD,0xCA,0xB1,0xBC,0xE4,0x3A};
//等待時間:后加等待時間
INT8U code text5[18]={0x6D,0x69,0x6E,0x0D,0x0A,0x20,0x20,0x20,0x20,0xB5,0xC8,0xB4,0xFD,0xB5,0xA5,0xBC,0xDB,0x3A};
//等待單價:后加等待單價wait_cost
//INT8U code text6[22]={0xD4,0xAA,0x2F,0x35,0x6D,0x69,0x6E,0x0D,0x0A,0x20,0x20,0x20,0x20,0xC6,0xF0,0x20,0xB2,0xBD,0x20,0xBC,0xDB,0x3A};
INT8U code text6[21]={0xD4,0xAA,0x2F,0x6D,0x69,0x6E,0x0D,0x0A,0x20,0x20,0x20,0x20,0xC6,0xF0,0x20,0xB2,0xBD,0x20,0xBC,0xDB,0x3A};
//起步價:后加起步價
INT8U code text7[15]={0xD4,0xAA,0x0D,0x0A,0x20,0x20,0x20,0x20,0xCD,0xA3,0xD6,0xB9,0x3A,0x32,0x30};
//停止:后加停止時間
INT8U code text8[13]={0x0D,0x0A,0x20,0x20,0x20,0x20,0xBF,0xAA,0xCA,0xBC,0x3A,0x32,0x30};
//開始:后加開始時間
INT8U code text9[2]={0x0D,0x0A};
//截止
////////////////////////////////////////////////////////////////////////
////不常用的指令也固化,以節省空間
INT8U code zouzhi[4] = {27,74,54,13}; //打印機走紙
INT8U code jiaozhun[6] = {0xaa,0xe4,0x55,0xaa,0x5a,0xa5};//觸摸屏校準指令
INT8U code M600_DB_W[9] = {0xaa,0x90,0x55,0xaa,0x5a,0xa5,0x01,0xde,0x00}; //觸摸屏寫數據指令
INT8U code M600_DB_R[5] = {0xaa,0x91,0x01,0xde,0x00}; //觸摸屏讀數據指令
INT8U code M600_DB_LEN[2] = {0x00,0x01}; //讀取字符數
INT8U code LIGHT_OFF[2] = {0xaa,0x5e}; //關閉觸摸屏燈管
INT8U code LIGHT_ON[2] = {0xaa,0x5f}; //開啟觸摸屏燈管
////////////////////////////////////////////////////////////////////////
INT16U posx,posy; //單擊的屏幕坐標位置,計算多用直接尋址
INT8U pic_cut[15]={170,113,9};//用直接尋址
INT8U code cmd_end[4]={0xcc,0x33,0xc3,0x3c};
INT8U idata pic_index=9;//主界面圖片
///////外部時鐘時間的存貯////////////
extern INT8U idata year;
extern INT8U idata month;
extern INT8U idata day;
extern INT8U idata hour;
extern INT8U idata minute;
extern INT8U idata second;
////////////////////////////////////
//////記錄開始時間
INT8U idata start_hour;
INT8U idata start_minute;
//INT8U idata wait_minute = 0;//等待時間,由于要顯示,必須先賦初值
///////////////////////////////////
///////標記位,須為全局變量
bit flag_pad=0; //小鍵盤標識
bit flag_time_set = 0; //時間設置是否完成
bit flag_save=0; //是否保存的標識
bit flag_jiaozhun = 0; //屏幕校準標記
bit flag_power=0; //總電源標記
bit flag_hqsh=0; //換氣扇標記
bit flag_wait=0; //等待標記等待時間開始計數
bit flag_start=0; //開始標記
bit flag_password=0; //密碼標志
bit flag_cost_set = 0; //單價設置標記,11.11號修改
bit flag_m600_read = 0;//m600讀取標記,11.16增加
bit flag_light = 1; //觸摸屏燈管啟用標記,11.16增加
bit flag_mileage=0; //里程增加標記
//bit flag_250ms = 0; //250ms標記
//////////////////////////////
/////////////Num_Pad中使用的全局變量
INT16U idata px,py; //粘帖數字字符的坐標
char idata click_count; //小鍵盤的按鍵計數總數(有兩次和三次的差別)
char idata click_index; //要修改的索引
INT8U idata pre_TL0=0x10;//保存TL0的上一次數值
INT8U idata pre_TH0=0xfe;
////////////
////////////
INT16U idata wait_cost; //等待單價
INT16U idata single_cost; //單價
INT16U idata first_cost; //起步價
INT16U total_cost; //總價
char idata wait_cost_dot; //保存的小數位
char idata single_cost_dot;//
char idata first_cost_dot; //
////////////
/////////////////存貯于觸摸屏數據庫中
INT8U idata m_PIC_INDEX;
INT8U idata m_PIC_SAVE_INDEX;
INT8U idata m_PASSWORD_H;
INT8U idata m_PASSWORD_L;
INT8U idata M600_Data; //11.16增加
INT8U idata diaodian_flag;
INT8U idata m_hour;
INT8U idata m_minute;
INT8U idata m_day;
/////////////////
/////////////////////////////////////////////////////////////////
//指示觸摸屏點擊次數,必須賦初值
INT16U idata touch_count = 0; //指示點擊次數,在一分鐘內不超過65536下
INT16U idata old_touch_count = 0;//保存一分鐘前的點擊數
INT8U idata s_pic_index; //保存進入屏保界面的pic_index
/////////////////////////////////////////////////////////////////
//////////////////AD裝換數據
INT8U idata DATA_0;
INT8U idata DATA_1;
INT8U idata DATA_2;
INT8U idata DATA_3;
////////////////////////////
////////////////////////////
//INT8U mileage;//公里數
INT16U idata mileage;
INT8U idata mileage_add=0;//T0共溢出的次數
INT16U idata wait_minute;
////////////////////////////
/*自定義的按鍵狀態存儲(車門狀態的存貯顯示)*/
sbit D_l_front = PAD0;//前左門
sbit D_r_front = PAD1;//前右門
sbit D_l_back = PAD2;//后左門
sbit D_r_back = PAD3;//后右門
sbit D_r_middle = PAD4;//新增加中門的狀態
/////////////////////////////////////////////
#pragma LINK_INFO DERIVATIVE "mc9s12dj128b"
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -