?? common_data.c
字號(hào):
#include <AT89X52.H>
#include <absacc.h>
#include <intrins.h>
#include <stdio.h>
#define EXTERN extern
#define uchar unsigned char
#define uint unsigned int
#define TIMER_FUNC_NUM 60 //功能切換間隔計(jì)數(shù) 3s
#define TIMER_SUBFUNC_NUM 4 //子功能切換間隔計(jì)數(shù) 200ms
#define TIMER_FILTER_NUM 2 //開(kāi)入點(diǎn)濾波計(jì)數(shù) 100ms
#define TIMER_SUBTOPAR_NUM 60 //"子功能切換"轉(zhuǎn)為"功能切換"計(jì)數(shù) 3s
#define TIMER_ONELINE_NUM 3 //滾動(dòng)時(shí)一行的保留時(shí)間 150ms
#define TIMER_STOP_NUM 40 //到站動(dòng)作持續(xù)時(shí)間 2s
#define TIMER_200ms 4
#define TIMER_400ms 8
#define TIMER_1000ms 20
#define PA377 XBYTE[((P2&0x60)|0x9e)*256+P0] //LHM QUESTION:為什么沒(méi)有加P0,似乎沒(méi)有限定地址的低8位(王解釋:不確定低8位也可以,最好確定)
#define PB377 XBYTE[((P2&0x60)|0x9d)*256+P0]
#define PC377 XBYTE[((P2&0x60)|0x9b)*256+P0]
#define PD377 XBYTE[((P2&0x60)|0x97)*256+P0]
#define FLOOR_DISP_BYTENUM 7 // 顯示樓層緩沖區(qū)對(duì)應(yīng)字節(jié)數(shù)
#define DIRECT_DISP_BYTENUM 7 // 顯示樓層緩沖區(qū)對(duì)應(yīng)字節(jié)數(shù)
//----------------------------------5045用----------------------------------------//
struct data5
{uchar cF0;//設(shè)定F0,設(shè)定控制器號(hào)(0~7), 顯示(1-8)
uchar cF1;//設(shè)定F1, 設(shè)定層樓數(shù)(0~47), 顯示(1-48)
uchar cF2;//設(shè)定F2, 設(shè)定顯示方式(0~2), 顯示(1-3)
uchar cF3;//設(shè)定F3, 設(shè)定鎖梯(0~1), 顯示(0-1)
uchar cF4;//設(shè)定F4, 設(shè)定消防(0~1), 顯示(0-1)
};
#define DATA5 struct data5
DATA5 data5045;
//sbit SO=P3^4; //5045輸出
//sbit SI=P3^2; //5045輸入
//sbit SCK=P3^3; //5045時(shí)鐘
//sbit CS=P3^5; //5045片選
uchar code WREN_INST=0X06; // Write enable latch instruction (WREN)
uchar code WRDI_INST=0X04; // Write disable latch instruction (WRDI)
uchar code WRSR_INST=0X01; // Write status register instruction (WRSR)
uchar code RDSR_INST=0X05; // Read status register instruction (RDSR)
//寫(xiě)入25045的先導(dǎo)字,應(yīng)當(dāng)為0000A010,其中的A為寫(xiě)入25045的高位地址
//將此WRITE_INST和寫(xiě)入高位地址相或后即為正確的寫(xiě)先導(dǎo)字
uchar code WRITE_INST=0X02; // Write memory instruction (WRITE)
//讀出25045的先導(dǎo)字,應(yīng)當(dāng)為0000A011,其中的A為讀出25045的高位地址
//將此READ_INST和讀出高位地址相或后即為正確的讀先導(dǎo)字
uchar code READ_INST=0X03; // Read memory instruction (READ)
uint code BYTE_ADDR=0X55; // Memory address for byte mode operations
uchar code BYTE_DATA=0X11; // Data byte for byte write operation
uint code PAGE_ADDR=0X1F; // Memory address for page mode operations 頁(yè)面寫(xiě)入的其始地址
uchar code PAGE_DATA1=0X22; // 1st data byte for page write operation
uchar code PAGE_DATA2=0X33; // 2nd data byte for page write operation
uchar code PAGE_DATA3=0X44; // 3rd data byte for page write operation
//這是狀態(tài)寄存器的值,他的意義在于第5,第4位為WDI1,WDI0代表DOG的時(shí)間,00為1.4秒,01為600毫秒,10為200毫秒,00為disabled
//第3位和第2位為BL1,BL0,是寫(xiě)保護(hù)設(shè)置位,00為無(wú)保護(hù),01為保護(hù)180-1FF,10為保護(hù)100-1FF,11為保護(hù)000-1FF.第1位為WEL,
//當(dāng)他為1時(shí)代表已經(jīng)"寫(xiě)使能"設(shè)置了,現(xiàn)在可以寫(xiě)了,只讀位.第0位為WIP,當(dāng)他為1時(shí)代表正在進(jìn)行寫(xiě)操作,是只讀
uchar code STATUS_REG=0x20; // Status register,設(shè)置DOG時(shí)間設(shè)置為200毫秒,無(wú)寫(xiě)保護(hù)
uchar code MAX_POLL=0x99; // Maximum number of polls(最大寫(xiě)過(guò)程時(shí)間,確定25045的最大的寫(xiě)入過(guò)程的時(shí)間)
uchar code INIT_STATE=0x09; // Initialization value for control ports
uint code SLIC=0x30; // Address location of SLIC
uchar m_set5045flg; // 當(dāng)設(shè)置位為1時(shí),表示前面設(shè)置過(guò),此時(shí)要重新的寫(xiě)入5045中。 如果沒(méi)有,則不需要進(jìn)行這個(gè)步驟。
//----------------------------------can用----------------------------------//
uchar code cCtrlNum[8]={0x15,0x1a,0x13,0x1c,0x16,0x19,0x1b,0x1d}; //控制器號(hào)的轉(zhuǎn)換
uchar whacr0,whacr1; //sja1000代碼(接收標(biāo)示符)
uchar whid1,whid2; //sja1000代碼(發(fā)送標(biāo)示符)
struct rec_data{
uchar cCurFloor; //當(dāng)前樓層數(shù)
uchar cDirect; //當(dāng)前方向(0:下 1:上 0xFF:無(wú))
uchar cMaxFloor; //最大樓層數(shù)
};
#define REC_DATA struct rec_data
REC_DATA m_RecData; //can接收數(shù)據(jù)
bdata uchar abit;
sbit abit_0=abit^0;
sbit abit_1=abit^1;
sbit abit_2=abit^2;
sbit abit_3=abit^3;
sbit abit_4=abit^4;
sbit abit_5=abit^5;
sbit abit_6=abit^6;
sbit abit_7=abit^7;
uchar time1_count; //上呼計(jì)數(shù)
uchar time2_count; //下呼計(jì)數(shù)
uchar time3_count; //消防服務(wù)計(jì)數(shù)
uchar time4_count; //消防計(jì)數(shù)
uchar time5_count; //鎖梯計(jì)數(shù)
uchar time6_count; //鎖梯消防有效時(shí)定時(shí)發(fā)送標(biāo)記
uchar time7_count;
bit time1_flg; //上呼計(jì)數(shù)到標(biāo)記
bit time2_flg; //下呼計(jì)數(shù)到標(biāo)記
bit time3_flg; //消防服務(wù)計(jì)數(shù)到標(biāo)記
bit time4_flg; //消防計(jì)數(shù)到標(biāo)記
bit time5_flg; //鎖梯計(jì)數(shù)到標(biāo)記
bit time6_flg; //鎖梯消防有效時(shí)定時(shí)發(fā)送標(biāo)記
bit time7_flg; //
uchar time_nocan_count;
bit time_nocan_flg; //
bit m_existupcallflg;//上呼存在標(biāo)記
bit m_existdowncallflg;//下呼存在標(biāo)記
//----------------------------------顯示用----------------------------------//
/*struct disp_data{
uchar cHigh; //當(dāng)前樓層數(shù)高字符
uchar cLow; //當(dāng)前樓層數(shù)低字符
};
#define DISP_DATA struct disp_data*/
//DISP_DATA m_dSrcFloor[FLOOR_DISP_BYTENUM]; //源樓層buffer
uchar m_cSrcFloorHigh[FLOOR_DISP_BYTENUM]; //源樓層buffer高字符
uchar m_cSrcFloorLow[FLOOR_DISP_BYTENUM]; //源樓層buffer低字符
//uchar m_cSrcDirect[DIRECT_DISP_BYTENUM]; //源方向buffer
//DISP_DATA m_dDispFloor[FLOOR_DISP_BYTENUM]; //顯示樓層buffer
uchar m_cDispFloorHigh[FLOOR_DISP_BYTENUM]; //顯示樓層buffer高字符
uchar m_cDispFloorLow[FLOOR_DISP_BYTENUM]; //顯示樓層buffer低字符
uchar m_cDispDirect[DIRECT_DISP_BYTENUM]; //顯示方向buffer
uchar code PR[13][7]={{0x11,0x0E,0x0E,0x0E,0x0E,0x0E,0x11}, // '0'
{0x1B,0x19,0x1B,0x1B,0x1B,0x1B,0x1B}, // '1'
{0x11,0x0E,0x0F,0x17,0x1B,0x1D,0x00}, // '2'
{0x11,0x0E,0x0F,0x13,0x0F,0x0E,0x11}, // '3'
{0x17,0x13,0x15,0x00,0x17,0x17,0x17}, // '4'
{0x00,0x1E,0x10,0x0F,0x0F,0x0E,0x11}, // '5'
{0x11,0x1E,0x1E,0x10,0x0E,0x0E,0x11}, // '6'
{0x00,0x0F,0x17,0x1B,0x1D,0x1D,0x1D}, // '7'
{0x11,0x0E,0x0E,0x11,0x0E,0x0E,0x11}, // '8'
{0x11,0x0E,0x0E,0x01,0x0F,0x0E,0x11}, // '9'
// {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'A' //暫時(shí)未用
{0x10,0x0E,0x0E,0x10,0x0E,0x0E,0x10}, // 'B'
// {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'C' //暫時(shí)未用
// {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'D' //暫時(shí)未用
// {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'E' //暫時(shí)未用
{0x00,0x1E,0x10,0x1E,0x1E,0x1E,0x1E}, // 'F'
{0x1F,0x1F,0x1F,0x00,0x1F,0x1F,0x1F}, // '-'
};
uchar code PRDUp[7] = {0x1B,0x11,0x0A,0x1B,0x1B,0x1B,0x1B};
uchar code PRDDown[7] = {0x1B,0x1B,0x1B,0x1B,0x0A,0x11,0x1B};
uchar code PR_FIRE[7][2]={{0x83,0x07},{0xEF,0x07},{0x83,0x05},{0x01,0x04},{0x01,0x04},{0x83,0x05},{0x83,0x07}};
uchar code PR_REPAIRE[7][2]={{0xFF,0x04},{0x7F,0x00},{0x00,0x07},{0x00,0x07},{0x00,0x07},{0x7F,0x00},{0xFF,0x04}};
uchar code PR_LOCK[7][2]={{0x8F,0x07},{0x77,0x07},{0x77,0x07},{0x03,0x06},{0x03,0x06},{0x03,0x06},{0x03,0x06}};
//uchar m_cMakeNewFlg; //新文字做標(biāo)記
uchar m_c7_11singledoubleFlg; //0:單字 1:雙字
//----------------------------------設(shè)置功能用----------------------------------//
uchar m_cFuncCnt; //F0-F4標(biāo)記計(jì)數(shù)(0-4)
uchar m_cFuncTimer; //功能切換計(jì)數(shù)器(每2秒切換一次)
uchar m_cSettingFuncFlg; //功能設(shè)置標(biāo)記(標(biāo)志當(dāng)前處于F0-F4切換階段)
uchar m_cNewFuncFlg;
// 顯示為(F0:1-8 F1:1-48 F2:1-3 F3:0-1 F4:0-1)
uchar m_cSubFuncCnt; //各功能計(jì)數(shù)(F0:0-7 F1:0-47 F2:0-2 F3:0-1 F4:0-1)
uchar m_cSubFuncTimer; //功能切換計(jì)數(shù)器(每500毫秒切換一次)
uchar m_cSettingSubFuncFlg; //子功能設(shè)置標(biāo)記(標(biāo)志當(dāng)前處于各功能的子功能設(shè)置階段)
uchar m_cNewSubFuncFlg;
uchar m_cMaxSubNum;
uchar m_cSubToParTimer;
uchar m_cSubToParLess2sFlg;
//滾動(dòng)專(zhuān)用
uchar m_cWholeMoveOKFlg; //整組移動(dòng)完成標(biāo)記(出現(xiàn)新樓層時(shí),進(jìn)行一組滾動(dòng),滾動(dòng)完成后等待下一新樓層)
uchar m_cMoveCnt; //滾動(dòng)計(jì)數(shù)(0-6)
uchar m_cMoveTimer; //滾動(dòng)計(jì)數(shù)器(每150ms滾動(dòng)一次)
uchar m_cNewLineFlg; //新滾動(dòng)行標(biāo)記
//四狀態(tài)
uchar m_cFireFlg;
uchar m_cFireBaseFlg;
uchar m_cRepairFlg;
uchar m_cLockFlg;
uchar m_cLockDarkFlg;
uchar m_cStopFlg; //到站信號(hào)
uchar m_cFireServiceFlg;
//到站動(dòng)作持續(xù)計(jì)時(shí)(2s)
uchar time_stop_count; //到站動(dòng)作計(jì)數(shù)
uchar time_stop_flg; //到站動(dòng)作標(biāo)志
uchar time_stop2s_flg; //到站動(dòng)作計(jì)時(shí)到標(biāo)志
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -