📄 mainn.lst
字号:
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAINN
OBJECT MODULE PLACED IN mainn.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE mainn.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<stdio.h>
2 #include<REG51.H>
3 #include <intrins.h>
4 #include <string.h>
5
6 #include "SJA_BCANCONF.h" //add by ji
7 #include "time_module.h" //add by ji
8
9 #define TRUE 1
10 #define FALSE 0
11
12 #define ON 1
13 #define OFF 0
14 #define floor 1
15 #define SWTIMERVAL 5 //软件定时时间5ms
16 //unsigned char CurrentFloor;
17
18
19 #define BIT_REGBASEADD 00
20 #define UpRunArrow 4
21 #define DownRunArrow 5
22 #define RunStateBaseAdd BIT_REGBASEADD+01
23 #define FormerFloorUpBaseAdd BIT_REGBASEADD+52
24 #define FormerFloorDownBaseAdd BIT_REGBASEADD+56
25 #define FormerFloorLockBaseAdd BIT_REGBASEADD+68
26 #define FormerFloorFireBaseAdd BIT_REGBASEADD+72
27 #define BackFloorUpBaseAdd BIT_REGBASEADD+60
28 #define BackFloorDownBaseAdd BIT_REGBASEADD+64
29 #define BackFloorLockBaseAdd BIT_REGBASEADD+80
30 #define BackFloorFireBaseAdd BIT_REGBASEADD+84
31 #define UpFloorParBaseAdd BIT_REGBASEADD+76
32 #define BackFloorParBaseAdd BIT_REGBASEADD+88
33 #define WORD_REGBASEADD 0x00
34 #define CurrentFloorAdd WORD_REGBASEADD+5
35 #define FormerFloorUpCallAdd BIT_REGBASEADD+126
36 #define FormerFloorDownCallAdd BIT_REGBASEADD+134
37
38
39
40 #define TESTFUN 0x55
41 #define WORDFUN 0x01
42 #define BITFUN 0x00
43
44 #define BaseID 0
45 #define RTR 0
46 #define DLC 4
47
48
49
50 #define EnableREG_INTERRUPTWord 0x81
51
52 unsigned char code floortable[24][5]={
53 {0x41,0x3E,0x3E,0x3E,0x41},
54 {0x7F,0x3D,0x00,0x3F,0x7F},
55 {0x3D,0x1E,0x2E,0x36,0x39},
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 2
56 {0x5D,0x36,0x36,0x36,0x49},
57 {0x67,0x6B,0x6D,0x00,0x6F},
58 {0x58,0x3A,0x3A,0x3A,0x46},
59 {0x41,0x36,0x36,0x36,0x4D},
60 {0x7E,0x0E,0x76,0x7A,0x7C},
61 {0x49,0x36,0x36,0x36,0x49},
62 {0x59,0x36,0x36,0x36,0x41},
63 {0x03,0x6D,0x6E,0x6D,0x03},
64 {0x00,0x3E,0x36,0x36,0x49},
65 {0x63,0x5D,0x3E,0x3E,0x3E},
66 {0x00,0x3E,0x3E,0x5D,0x63},
67 {0x00,0x36,0x36,0x36,0x36},
68 {0x00,0x76,0x76,0x76,0x76},
69 {0x63,0x5D,0x3E,0x2E,0x0E},
70 {0x00,0x77,0x77,0x77,0x00},
71 {0x00,0x3F,0x3F,0x3F,0x3F},
72 {0x00,0x7D,0x7B,0x7D,0x00},
73 {0x00,0x76,0x76,0x76,0x79},
74 {0x00,0x76,0x66,0x56,0x39},
75 {0x77,0x77,0x77,0x77,0x77},
76 {0x77,0x77,0x00,0x77,0x77},
77 };//0--9,A--H,L,M,P,,R,-,+的代码表
78
79
80
81 unsigned char code UpDirectionTable[7][5]={
82 {0X7D,0X40,0X00,0X40,0X7D}, //状态1
83 {0X7E,0X20,0X00,0X20,0X7E}, //状态2
84 {0X3F,0X10,0X00,0X10,0X3F},
85 {0X3F,0X08,0X00,0X08,0X3F},
86 {0X6F,0X04,0X00,0X04,0X6F},
87 {0X77,0X02,0X00,0X02,0X77},
88 {0X7B,0X01,0X00,0X01,0X7B}, //箭头初态
89
90 };//上行按钮的代码表
91 unsigned char code Downdirectiontable[7][5]={
92 {0X5F,0X01,0X00,0X01,0X5F},
93 {0X3F,0X02,0X00,0X02,0X3F},
94 {0X7E,0X04,0X00,0X04,0X7E},
95 {0X7D,0X08,0X00,0X08,0X7D},
96 {0X7D,0X10,0X00,0X10,0X7D},
97 {0X77,0X20,0X00,0X20,0X77},
98 {0X6F,0X40,0X00,0X40,0X6F}, //箭头初态
99 };//下行按钮的代码表
100 unsigned char code Less10floorLefttable[10][5]={
101 {0X7F,0X7F,0X7F,0X41,0X2E}, //
102 {0X7F,0X7F,0X7F,0X7F,0X3D},
103 {0X7F,0X7F,0X7F,0X3D,0X1E},
104 {0X7F,0X7F,0X7F,0X5D,0X36},
105 {0X7F,0X7F,0X7F,0X67,0X6B},
106 {0X7F,0X7F,0X7F,0X50,0X36},
107 {0X7F,0X7F,0X7F,0X43,0X35},
108 {0X7F,0X7F,0X7F,0X7E,0X0E},
109 {0X7F,0X7F,0X7F,0X49,0X36},
110 {0X7F,0X7F,0X7F,0X59,0X36},
111 };//10楼以下的楼层显示左半部分
112 unsigned char code Less10floorRighttable[10][5]={
113 {0X36,0X4A,0X41,0X7F,0X7F},
114 {0X00,0X3F,0X7F,0X7F,0X7F},
115 {0X2E,0X36,0X39,0X7F,0X7F},
116 {0X36,0X36,0X49,0X7F,0X7F},
117 {0X6D,0X00,0X6F,0X7F,0X7F},
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 3
118 {0X36,0X36,0X4E,0X7F,0X7F},
119 {0X36,0X36,0X4F,0X7F,0X7F},
120 {0X76,0X7A,0X7C,0X7F,0X7F},
121 {0X36,0X36,0X49,0X7F,0X7F},
122 {0X36,0X36,0X41,0X7F,0X7F},
123 };//10楼以下的楼层显示右半部分
124
125
126 sbit P1_0=P1^0; //UP
127 sbit P1_1=P1^1; //DOWN
128 sbit P1_2=P1^2; //LOCK
129 sbit P1_3=P1^3; //FIRE
130
131 sbit P3_4=P3^4; //UP_LED
132 sbit P3_5=P3^5; //DOWN_LED
133
134
135 extern bit CRC_OK( unsigned char *CRC_Code, unsigned char *head, unsigned char *tail );
136 extern unsigned short CRC( unsigned char *head, unsigned char *tail );
137
138 char InputTemp; //输入信号的临时量,一位表示一个输入量,目前4个有效
139 char InputState;
140 unsigned char scanRow;
141
142
143 unsigned int CanBusFlag;
144
145 //输入信号的确定量,一位表示一个输入量,目前4个有效
146 char InputChanged; //输入信号的变化标志,一位表示一个输入量,目前4个有效
147 char STimerState; //软定时器的状态,一位表示一个软定时器,目前4个有效
148 unsigned char STimerValue[4]; //软定时器的当前值,目前4个有效
149
150 bit FireKey;
151 bit LockLad;
152 bit UpRun;
153 bit DownRun;
154
155 bit CANDataReceived;
156
157 unsigned char xdata *reg1=0x0600;
158 unsigned char xdata *reg2=0x0400;
159 unsigned char xdata *reg3=0x0200;
160 unsigned char xdata *reg4=0x0000;
161
162 unsigned char RecvBuf[6]; //CAN接收缓冲
163 unsigned char SendBuf[6];
164 unsigned char array[6]; //CAN发送缓冲
165 //unsigned char floor;
166
167 char DirectionBuf[5]; //方向显示数码管
168 char HighBuf[5];
169 char LowBuf[5];
170 unsigned REG_MODword;
171
172 InitHardTimer()
173 {
174 1 TMOD=0X10;
175 1
176 1 EA=1;
177 1 ET1=1;
178 1 TR1=1;
179 1 }
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 4
180
181 bit CanRcv_Prg()
182 {
183 1 char i;
184 1
185 1 BCAN_DATA_RECEIVE(RecvBuf);
186 1 BCAN_CMD_PRG(RRB_CMD);
187 1 switch((short)RecvBuf[3])
188 1 {
189 2 case ((RunStateBaseAdd<<4)|UpRunArrow):
190 2 {
191 3 for(i=0;i<5;i++)
192 3 DirectionBuf[i]=UpDirectionTable[7][i];
193 3
194 3 }
195 2 break;
196 2
197 2 case ((RunStateBaseAdd<<4)|DownRunArrow):
198 2
199 2 for(i=0;i<5;i++)
200 2 DirectionBuf[i]=Downdirectiontable[7][i];
201 2
202 2 break;
203 2 case ( CurrentFloorAdd ):
204 2
205 2
206 2 if(((short)RecvBuf[5])>10)
207 2 {
208 3 for(i=0;i<5;i++)
209 3 {
210 4 HighBuf[i]=floortable[((short)RecvBuf[5])/10][i];
211 4 LowBuf[i]=floortable[(short)RecvBuf[5]%10][i];
212 4 }
213 3
214 3 }
215 2 else
216 2 {
217 3 for(i=0;i<5;i++)
218 3 {
219 4 HighBuf[i]=Less10floorLefttable[(short)RecvBuf[5]][i];
220 4 LowBuf[i]=Less10floorRighttable[ ((short)RecvBuf[5])][i];
221 4 }
222 3
223 3 }
224 2
225 2
226 2 break;
227 2 case ((((FormerFloorUpBaseAdd)<<4)+floor)&0xFF):
228 2 if(((((FormerFloorUpCallAdd<<4)+floor)>>8)&0xFF)==RecvBuf[4])
229 2 P3_4=(P3_4)&0;
230 2 break;
231 2
232 2 case((((FormerFloorDownBaseAdd)<<4)+floor)&0xFF):
233 2 if(((((FormerFloorDownCallAdd<<4)+floor)>>8)&0xFF)==RecvBuf[4])
234 2 P3_5=(P3_5)&0;
235 2
236 2 break;
237 2
238 2 default: break;
239 2
240 2
241 2 }
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 5
242 1 return 0;
243 1 }
244
245
246 void FireKeyPreSend( void )
247 {
248 1 //还需要添加CAN数据的其他域填充
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -