📄 serial.lst
字号:
C51 COMPILER V7.07 SERIAL 06/30/2006 16:21:53 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE serial.c LARGE OPTIMIZE(SIZE) BROWSE
stmt level source
1 //version 1 serial0 115200bps serial1 at 2400bps at 11.0592MHz
2 //version 2 serial0 57600bps serial1 at 2400bps at 24MHz
3
4 #include "w77e58.h"
5 #include <absacc.h>
6
7 //#define RAMSP XBYTE[0x0000]
8 sbit RS485 = P1^0;
9 //unsigned char xdata ramIni _at_ 0x0000;
10 unsigned char xdata ramall[1024] _at_ 0x0000;
11
12 #define DEV_NUM 10
13 unsigned char devAdd[10]={0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa};
14
15 //serial0, 9600bps rs232
16 //serial1, 2400bps, rs485
17 void serial_init(void)
18 {
19 1 CKCON=0xc0; //wd=67108864clk
20 1 TA=0xAA;
21 1 TA=0x55;
22 1 WDCON=0x01; //reset watchdog
23 1
24 1 // PCON=0x80;
25 1 TMOD=0x21; //t1 for serial1 bps, t0 16bit timer
26 1 // TH1=0xF4; //11.0592MHz
27 1 // TL1=0xF4;
28 1 TH1 = 0xE6; //24MHz
29 1 TL1 = 0xE6;
30 1 SCON1=0x50; //2400bps serial port 1
31 1
32 1 T2CON=0x30; //t2 for serial0 bps
33 1 // RCAP2H=0xFF; //11.0592MHz 115200bps
34 1 // RCAP2L=0xFD;
35 1 // TH2=0xFF;
36 1 // TL2=0xFD;
37 1 RCAP2H = 0xFF; //24MHz 57600bps
38 1 RCAP2L = 0xF3;
39 1 TH2 = 0xFF;
40 1 TL2 = 0xF3;
41 1 SCON=0x50; //11.0592MHz 115200bps serial port 0
42 1
43 1 TR1=1;
44 1 TR2=1;
45 1 // ES=1;
46 1 // EA=1;
47 1 }
48
49
50 void serial0_str(unsigned char *str)
51 {
52 1 unsigned char i;
53 1
54 1 for(i=0; str[i]!=0; i++){
55 2 SBUF = str[i];
C51 COMPILER V7.07 SERIAL 06/30/2006 16:21:53 PAGE 2
56 2 while(TI==0);
57 2 TI=0;
58 2 }
59 1 }
60
61 void serial0_bytes(unsigned char *dat, unsigned char len)
62 {
63 1 unsigned char i;
64 1
65 1 for(i=0; i<len; i++){
66 2 SBUF = dat[i];
67 2 while(TI==0);
68 2 TI=0;
69 2 }
70 1 }
71
72 void serial1_str(unsigned char *str)
73 {
74 1 unsigned char i;
75 1
76 1 RS485 = 1;
77 1 for(i=0; str[i]!=0; i++){
78 2 SBUF1 = str[i];
79 2 while(TI1==0);
80 2 TI1=0;
81 2 }
82 1 RS485 = 0;
83 1 }
84
85 void serial1_bytes(unsigned char *dat, unsigned char len)
86 {
87 1 unsigned char i;
88 1
89 1 RS485 = 1;
90 1 for(i=0; i<len; i++){
91 2 SBUF1 = dat[i];
92 2 while(TI1==0);
93 2 TI1=0;
94 2 }
95 1 RS485 = 0;
96 1 }
97
98 /*
99 void memory_test(void)
100 {
101 unsigned int i;
102
103 for(i=0; i<4096; i++)
104 ramall[i] = 0x55;
105 for(i=0; i<4096; i++)
106 if(ramall[i] != 0x55){
107 serial0_str("memory 0x55 test falure");
108 return;
109 }
110
111 for(i=0; i<4096; i++)
112 ramall[i] = 0xaa;
113 for(i=0; i<4096; i++)
114 if(ramall[i] != 0xaa){
115 serial0_str("memory 0xaa test falure");
116 return;
117 }
C51 COMPILER V7.07 SERIAL 06/30/2006 16:21:53 PAGE 3
118
119 for(i=0; i<4096; i++)
120 ramall[i] = 0xff;
121 for(i=0; i<4096; i++)
122 if(ramall[i] != 0xff){
123 serial0_str("memory 0xff test falure");
124 return;
125 }
126
127 for(i=0; i<4096; i++)
128 ramall[i] = 0x00;
129 for(i=0; i<4096; i++)
130 if(ramall[i] != 0x00){
131 serial0_str("memory 0x00 test falure");
132 return;
133 }
134
135 serial0_str("memory test passed");
136 }
137 */
138
139 /*
140 void memory_sptest(void)
141 {
142 RAMSP = 0x55;
143 if(RAMSP != 0x55)
144 serial0_str("memory SP 0x55 test falure");
145
146 RAMSP = 0xaa;
147 if(RAMSP != 0xaa)
148 serial0_str("memory SP 0xaa test falure");
149
150 RAMSP = 0xff;
151 if(RAMSP != 0xff)
152 serial0_str("memory SP 0xff test falure");
153
154 RAMSP = 0x00;
155 if(RAMSP != 0x00)
156 serial0_str("memory SP 0x00 test falure");
157 serial0_str("memory sp test passed");
158 }
159 */
160
161 //send the data to both of serial0 and serial1
162 void RS485_232(unsigned char xdata *dat, unsigned int len)
163 {
164 1 unsigned int i;
165 1
166 1 RS485 = 1;
167 1 for(i=0; i <len; i++){
168 2 SBUF = dat[i];
169 2 SBUF1 = dat[i];
170 2 while((TI == 0)||(TI1 == 0));
171 2 TI = 0;
172 2 TI1 = 0;
173 2 }
174 1 RS485 = 0;
175 1 }
176
177 unsigned char RS485_getDat(unsigned char addr, unsigned char xdata *dat)
178 {
179 1 unsigned char c, i, len;
C51 COMPILER V7.07 SERIAL 06/30/2006 16:21:53 PAGE 4
180 1
181 1 //send the remote node address
182 1 RS485 = 1;
183 1 SBUF1 = addr;
184 1 while(TI1==0);
185 1 TI1 = 0;
186 1 RS485 = 0;
187 1
188 1 //get ack address
189 1 TR0=0;TF0=0;TH0=0x00;TL0=0x00;TR0=1;
190 1 while((RI1==0)&&(TF0==0));
191 1 if(TF0){TR0=0;TF0=0; return 0;}
192 1
193 1 c = SBUF1;
194 1 RI1 = 0;
195 1 if(c != addr) return 0;
196 1
197 1 TR0=0;TF0=0;TH0=0x00;TL0=0x00;TR0=1;
198 1 while((RI1==0)&&(TF0==0));
199 1 len = SBUF1;
200 1 RI1 = 0;
201 1
202 1 for(i=0; i<len; i++){
203 2 while((RI1==0)&&(TF0==0));
204 2 dat[i] = SBUF1;
205 2 RI1 = 0;
206 2 }
207 1
208 1 return len;
209 1 }
210
211 unsigned int RS485_getAll(unsigned char xdata *dat)
212 {
213 1 unsigned int nlen;
214 1 unsigned char i,alen;
215 1 unsigned char xdata *datP;
216 1
217 1 nlen = 0;
218 1 datP = dat;
219 1
220 1 for(i=0; i<DEV_NUM; i++){
221 2 serial0_str("get data from a node");
222 2 alen = RS485_getDat(devAdd[i], datP);
223 2 nlen = nlen+alen;
224 2 datP = datP + alen;
225 2 if(alen)
226 2 serial0_str("have data");
227 2 else
228 2 serial0_str("no data");
229 2 }
230 1
231 1 return nlen;
232 1 }
233
234 /*
235 void videotest(void)
236 {
237 unsigned char i;
238 // unsigned char c;
239
240 // while(RI == 0);
241 // RI=0;
C51 COMPILER V7.07 SERIAL 06/30/2006 16:21:53 PAGE 5
242
243 SBUF1 = 0xff;
244 while(TI1==0);
245 TI1=0;
246 SBUF1 = 0xaa;
247 while(TI1==0);
248 TI1=0;
249
250 for(i=0;i<255;i++);
251 for(i=0;i<255;i++);
252 for(i=0;i<255;i++);
253 for(i=0;i<255;i++);
254 for(i=0;i<255;i++);
255 for(i=0;i<255;i++);
256 for(i=0;i<255;i++);
257 for(i=0;i<255;i++);
258 for(i=0;i<255;i++);
259 for(i=0;i<255;i++);
260
261 for(i=1; i<11; i++){
262 SBUF1 = 0xff;
263 while(TI1==0);
264 TI1=0;
265 SBUF1 = 0xf0+i;
266 while(TI1==0);
267 TI1=0;
268 SBUF1 = 0x10;
269 while(TI1==0);
270 TI1=0;
271 SBUF1 = 0x1A;
272 while(TI1==0);
273 TI1=0;
274 SBUF1 = 0x29;
275 while(TI1==0);
276 TI1=0;
277 SBUF1 = 0x38;
278 while(TI1==0);
279 TI1=0;
280 SBUF1 = 0x47;
281 while(TI1==0);
282 TI1=0;
283 SBUF1 = 0x36;
284 while(TI1==0);
285 TI1=0;
286 SBUF1 = 0x15;
287 while(TI1==0);
288 TI1=0;
289 SBUF1 = 0x46;
290 while(TI1==0);
291 TI1=0;
292 SBUF1 = 0x29;
293 while(TI1==0);
294 TI1=0;
295 SBUF1 = 0x28;
296 while(TI1==0);
297 TI1=0;
298 SBUF1 = 0x27;
299 while(TI1==0);
300 TI1=0;
301 }
302 }
303 */
C51 COMPILER V7.07 SERIAL 06/30/2006 16:21:53 PAGE 6
304
305 void resetWD(void)
306 {
307 1 TA = 0xAA;
308 1 TA = 0x55;
309 1 WDCON = 0x01;
310 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 498 ----
CONSTANT SIZE = 39 ----
XDATA SIZE = 10 21
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -