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

📄 adda.lst

📁 silicon公司c8051F020集成以太网接口核心模块ADCDAC例程源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 227   1          // P1.3  -  Skipped,     Open-Drain, Analog
 228   1          // P1.4  -  Skipped,     Open-Drain, Analog
 229   1          // P1.5  -  Skipped,     Open-Drain, Analog
 230   1          // P1.6  -  Skipped,     Open-Drain, Analog
 231   1          // P1.7  -  Skipped,     Open-Drain, Analog
 232   1      
 233   1          // P2.0  -  TX1 (UART1), Open-Drain, Digital
 234   1          // P2.1  -  RX1 (UART1), Open-Drain, Digital
 235   1          // P2.2  -  INT0 (Tmr0), Open-Drain, Digital
 236   1          // P2.3  -  INT1 (Tmr1), Open-Drain, Digital
 237   1          // P2.4  -  Unassigned,  Open-Drain, Digital
 238   1          // P2.5  -  Unassigned,  Open-Drain, Digital
 239   1          // P2.6  -  Unassigned,  Open-Drain, Digital
 240   1          // P2.7  -  Unassigned,  Open-Drain, Digital
 241   1      
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 5   

 242   1          // P3.0  -  Unassigned,  Open-Drain, Digital
 243   1          // P3.1  -  Unassigned,  Push-Pull,  Digital
 244   1          // P3.2  -  Unassigned,  Open-Drain, Digital
 245   1          // P3.3  -  Unassigned,  Open-Drain, Digital
 246   1          // P3.4  -  Unassigned,  Open-Drain, Digital
 247   1          // P3.5  -  Unassigned,  Open-Drain, Digital
 248   1          // P3.6  -  Unassigned,  Open-Drain, Digital
 249   1          // P3.7  -  Unassigned,  Open-Drain, Digital
 250   1      
 251   1          P1MDIN    = 0x00;
 252   1          P3MDOUT   = 0x02;
 253   1          XBR0      = 0x07;
 254   1          XBR1      = 0x14;
 255   1          XBR2      = 0x44;
 256   1      
 257   1      
 258   1      
 259   1      }
 260          
 261          void Oscillator_Init()
 262          {
 263   1          int i = 0;
 264   1          OSCXCN    = 0x67;
 265   1          for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
 266   1          while ((OSCXCN & 0x80) == 0);
 267   1          OSCICN    = 0x08;
 268   1      }
 269          
 270          //--------------------------------
 271          // AD初始化
 272          //-------------------------------
 273          void ADC_Init()
 274          {
 275   1      
 276   1              AMX0CF    = 0;  // 单端输入
 277   1          AMX0SL    = 0;
 278   1              ADC0CF    = 0xF8;
 279   1      
 280   1          ADC0CN    = 0xC0;
 281   1      }
 282          
 283          void Voltage_Reference_Init()
 284          {
 285   1          REF0CN    = 0x07;
 286   1      }
 287          
 288          //------------------------------
 289          // DA初始化
 290          //------------------------------
 291          void DAC_Init()
 292          {
 293   1              DAC0CN = 0x80;      // 使能DAC0,输出数据右对齐
 294   1      }
 295          
 296          void Interrupts_Init()
 297          {
 298   1              //..................................
 299   1              // 初始化中断
 300   1              // EA IEGF0 ET2 ES0 ET1 EX1 ET0 EX0
 301   1          //..................................
 302   1          IE  = 0;
 303   1      
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 6   

 304   1              ET0 = 1;        // 打开定时器0中断
 305   1      
 306   1              
 307   1              ES0 = 1;        // 使能串口中断
 308   1              
 309   1      
 310   1      }
 311          
 312          //-------------------------------
 313          // 功能:    初始化单片机内部资源
 314          // 输入参数:无
 315          // 输出参数:无
 316          //-------------------------------
 317          void Init_Device(void)
 318          {
 319   1          Timer_Init();
 320   1      
 321   1          ADC_Init();
 322   1          Voltage_Reference_Init();
 323   1      
 324   1          DAC_Init();
 325   1      
 326   1          Port_IO_Init();
 327   1      
 328   1          Oscillator_Init();
 329   1              
 330   1              UART0_Init();
 331   1      
 332   1          Interrupts_Init();
 333   1      }
 334          
 335          //------------------------------------------------
 336          // 函数名称:InitVariable()
 337          // 函数功能:初始化系统全局变量
 338          //------------------------------------------------
 339          void InitVariable()
 340          {
 341   1              g_cMainSignal = 0;
 342   1      
 343   1              g_sTime.base  = 0;
 344   1              g_sTime.second= 0;
 345   1              g_sTime.minute= 0;
 346   1              
 347   1              g_cRecvPointer =0;
 348   1              g_cRecvLength  =0;
 349   1      
 350   1              g_Temperature  =0.0;
 351   1      
 352   1      
 353   1      }
 354          
 355          //-------------------------------------------------------------
 356          // 函数名称:定时器0中断入口函数,完成计时功能,定时时间为25ms
 357          // 输入参数: 无
 358          // 输出参数: 无
 359          //-------------------------------------------------------------
 360          
 361          void timer0() interrupt 1
 362          {
 363   1              TH0=TMR0H;
 364   1              TL0=TMR0L;
 365   1      
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 7   

 366   1              // 程序时基信号
 367   1              if(++g_sTime.base>=TICKS_PER_SEC)
 368   1              {// 1s到
 369   2                      g_sTime.base = 0;
 370   2      
 371   2                      g_cMainSignal|=SECD_SIGNAL;      // 产生秒信号
 372   2      
 373   2                      if(++g_sTime.second>59)
 374   2                      {// 1分钟到
 375   3                              g_sTime.second = 0;
 376   3      
 377   3                              g_cMainSignal|=MINU_SIGNAL;  // 产生分信号
 378   3      
 379   3                              if(++g_sTime.minute>59) g_sTime.minute=0;
 380   3                      }
 381   2              }
 382   1      
 383   1      
 384   1      
 385   1      }
 386          
 387          //..................................................
 388          // 串口0中断服务程序
 389          // 
 390          //.................................................
 391          void Uart0() interrupt 4
 392          {
 393   1              BYTE cRecvData;
 394   1      
 395   1              if(RI0)                                                         // 如果收到数据
 396   1              {
 397   2                      RI0=0;                                                  // 清除收到数据标志
 398   2                      
 399   2                      cRecvData = SBUF0;                      // 读取数据
 400   2                      SBUF0 = cRecvData;              // 回显
 401   2      
 402   2                      if(cRecvData=='\r')
 403   2                      {// 回车符作为结束标志
 404   3                              g_cRecvBuffer[g_cRecvPointer]=0; // 接收结束
 405   3                              g_cRecvPointer = 0;
 406   3      
 407   3                              g_cMainSignal|=UART0RECV_SIGNAL; // 接收完成信号
 408   3                              
 409   3                      }
 410   2                      else if(cRecvData==0x08)
 411   2                      {// CTRL+H控制键,退格
 412   3                              if(g_cRecvPointer>0) g_cRecvPointer--;
 413   3                      }
 414   2                      else                    
 415   2                      {
 416   3                              if(g_cRecvPointer<RECVBUF_LEN)
 417   3                              {
 418   4                                      if(isupper(cRecvData))
 419   4                                      {// 大写字符转换为小写
 420   5                                              cRecvData = _tolower(cRecvData);
 421   5                                      }
 422   4                                      g_cRecvBuffer[g_cRecvPointer++]=cRecvData;
 423   4                              }
 424   3                              else
 425   3                              {// 数据长度错误
 426   4                                      g_cRecvPointer = 0;
 427   4                              }
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 8   

 428   3                      }
 429   2                      
 430   2      
 431   2              }
 432   1      
 433   1              if(TI0)                                                         // 如果数据发送结束
 434   1              {
 435   2                      TI0=0;          
 436   2              }
 437   1              
 438   1      }
 439          
 440          //------------------------------
 441          // 进行一次电压采集
 442          //-----------------------------
 443          
 444          WORD SampleVoltageAndOut()
 445          {
 446   1              
 447   1              WORD   nRet;
 448   1              DWORD  lt;
 449   1      
 450   1              AMX0SL   = 0;  // 采集通道0
 451   1              AD0INT   = 0;
 452   1      
 453   1              AD0BUSY = 1;
 454   1      
 455   1      
 456   1              while(AD0INT==0);
 457   1              AD0INT = 0;
 458   1      
 459   1              // DA输出

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -