?? common_data.lst
字號:
11 =1 #define PBYTE ((unsigned char volatile pdata *) 0)
12 =1 #define XBYTE ((unsigned char volatile xdata *) 0)
13 =1
14 =1 #define CWORD ((unsigned int volatile code *) 0)
15 =1 #define DWORD ((unsigned int volatile data *) 0)
16 =1 #define PWORD ((unsigned int volatile pdata *) 0)
17 =1 #define XWORD ((unsigned int volatile xdata *) 0)
C51 COMPILER V6.12 COMMON_DATA 06/06/2005 08:36:06 PAGE 5
3 #include <intrins.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 INTRINS.H
3 =1
4 =1 Intrinsic functions for C51.
5 =1 Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 extern void _nop_ (void);
10 =1 extern bit _testbit_ (bit);
11 =1 extern unsigned char _cror_ (unsigned char, unsigned char);
12 =1 extern unsigned int _iror_ (unsigned int, unsigned char);
13 =1 extern unsigned long _lror_ (unsigned long, unsigned char);
14 =1 extern unsigned char _crol_ (unsigned char, unsigned char);
15 =1 extern unsigned int _irol_ (unsigned int, unsigned char);
16 =1 extern unsigned long _lrol_ (unsigned long, unsigned char);
17 =1 extern unsigned char _chkfloat_(float);
4 #include <stdio.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 STDIO.H
3 =1
4 =1 Prototypes for standard I/O functions.
5 =1 Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef EOF
10 =1 #define EOF -1
11 =1 #endif
12 =1
13 =1 #ifndef NULL
14 =1 #define NULL ((void *) 0)
15 =1 #endif
16 =1
17 =1 #ifndef _SIZE_T
18 =1 #define _SIZE_T
19 =1 typedef unsigned int size_t;
20 =1 #endif
21 =1
22 =1 #pragma SAVE
23 =1 #pragma REGPARMS
24 =1 extern char _getkey (void);
25 =1 extern char getchar (void);
26 =1 extern char ungetchar (char);
27 =1 extern char putchar (char);
28 =1 extern int printf (const char *, ...);
29 =1 extern int sprintf (char *, const char *, ...);
30 =1 extern int vprintf (const char *, char *);
31 =1 extern int vsprintf (char *, const char *, char *);
32 =1 extern char *gets (char *, int n);
33 =1 extern int scanf (const char *, ...);
34 =1 extern int sscanf (char *, const char *, ...);
35 =1 extern int puts (const char *);
36 =1
37 =1 #pragma RESTORE
5
6 #define EXTERN extern
7 #define uchar unsigned char
8 #define uint unsigned int
9
10 #define TIMER_FUNC_NUM 60 //功能切換間隔計數 3s
C51 COMPILER V6.12 COMMON_DATA 06/06/2005 08:36:06 PAGE 6
11 #define TIMER_SUBFUNC_NUM 4 //子功能切換間隔計數 200ms
12 #define TIMER_FILTER_NUM 2 //開入點濾波計數 100ms
13 #define TIMER_SUBTOPAR_NUM 60 //"子功能切換"轉為"功能切換"計數 3s
14 #define TIMER_ONELINE_NUM 3 //滾動時一行的保留時間 150ms
15 #define TIMER_STOP_NUM 40 //到站動作持續時間 2s
16 #define TIMER_200ms 4
17 #define TIMER_400ms 8
18 #define TIMER_1000ms 20
19
20 #define PA377 XBYTE[((P2&0x60)|0x9e)*256+P0] //LHM QUESTION:為什么沒有加P0,似乎沒有限定地址的低8
-位(王解釋:不確定低8位也可以,最好確定)
21 #define PB377 XBYTE[((P2&0x60)|0x9d)*256+P0]
22 #define PC377 XBYTE[((P2&0x60)|0x9b)*256+P0]
23 #define PD377 XBYTE[((P2&0x60)|0x97)*256+P0]
24
25 #define FLOOR_DISP_BYTENUM 7 // 顯示樓層緩沖區對應字節數
26 #define DIRECT_DISP_BYTENUM 7 // 顯示樓層緩沖區對應字節數
27
28 //----------------------------------5045用----------------------------------------//
29 struct data5
30 {uchar cF0;//設定F0,設定控制器號(0~7), 顯示(1-8)
31 uchar cF1;//設定F1, 設定層樓數(0~47), 顯示(1-48)
32 uchar cF2;//設定F2, 設定顯示方式(0~2), 顯示(1-3)
33 uchar cF3;//設定F3, 設定鎖梯(0~1), 顯示(0-1)
34 uchar cF4;//設定F4, 設定消防(0~1), 顯示(0-1)
35 };
36 #define DATA5 struct data5
37
38 DATA5 data5045;
39 //sbit SO=P3^4; //5045輸出
40 //sbit SI=P3^2; //5045輸入
41 //sbit SCK=P3^3; //5045時鐘
42 //sbit CS=P3^5; //5045片選
43 uchar code WREN_INST=0X06; // Write enable latch instruction (WREN)
44 uchar code WRDI_INST=0X04; // Write disable latch instruction (WRDI)
45 uchar code WRSR_INST=0X01; // Write status register instruction (WRSR)
46 uchar code RDSR_INST=0X05; // Read status register instruction (RDSR)
47
48 //寫入25045的先導字,應當為0000A010,其中的A為寫入25045的高位地址
49 //將此WRITE_INST和寫入高位地址相或后即為正確的寫先導字
50 uchar code WRITE_INST=0X02; // Write memory instruction (WRITE)
51
52 //讀出25045的先導字,應當為0000A011,其中的A為讀出25045的高位地址
53 //將此READ_INST和讀出高位地址相或后即為正確的讀先導字
54 uchar code READ_INST=0X03; // Read memory instruction (READ)
55
56 uint code BYTE_ADDR=0X55; // Memory address for byte mode operations
57 uchar code BYTE_DATA=0X11; // Data byte for byte write operation
58 uint code PAGE_ADDR=0X1F; // Memory address for page mode operations 頁面寫入的其始地址
59 uchar code PAGE_DATA1=0X22; // 1st data byte for page write operation
60 uchar code PAGE_DATA2=0X33; // 2nd data byte for page write operation
61 uchar code PAGE_DATA3=0X44; // 3rd data byte for page write operation
62
63 //這是狀態寄存器的值,他的意義在于第5,第4位為WDI1,WDI0代表DOG的時間,00為1.4秒,01為600毫秒,10為200毫秒,00為d
-isabled
64 //第3位和第2位為BL1,BL0,是寫保護設置位,00為無保護,01為保護180-1FF,10為保護100-1FF,11為保護000-1FF.第1位為W
-EL,
65 //當他為1時代表已經"寫使能"設置了,現在可以寫了,只讀位.第0位為WIP,當他為1時代表正在進行寫操作,是只讀
66 uchar code STATUS_REG=0x20; // Status register,設置DOG時間設置為200毫秒,無寫保護
67
68 uchar code MAX_POLL=0x99; // Maximum number of polls(最大寫過程時間,確定25045的最大的寫入過程的時間)
69 uchar code INIT_STATE=0x09; // Initialization value for control ports
C51 COMPILER V6.12 COMMON_DATA 06/06/2005 08:36:06 PAGE 7
70 uint code SLIC=0x30; // Address location of SLIC
71 uchar m_set5045flg; // 當設置位為1時,表示前面設置過,此時要重新的寫入5045中。 如果沒有,則不需要進行
-這個步驟。
72
73 //----------------------------------can用----------------------------------//
74 uchar code cCtrlNum[8]={0x15,0x1a,0x13,0x1c,0x16,0x19,0x1b,0x1d}; //控制器號的轉換
75 uchar whacr0,whacr1; //sja1000代碼(接收標示符)
76 uchar whid1,whid2; //sja1000代碼(發送標示符)
77 struct rec_data{
78 uchar cCurFloor; //當前樓層數
79 uchar cDirect; //當前方向(0:下 1:上 0xFF:無)
80 uchar cMaxFloor; //最大樓層數
81 };
82 #define REC_DATA struct rec_data
83 REC_DATA m_RecData; //can接收數據
84 bdata uchar abit;
85 sbit abit_0=abit^0;
86 sbit abit_1=abit^1;
87 sbit abit_2=abit^2;
88 sbit abit_3=abit^3;
89 sbit abit_4=abit^4;
90 sbit abit_5=abit^5;
91 sbit abit_6=abit^6;
92 sbit abit_7=abit^7;
93 uchar time1_count; //上呼計數
94 uchar time2_count; //下呼計數
95 uchar time3_count; //消防服務計數
96 uchar time4_count; //消防計數
97 uchar time5_count; //鎖梯計數
98 uchar time6_count; //鎖梯消防有效時定時發送標記
99 uchar time7_count;
100 bit time1_flg; //上呼計數到標記
101 bit time2_flg; //下呼計數到標記
102 bit time3_flg; //消防服務計數到標記
103 bit time4_flg; //消防計數到標記
104 bit time5_flg; //鎖梯計數到標記
105 bit time6_flg; //鎖梯消防有效時定時發送標記
106 bit time7_flg; //
107 uchar time_nocan_count;
108 bit time_nocan_flg; //
109 bit m_existupcallflg;//上呼存在標記
110 bit m_existdowncallflg;//下呼存在標記
111
112 //----------------------------------顯示用----------------------------------//
113 /*struct disp_data{
114 uchar cHigh; //當前樓層數高字符
115 uchar cLow; //當前樓層數低字符
116
117 };
118 #define DISP_DATA struct disp_data*/
119 //DISP_DATA m_dSrcFloor[FLOOR_DISP_BYTENUM]; //源樓層buffer
120 uchar m_cSrcFloorHigh[FLOOR_DISP_BYTENUM]; //源樓層buffer高字符
121 uchar m_cSrcFloorLow[FLOOR_DISP_BYTENUM]; //源樓層buffer低字符
122 //uchar m_cSrcDirect[DIRECT_DISP_BYTENUM]; //源方向buffer
123 //DISP_DATA m_dDispFloor[FLOOR_DISP_BYTENUM]; //顯示樓層buffer
124 uchar m_cDispFloorHigh[FLOOR_DISP_BYTENUM]; //顯示樓層buffer高字符
125 uchar m_cDispFloorLow[FLOOR_DISP_BYTENUM]; //顯示樓層buffer低字符
126 uchar m_cDispDirect[DIRECT_DISP_BYTENUM]; //顯示方向buffer
127 uchar code PR[13][7]={{0x11,0x0E,0x0E,0x0E,0x0E,0x0E,0x11}, // '0'
128 {0x1B,0x19,0x1B,0x1B,0x1B,0x1B,0x1B}, // '1'
129 {0x11,0x0E,0x0F,0x17,0x1B,0x1D,0x00}, // '2'
130 {0x11,0x0E,0x0F,0x13,0x0F,0x0E,0x11}, // '3'
C51 COMPILER V6.12 COMMON_DATA 06/06/2005 08:36:06 PAGE 8
131 {0x17,0x13,0x15,0x00,0x17,0x17,0x17}, // '4'
132 {0x00,0x1E,0x10,0x0F,0x0F,0x0E,0x11}, // '5'
133 {0x11,0x1E,0x1E,0x10,0x0E,0x0E,0x11}, // '6'
134 {0x00,0x0F,0x17,0x1B,0x1D,0x1D,0x1D}, // '7'
135 {0x11,0x0E,0x0E,0x11,0x0E,0x0E,0x11}, // '8'
136 {0x11,0x0E,0x0E,0x01,0x0F,0x0E,0x11}, // '9'
137 // {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'A' //暫時未用
138 {0x10,0x0E,0x0E,0x10,0x0E,0x0E,0x10}, // 'B'
139 // {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'C' //暫時未用
140 // {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'D' //暫時未用
141 // {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'E' //暫時未用
142 {0x00,0x1E,0x10,0x1E,0x1E,0x1E,0x1E}, // 'F'
143 {0x1F,0x1F,0x1F,0x00,0x1F,0x1F,0x1F}, // '-'
144 };
145 uchar code PRDUp[7] = {0x1B,0x11,0x0A,0x1B,0x1B,0x1B,0x1B};
146 uchar code PRDDown[7] = {0x1B,0x1B,0x1B,0x1B,0x0A,0x11,0x1B};
147 uchar code PR_FIRE[7][2]={{0x83,0x07},{0xEF,0x07},{0x83,0x05},{0x01,0x04},{0x01,0x04},{0x83,0x05},{0x83,0x
-07}};
148 uchar code PR_REPAIRE[7][2]={{0xFF,0x04},{0x7F,0x00},{0x00,0x07},{0x00,0x07},{0x00,0x07},{0x7F,0x00},{0xFF
-,0x04}};
149 uchar code PR_LOCK[7][2]={{0x8F,0x07},{0x77,0x07},{0x77,0x07},{0x03,0x06},{0x03,0x06},{0x03,0x06},{0x03,0x
-06}};
150 //uchar m_cMakeNewFlg; //新文字做標記
151 uchar m_c7_11singledoubleFlg; //0:單字 1:雙字
152 //----------------------------------設置功能用----------------------------------//
153 uchar m_cFuncCnt; //F0-F4標記計數(0-4)
154 uchar m_cFuncTimer; //功能切換計數器(每2秒切換一次)
155 uchar m_cSettingFuncFlg; //功能設置標記(標志當前處于F0-F4切換階段)
156 uchar m_cNewFuncFlg;
157 // 顯示為(F0:1-8 F1:1-48 F2:1-3 F3:0-1 F4:0-1)
158 uchar m_cSubFuncCnt; //各功能計數(F0:0-7 F1:0-47 F2:0-2 F3:0-1 F4:0-1)
159 uchar m_cSubFuncTimer; //功能切換計數器(每500毫秒切換一次)
160 uchar m_cSettingSubFuncFlg; //子功能設置標記(標志當前處于各功能的子功能設置階段)
161 uchar m_cNewSubFuncFlg;
162 uchar m_cMaxSubNum;
163
164 uchar m_cSubToParTimer;
165 uchar m_cSubToParLess2sFlg;
166 //滾動專用
167 uchar m_cWholeMoveOKFlg; //整組移動完成標記(出現新樓層時,進行一組滾動,滾動完成后等待下一新樓層)
168 uchar m_cMoveCnt; //滾動計數(0-6)
169 uchar m_cMoveTimer; //滾動計數器(每150ms滾動一次)
170 uchar m_cNewLineFlg; //新滾動行標記
171 //四狀態
172 uchar m_cFireFlg;
173 uchar m_cFireBaseFlg;
174 uchar m_cRepairFlg;
175 uchar m_cLockFlg;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -