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

📄 24c02.lst

📁 c51读写24C02原程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 277          
 278          
 279          595显示函数 
 280          *****************************************/ 
 281          void In595(ucharm,ucharn) 
 282          { 
 283   1      
 284   1      
 285   1      uchar i,temp; 
 286   1      
 287   1      temp=duan[m]; 
*** ERROR C202 IN LINE 287 OF 24C02.C: 'm': undefined identifier
 288   1      //先传段 
 289   1      if(n==1);//加小数点 
*** ERROR C202 IN LINE 289 OF 24C02.C: 'n': undefined identifier
 290   1      temp=temp&0x7f; 
 291   1      for(i=0;i<8;i++) 
 292   1      { 
 293   2      
 294   2      
 295   2      SCK=0; 
 296   2      SER=temp&0x80; 
C51 COMPILER V7.01  24C02                                                                  02/05/2009 23:38:10 PAGE 6   

 297   2      temp<<=1; 
 298   2      SCK=1; 
 299   2      
 300   2      
 301   2      } 
 302   1      temp=wei[n]; 
*** ERROR C202 IN LINE 302 OF 24C02.C: 'n': undefined identifier
 303   1      //再传位 
 304   1      for(i=0;i<8;i++) 
 305   1      { 
 306   2      
 307   2      
 308   2      SCK=0; 
 309   2      SER=temp&0x80; 
 310   2      temp<<=1; 
 311   2      SCK=1; 
 312   2      
 313   2      
 314   2      } 
 315   1      
 316   1      
 317   1      RCK=0; 
 318   1      
 319   1      
 320   1      RCK=1; 
 321   1      //锁存 
 322   1      } 
 323          
 324          
 325          /**************************************** 
 326          
 327          
 328          TLC0834驱动部分 
 329          *****************************************/ 
 330          //TLC0834驱动函数 
 331          //支持最大时钟 600kHz 250kHz--32us完成转换 
 332          unsigned charTLC0834_Start(bit sgl, bit odd, bit sel) 
 333          { 
 334   1      
 335   1      
 336   1      unsigned char i; 
 337   1      unsigned char temp; 
 338   1      
 339   1      
 340   1      ADC_CLK= 0; 
 341   1      ADC_CS =1; 
 342   1      
 343   1      
 344   1      ADC_CS =0; 
 345   1      ADC_DIO = 1; 
 346   1      //发送启动位 
 347   1      ADC_CLK= 1; 
 348   1      //_nop_(); 
 349   1      
 350   1      
 351   1      ADC_CLK= 0; 
 352   1      ADC_DIO = sgl; 
 353   1      //发送 
 354   1      ADC_CLK= 1; 
 355   1      //_nop_(); 
 356   1      
 357   1      
C51 COMPILER V7.01  24C02                                                                  02/05/2009 23:38:10 PAGE 7   

 358   1      ADC_CLK= 0; 
 359   1      ADC_DIO = odd; 
 360   1      //发送 
 361   1      ADC_CLK= 1; 
 362   1      //_nop_(); 
 363   1      
 364   1      
 365   1      ADC_CLK= 0; 
 366   1      ADC_DIO = sel; 
 367   1      //发送 
 368   1      ADC_CLK= 1; 
 369   1      //_nop_(); 
 370   1      ADC_CLK= 0; 
 371   1      //_nop_(); 
 372   1      
 373   1      
 374   1      for(i=8;i>0;i--) 
 375   1      //发送 8个转换时间脉冲 
 376   1      
 377   1      
 378   1      { 
 379   2      ADC_CLK= 1; 
 380   2      //_nop_(); 
 381   2      ADC_CLK= 0; 
 382   2      //_nop_(); 
 383   2      
 384   2      
 385   2      } 
 386   1      
 387   1      
 388   1      for(i=8;i>0;i--) 
 389   1      //第 12个时钟下降沿,此时数据线上已经发出 LSB信号 
 390   1      
 391   1      
 392   1      { 
 393   2      
 394   2      
 395   2      temp>>= 1; 
 396   2      
 397   2      
 398   2      if(ADC_DIO) temp|= 0x80; 
 399   2      
 400   2      
 401   2      ADC_CLK= 1; 
 402   2      
 403   2      
 404   2      ADC_DIO = 1;//先写 1后再读,否则读出的数据不可预期 
 405   2      
 406   2      
 407   2      //_nop_(); 
 408   2      
 409   2      
 410   2      ADC_CLK= 0; 
 411   2      
 412   2      
 413   2      } 
 414   1      
 415   1      
 416   1      ADC_CS = 1; 
 417   1      //结束本次操作 
 418   1      
 419   1      
C51 COMPILER V7.01  24C02                                                                  02/05/2009 23:38:10 PAGE 8   

 420   1      return(temp); 
 421   1      } 
 422          
 423          
 424          /****************************************************
 425          
 426          主函数 
 427          ****************************************************/ 
 428          void main(void) 
 429          { 
 430   1      
 431   1      
 432   1      bit t=0; 
 433   1      
 434   1      
 435   1      uchar temp; 
 436   1      
 437   1      
 438   1      uchar AD_Data; 
 439   1      
 440   1      
 441   1      TMOD=0x01; 
 442   1      //定时器 T0的计时方式为 1; 
 443   1      
 444   1      
 445   1      TH0=0xec; 
 446   1      
 447   1      
 448   1      TL0=0x78; 
 449   1      //5ms定时 
 450   1      
 451   1      
 452   1      TR0=1; 
 453   1      //启动 T0 
 454   1      
 455   1      
 456   1      ET0=1; 
 457   1      //容许定时器 T0中断 
 458   1      
 459   1      
 460   1      EA=1; 
 461   1      //CPU开中断 
 462   1      
 463   1      
 464   1      P2=r(0x02); 
 465   1      //从 0x02中读出值 
 466   1      
 467   1      
 468   1      while(1) 
 469   1      
 470   1      
 471   1      { 
 472   2      
 473   2      
 474   2      if(k3==0)t=~t; 
 475   2      //功能键 
 476   2      
 477   2      
 478   2      while(k3==0); 
 479   2      
 480   2      
 481   2      if(k1==0) 
C51 COMPILER V7.01  24C02                                                                  02/05/2009 23:38:10 PAGE 9   

 482   2      //加键
 483   2      
 484   2      
 485   2      { 
 486   3      if(t==0)P2++; 
 487   3      if(t==1)P2=P2+10; 
 488   3      while(k1==0); 
 489   3      if(P2>0x78) 
 490   3      P2=0x3c; 
 491   3      
 492   3      
 493   3      } 
 494   2      
 495   2      
 496   2      if(k2==0) 
 497   2      //减键 
 498   2      
 499   2      
 500   2      { 
 501   3      if(t==0)P2--; 
 502   3      if(t==1)P2=P2-10; 
 503   3      while(k2==0); 
 504   3      if((P2<0x00)|(P2>0xf5)) 
 505   3      P2=0x3c; 
 506   3      
 507   3      
 508   3      } 
 509   2      
 510   2      
 511   2      temp=P2; 
 512   2      w(temp,0x02); 
 513   2      //写 temp到地址 0x02 
 514   2      
 515   2      
 516   2      k[0]=temp%10; 
 517   2      k[1]=temp/10%10; 
 518   2      k[2]=temp/100%10; 
 519   2      
 520   2      
 521   2      // k[3]=vot/1000%10; 
 522   2      // k[4]=vot/10000%10; 
 523   2      // k[5]=vot/100000%10; 
 524   2      // k[6]=vot/1000000%10; 
 525   2      // k[7]=vot/10000000; 
 526   2      
 527   2      
 528   2      AD_Data = TLC0834_Start(1,0,0); 
 529   2      //单端方式,偶数通道,偶数第一个通道.即 CH0 
 530   2      If(AD_Data>26) 
 531   2      //如果输出电流大于 500mA则断开电源 
 532   2      { 
 533   3      
 534   3      P1^3=0; 
 535   3      //开启继电器,断开电源,输出电压为 0 
 536   3      } 
 537   2      } 
 538   1      } 
 539          
 540          
 541          /*********************************************** 
 542          
 543          
C51 COMPILER V7.01  24C02                                                                  02/05/2009 23:38:10 PAGE 10  

 544          5ms显示一次 
 545          ************************************************/ 
 546          void t0()interrupt 1 
 547          { 
 548   1      
 549   1      TH0=0xec; 
 550   1      TL0=0x78; 
 551   1      for(j=0;j<3;j++) 
 552   1      { 
 553   2      
 554   2      
 555   2      In595(k[j],j); 
 556   2      } 
 557   1      }

C51 COMPILATION COMPLETE.  0 WARNING(S),  8 ERROR(S)

⌨️ 快捷键说明

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