📄 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 + -