⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpc935.lst

📁 PHILIPS LPC935 MCU 利用其8路AD转换器,对监测对象进行数据采集,然后通过UART将采集到的数据发送到PC上位机
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -