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