📄 lpc935.lst
字号:
245 1 {
246 2 RI=0; //RI清0以等待下次发
247 2 COM_Rec_Buf=SBUF; //保存所读取的数据
248 2 Flag_COM_Rec=true;
249 2 }
250 1 EA=1;
251 1 }
252
253 //------------------------- //功能发送中断 //-------------------------
254 void Send_ISR() interrupt 13
255 {
256 1 EA=0;
257 1 EA=1;
258 1 } //--------------------------
259
260
261 //**************************************************
262 //10ms 中断函数
263 void timer0_int(void) interrupt 1
264 {
265 1 EA=0;
266 1 TH0=TH0_DATA;
267 1 TL0=TL0_DATA;
268 1 Cnt_10ms++;
269 1 if (Cnt_10ms>=100)
270 1 {
271 2 Cnt_10ms=0;
272 2 //Flag_Second=true;
273 2 Second_Cnt++;
274 2 Snd_Time_Cnt++;
275 2 Do_ADC();
276 2 }
277 1 if(Snd_Time_Cnt>=20) Send_AD_Result();
278 1 EA=1;
279 1 }
280
281 void timer0_init(void)
282 {
283 1 // configure timer 0
284 1 TMOD = 0x01;
285 1
286 1 // timer values
287 1 TH0 = TH0_DATA;
288 1 TL0 = TL0_DATA;
289 1
290 1 // enable timer 0 interrupt
291 1 ET0 = 1;
292 1 // start timer 0
293 1 TR0 = 1;
294 1 } // timers_init
295
296 void ADC_init(void)
297 {
298 1 /*
299 1 P1M1 |= 0x5C; //01011100
300 1 P1M2 &= ~0x80;
301 1 P2M1 |= 0x3C; //00111100
302 1 P2M2 &= ~0x80;
303 1
C51 COMPILER V7.09 LPC935 09/08/2005 22:25:29 PAGE 6
304 1 P0M1 |= 0x02;
305 1 P0M2 &= ~0x02;
306 1 */
307 1 ADINS=0xFF; //1111 1111, 选择 all 8 channel
308 1 ADMODA=0x11; //0001 0001, 选择转换工作模式:自动扫描,单次转换模式
309 1 //ADMODA=0x44; //0001 0001, 选择转换工作模式:自动扫描,连续转换模式
310 1 ADMODB=0x00; //500Khz < ADC CLK < 3.3Mhz,,
311 1 // disable adc interrupt
312 1 EAD = 0;
313 1 }
314
315 void delayms(word ms)
316 {
317 1 byte i;
318 1 while (ms>0) {
319 2 for (i=0;i<200;i++);
320 2 ms--;
321 2 }
322 1 }
323
324 void SIO_Out_Hex(byte b)
325 {
326 1 SBUF='0';
327 1 while (!TI);
328 1 TI=0;
329 1 SBUF='x';
330 1 while (!TI);
331 1 TI=0;
332 1 if ((b>>4)<0x0a)
333 1 SBUF=0x30+(b>>4);
334 1 else
335 1 SBUF=0x37+(b>>4);
336 1 while (!TI);
337 1 TI=0;
338 1
339 1 if ((b&0x0f)<0x0a)
340 1 SBUF=0x30+(b&0x0f);
341 1 else
342 1 SBUF=0x37+(b&0x0f);
343 1 while (!TI);
344 1 TI=0;
345 1
346 1 SBUF='H';
347 1 while (!TI);
348 1 TI=0;
349 1
350 1 }
351
352 void SIO_Out_Dec(byte b)
353 {
354 1 byte temp;
355 1 temp=b/10;
356 1 SBUF=0x30+(temp);
357 1 while (!TI);
358 1 TI=0;
359 1
360 1 SBUF=0x30+(b-temp*10);
361 1 while (!TI);
362 1 TI=0;
363 1 }
364
365 void SIO_Out_Str (byte *pstr)
C51 COMPILER V7.09 LPC935 09/08/2005 22:25:29 PAGE 7
366 {
367 1 while (*pstr!=0x00)
368 1 {
369 2 SBUF=*pstr;
370 2 while (!TI);
371 2 TI=0;
372 2 pstr++;
373 2 }
374 1 }
375
376 void Clear_Timer(void)
377 {
378 1 EA=0;
379 1 Flag_10ms=false;
380 1 Flag_Second=false;
381 1 EA=1;
382 1 }
383
384 void Do_ADC()
385 {
386 1 byte temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;
387 1 temp0=temp1=temp2=temp3=temp4=temp5=temp6=temp7=0x00;
388 1 ADCON0=0x05; //选择转换触发模式;并立即启动
389 1 temp0=AD0DAT0;
390 1 temp1=AD0DAT1;
391 1 temp2=AD0DAT2;
392 1 temp3=AD0DAT3;
393 1 ADCON0&=0xF7; //清除中断完成标志
394 1
395 1 ADCON1=0x05; //选择转换触发模式;并立即启动
396 1 temp4=AD1DAT0;
397 1 temp5=AD1DAT1;
398 1 temp6=AD1DAT2;
399 1 temp7=AD1DAT3;
400 1 ADCON1&=0xF7; //清除中断完成标志
401 1
402 1 ADC_BAT0=temp0; //将AD转换获得的数据存入
403 1 ADC_BAT1=temp1;
404 1 ADC_BAT2=temp2;
405 1 ADC_BAT3=temp3;
406 1 ADC_BAT4=temp4;
407 1 ADC_BAT5=temp5;
408 1 ADC_BAT6=temp6;
409 1 ADC_BAT7=temp7;
410 1 }
411
412
413 void SIO_Out_Byte(byte b)
414 {
415 1 SBUF=b;
416 1 while (!TI);
417 1 TI=0;
418 1 }
419
420 void delayus(word us)
421 {
422 1 while (us--);
423 1 }
424
425 bit Check_Start(void)
426 {
427 1 if(!ADC_BAT0) return false;
C51 COMPILER V7.09 LPC935 09/08/2005 22:25:29 PAGE 8
428 1 if(!ADC_BAT1) return false;
429 1 if(!ADC_BAT2) return false;
430 1 if(!ADC_BAT3) return false;
431 1 if(!ADC_BAT4) return false;
432 1 if(!ADC_BAT5) return false;
433 1 if(!ADC_BAT6) return false;
434 1 if(!ADC_BAT7) return false;
435 1 return true;
436 1 }
437
438 void Do_Start(void)
439 {
440 1 CON_PIN0=High;
441 1 CON_PIN1=High;
442 1 CON_PIN2=High;
443 1 CON_PIN3=High;
444 1 CON_PIN4=High;
445 1 CON_PIN5=High;
446 1 CON_PIN6=High;
447 1 CON_PIN7=High;
448 1 delayus(30000);
449 1 delayus(30000);
450 1 delayus(30000);
451 1 delayus(30000);
452 1 CON_PIN0=Low;
453 1 CON_PIN1=Low;
454 1 CON_PIN2=Low;
455 1 CON_PIN3=Low;
456 1 CON_PIN4=Low;
457 1 CON_PIN5=Low;
458 1 CON_PIN6=Low;
459 1 CON_PIN7=Low;
460 1 delayus(50000);
461 1 delayus(50000);
462 1 delayus(50000);
463 1 delayus(50000);
464 1 delayus(50000);
465 1 delayus(50000);
466 1 delayus(50000);
467 1 }
468
469 void Send_AD_Result(void)
470 {
471 1 SIO_Out_Byte(ADC_BAT0);
472 1 SIO_Out_Byte(ADC_BAT1);
473 1 SIO_Out_Byte(ADC_BAT2);
474 1 SIO_Out_Byte(ADC_BAT3);
475 1 // SIO_Out_Byte(ADC_BAT4);
476 1 SIO_Out_Byte(ADC_BAT5);
477 1 SIO_Out_Byte(ADC_BAT6);
478 1 SIO_Out_Byte(ADC_BAT7);
479 1 SIO_Out_Byte(0x0D);
480 1 SIO_Out_Byte(0x0A);
481 1 Snd_Time_Cnt=0;
482 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1210 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = 44 ----
PDATA SIZE = ---- ----
C51 COMPILER V7.09 LPC935 09/08/2005 22:25:29 PAGE 9
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -