?? usb118_c51.lst
字號:
203 1 TXD_Int(SetFilePointer); //移動文件指針
204 1
205 1 if(Receive_Data(0x25,0)==0) //命令是否成功執行,是則繼續執行
206 1 { //否則重新執行
207 2 delay_xms(1000);
208 2 goto sfp;
209 2 }
210 1 delay_xms(500);
211 1
212 1 wrt2: //二次寫文件
213 1 TXD_Int(Write);
214 1 for(i=0;i<5;i++)
215 1 TXD_Int(Date2);
216 1
217 1 if(Receive_Data(0x0c,0)==0) //命令是否成功執行,是則繼續執行
218 1 { //否則重新執行
219 2 delay_xms(1000);
220 2 goto wrt2;
221 2 }
222 1
223 1
224 1 while(1); //循環等待
225 1 }
226 /********************************************************************
227 CoM口波特率初始化函數
228 原型:init_com();
229 功能:初始化com口
230 入口參數:無
231 出口參數:無
232 ********************************************************************/
233 void init_com( )
234 {
235 1
236 1 // SCON = 0x50; //串口方式1,允許接收
237 1 // TMOD = 0x20; //定時器1 定時方式2
238 1 // TCON = 0x40; //設定時器1 開始計數
239 1 // PCON = 0x80;
240 1 // TH1 = 0xf3; //24MHz 9600 波特率
241 1 // TL1 = 0xf3;
C51 COMPILER V7.50 USB118_C51 08/08/2007 09:14:41 PAGE 5
242 1
243 1
244 1 SCON = 0x53;
245 1 PCON = 0x80 | PCON;
246 1 T2CON = 0x30;
247 1
248 1 // RCAP2H = 0xFF; // 9600 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))
249 1 // RCAP2L = 0xB2;
250 1
251 1 // RCAP2H = 0xFF; // 19200 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))
252 1 // RCAP2L = 0xD9;
253 1
254 1 RCAP2H = 0xFF; // 57600 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))
255 1 RCAP2L = 0xF3;
256 1 TI = 1;
257 1 TR2 = 1;
258 1
259 1 }
260 /********************************************************************
261 測試系統
262 功能:使發光二極管閃爍
263 入口參數:無
264 出口參數: 無
265 ********************************************************************/
266 void test( )
267 {
268 1 int a=0;
269 1 P3 = 0xff; //P3口初始化,使發光二極管熄滅
270 1 while(a<10)
271 1 {
272 2 P3_3 = ~P3_3; //P3.3取反
273 2 P3_5 = ~P3_5;
274 2 delay_xms(500); //延時0.5秒
275 2 a++;
276 2 }
277 1 P3 = 0xff;
278 1 }
279
280 /********************************************************************
281 延時函數
282 功能:共延時1ms乘以delay_time
283 入口參數:延時delay_time ms
284 出口參數:無
285 ********************************************************************/
286 void delay_xms(unsigned int delay_time)
287 {
288 1 unsigned int i,j;
289 1
290 1 for(i = 0; i < delay_time; i++)
291 1 {
292 2 for(j = 0; j < 250; j++);
293 2 }
294 1 }
295 /********************************************************************
296 發送一幀數據函數
297 功能:發送一幀數據
298 入口參數:命令幀首地址,數據個數
299 出口參數:無
300 ********************************************************************/
301 void TXD_Int(uchar *s)
302 {
303 1 char i;
C51 COMPILER V7.50 USB118_C51 08/08/2007 09:14:41 PAGE 6
304 1 TI = 0;
305 1 for(i=0; i<66; i++) //發送64個參數
306 1 // {
307 1 // if(i==7)
308 1 // Send_Data(num);
309 1 // else
310 1 Send_Data(*(s+i));
311 1 // }
312 1 RI = 0;
313 1 TI = 0; //一幀發送完畢
314 1
315 1 }
316 /********************************************************************
317 串口發送一個字節
318 功能:發送一個字節數據
319 入口參數:發送數據
320 出口參數:無
321 ********************************************************************/
322 void Send_Data(uchar Serial_data)
323 {
324 1 SBUF = Serial_data; //發送一個字節
325 1 while(!TI); //等待發送
326 1 TI = 0;
327 1 }
328 /********************************************************************
329 接收應答信號和數據函數
330 功能:接收一個字節通訊
331 入口參數:無
332 出口參數:返回接收值
333 ********************************************************************/
334 bit Receive_Data(uchar rxd,uint num)
335 {
336 1 int i;
337 1 REN = 1; //接收位打開
338 1 P3_3 = 1;
339 1 P3_5 = 1;
340 1 if(Receive_One()== rxd) //接收的是否是應答碼
341 1 {
342 2 if(Receive_One() == 0x01) //是應答碼,是否是成功執行
343 2 {
344 3
345 3 for(i=0;i<62;i++) //成功執行,接收62個保留位
346 3 {
347 4 Receive_One();
348 4 }
349 3 P3_3 = 0; //指示燈亮
350 3 P3_5 = 0;
351 3 if(num!=0) //是否有數據,有則跳接收部分
352 3 goto rev;
353 3 else return(1); //無,返回1
354 3 }
355 2 else //未成功執行
356 2 {
357 3 for(i=0;i<62;i++) //接收62個保留位
358 3 {
359 4 Receive_One();
360 4 }
361 3 P3_3 = 1;
362 3 P3_5 = 0;
363 3 return(0); //返回0
364 3 }
365 2 }
C51 COMPILER V7.50 USB118_C51 08/08/2007 09:14:41 PAGE 7
366 1 else //收到的不是應答碼
367 1 {
368 2 for(i=0;i<63;i++) //接收剩下的63個字節
369 2 {
370 3 Receive_One();
371 3 }
372 2 P3_3 = 1;
373 2 P3_5 = 0;
374 2 return(0); //返回0
375 2 }
376 1
377 1 rev:
378 1 if(num>0) //應答信號后有數據
379 1 {
380 2 for(i=0;i<num;i++) //接收數據
381 2 Receive_One();
382 2 }
383 1 REN = 0; //關閉接收位
384 1 return(1); //返回1
385 1 }
386 /********************************************************************
387 接收一個字節通訊函數
388 功能:接收一個字節通訊
389 入口參數:無
390 出口參數:返回接收值
391 ********************************************************************/
392 uchar Receive_One(void)
393 {
394 1 while(!RI); //等待接收
395 1 RI = 0;
396 1 return(SBUF); //將接收數據返回
397 1 }
398
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 575 ----
CONSTANT SIZE = 792 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 13
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 + -