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

📄 admain.lst

📁 绝对好东西!aduc812AD转换代码,望对大家学习有所帮助!
💻 LST
📖 第 1 页 / 共 5 页
字号:
 282   4              }
 283   3          else
 284   3              {
 285   4               SetDac(0,0x0000);
 286   4               for(i=0;i<20;i++) { temp_s[i]=0x00;}
 287   4              }
 288   3         }
 289   2         else
 290   2         {
 291   3         Calcu(0);
 292   3         if(flag_s==1)
 293   3           {
 294   4                for(i=19;i>0;i--) { temp_s[i]=temp_s[i-1];}
 295   4                temp_s[0]=Da_i[0];
 296   4            flag_s=0;
 297   4                if((j&0x80)!=0) temp_t++;
 298   4               //if((temp_t>=0x64)&&((flag_u&0x01)==0x01))
 299   4                if(temp_t>=0x64)
 300   4                {
 301   5                Write_Serial(Ad_o[0]);   //test zhy
 302   5                while(flag){;}
 303   5                Write_Serial(Da_i[0]);
C51 COMPILER V7.10   ADMAIN                                                                06/05/2006 09:59:57 PAGE 6   

 304   5                temp_t=0;
 305   5                }
 306   4               } 
 307   3         }
 308   2         //-----------------------
 309   2         if((time_p==0)&&(flag1>0))
 310   2          {
 311   3               flag1=0x00;   
 312   3           W_Uart("uart err",8);
 313   3               Rptr=Wptr=0x00;
 314   3              }
 315   2         //-----------------------
 316   2         if(Rptr!=Wptr)
 317   2           {
 318   3                time_p=0x80;
 319   3                k=DATA_U[Rptr];
 320   3                Rptr++;
 321   3                if(Rptr>=64) {Rptr=0;}
 322   3                switch(flag1) 
 323   3                 {
 324   4                  case 0:                             //0xaa 头  下载
 325   4                       if(k==0xaa) {flag1=0x01;}
 326   4                               else if(k==0xbb){flag1=0x10;}
 327   4                               else if(k==0xcc)
 328   4                                  {
 329   5                                        for(i=0;i<20;i++)
 330   5                                        {
 331   6                                        Write_Serial(temp_s[i]);   //test zhy
 332   6                            while(flag){;}
 333   6                            }
 334   5                                       /*EADRL=0x40;
 335   5                       ECON=0x01;       //按页擦
 336   5                                       EDATA1=0x00;
 337   5                               EDATA2=0x00;
 338   5                                   EDATA3=0xcc;
 339   5                                   EDATA4=0xcc;       
 340   5                       ECON=0x05;       //按页擦
 341   5                                       ECON=0x02;
 342   5                                   EADRL=0x9f; // 最后一页
 343   5                                       j=0;
 344   5                                       W_Uart("ok" ,2);
 345   5                                       Rptr=Wptr=0x00;
 346   5                                       */
 347   5                                      }
 348   4                               else if(k==0xcd){flag1=0x20;}
 349   4                               break;
 350   4                  case 1:
 351   4                           if(k>0x00)  //长度  
 352   4                                  {
 353   5                                      flag1=0x02;
 354   5                                  len_r=k;
 355   5                                      if(len_r>60) {len_r=60;}
 356   5                                      count=0x00;
 357   5                                  Addr_P=Rptr;
 358   5                                      }
 359   4                               else 
 360   4                                 {flag1=0x00;}
 361   4                               break;
 362   4                  case 2:             //等待消息结束长度  
 363   4                               count++;
 364   4                               if(count==len_r){flag1=0x03;}
 365   4                      
C51 COMPILER V7.10   ADMAIN                                                                06/05/2006 09:59:57 PAGE 7   

 366   4                               break;                   
 367   4                  case 3: //数据下载完成      写消息
 368   4                               Write_f(0x00,0x00);  //擦除flash
 369   4                               Rptr=Addr_P;
 370   4                               count=len_r/4;
 371   4                               for(i=0;i<count;i++)
 372   4                               {
 373   5                                EADRL=i;
 374   5                   // ECON=0x01;        //按页读
 375   5                    EDATA1=DATA_U[Rptr];
 376   5                            EDATA2=DATA_U[Rptr+1];
 377   5                                EDATA3=DATA_U[Rptr+2];
 378   5                                EDATA4=DATA_U[Rptr+3];        
 379   5                   // ECON=0x05;        //按页擦
 380   5                    ECON=0x02;
 381   5                                EADRL=0x9F; // 最后一页
 382   5                                Rptr=Rptr+4;
 383   5                               
 384   5                               } 
 385   4                   len_r=0;
 386   4                               Addr_P=0;
 387   4                               flag1=0x00;
 388   4                               Rptr=Wptr=0x00;
 389   4                               W_Uart("down ok" ,7);
 390   4                               break;
 391   4                  case 0x10:                   //读frlash数据
 392   4                               flag1=0x00;
 393   4                               Rptr=Wptr=0x00;
 394   4                               len_r=0;
 395   4                               for(i=0;i<65;i++)
 396   4                               {
 397   5                                EADRL=i;
 398   5                    ECON=0x01;
 399   5                                Seg.V_start= EDATA1;
 400   5                    Seg.V_end  = EDATA2;
 401   5                    Seg.mul_col= EDATA3;
 402   5                    Seg.add_col= EDATA4;
 403   5                                while(flag){;}
 404   5                        W_Uart((unsigned char*)&Seg ,4);
 405   5                               } 
 406   4                               break;
 407   4                  case 0x20:
 408   4                              {
 409   5                                       flag1=0x00;
 410   5                                       EADRL=0x40;
 411   5                       ECON=0x01;       //按页读
 412   5                                       EDATA1=k;
 413   5                               EDATA2=0x0f;
 414   5                                   EDATA3=0xcd;
 415   5                                   EDATA4=0xcd;       
 416   5                       ECON=0x05;       //按页擦
 417   5                                       ECON=0x02;
 418   5                                   EADRL=0x41; // 最后一页
 419   5                                       j=k;
 420   5                                       W_Uart("ok" ,2);
 421   5                                       Rptr=Wptr=0x00;
 422   5                                      }
 423   4                 }
 424   3              
 425   3               }
 426   2      
 427   2        }     
C51 COMPILER V7.10   ADMAIN                                                                06/05/2006 09:59:57 PAGE 8   

 428   1      
 429   1      }
 430          
 431          
 432          
 433          
 434          void S_int0() interrupt 0
 435          {
 436   1      
 437   1      }
 438          
 439          void S_int1() interrupt 2
 440          {
 441   1      
 442   1      }
 443          
 444          void Time0() interrupt 1
 445          {
 446   1           TL0=0xFF;
 447   1           TH0=0xDB; //TH0=0xDB;     //设定定时器初值
 448   1               TR0=1;        //停止计数
 449   1               if(time_r>0){time_r--;flag_s=1;}
 450   1           if(time_p>0){ time_p--;}
 451   1          // flag_s=1;
 452   1      }
 453          
 454          
 455          void Uart_isr() interrupt 4
 456          {
 457   1      // unsigned char  R_Data; 
 458   1       EA=0;
 459   1       if(RI)
 460   1              {                                        
 461   2           RI=0;
 462   2               DATA_U[Wptr]=SBUF;
 463   2           Wptr++;
 464   2               if(Wptr>=64) Wptr=0;
 465   2          }
 466   1       if(TI)
 467   1              {
 468   2              TI=0;
 469   2              if((Uptr<Ulen) && (flag==0x01))
 470   2               {
 471   3                SBUF=DATA_W[Uptr];
 472   3                Uptr++;
 473   3               }
 474   2              else
 475   2               {
 476   3                flag=0;
 477   3           }
 478   2          }
 479   1       
 480   1       EA=1;
 481   1      }
C51 COMPILER V7.10   ADMAIN                                                                06/05/2006 09:59:57 PAGE 9   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _GetADC (BEGIN)
                                           ; SOURCE LINE # 41
;---- Variable 'Channel' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 42
                                           ; SOURCE LINE # 47
0000 7B00              MOV     R3,#00H
0002 7A00        R     MOV     R2,#HIGH ADC_value
0004 7900        R     MOV     R1,#LOW ADC_value
;---- Variable 'p' assigned to Register 'R1/R2/R3' ----
                                           ; SOURCE LINE # 48
0006 8FD8              MOV     ADCCON2,R7
                                           ; SOURCE LINE # 49
0008 D2DC              SETB    SCONV
000A         ?C0001:
                                           ; SOURCE LINE # 50
000A 20DCFD            JB      SCONV,?C0001
                                           ; SOURCE LINE # 51
000D         ?C0002:
                                           ; SOURCE LINE # 52
000D D2DC              SETB    SCONV
000F         ?C0003:
                                           ; SOURCE LINE # 53
000F 20DCFD            JB      SCONV,?C0003
                                           ; SOURCE LINE # 54
0012         ?C0004:
                                           ; SOURCE LINE # 55
0012 E5DA              MOV     A,ADCDATAH
0014 540F              ANL     A,#0FH
;---- Variable 'variable' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 56
0016 120000      E     LCALL   ?C?CSTPTR
                                           ; SOURCE LINE # 57
0019 7401              MOV     A,#01H
001B 29                ADD     A,R1
001C F9                MOV     R1,A
001D E4                CLR     A
001E 3A                ADDC    A,R2
001F FA                MOV     R2,A
                                           ; SOURCE LINE # 58
0020 E5D9              MOV     A,ADCDATAL
0022 120000      E     LCALL   ?C?CSTPTR
                                           ; SOURCE LINE # 60
0025 AE00        R     MOV     R6,ADC_value
0027 AF00        R     MOV     R7,ADC_value+01H
                                           ; SOURCE LINE # 61
0029         ?C0005:
0029 22                RET     
             ; FUNCTION _GetADC (END)

             ; FUNCTION _SetDac (BEGIN)
                                           ; SOURCE LINE # 63
;---- Variable 'Da_data' assigned to Register 'R4/R5' ----
;---- Variable 'num' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 64
                                           ; SOURCE LINE # 65
0000 EF                MOV     A,R7
0001 700C              JNZ     ?C0006
                                           ; SOURCE LINE # 66
                                           ; SOURCE LINE # 67
C51 COMPILER V7.10   ADMAIN                                                                06/05/2006 09:59:57 PAGE 10  

0003 75FD1F            MOV     DACCON,#01FH
                                           ; SOURCE LINE # 68
0006 EC                MOV     A,R4
0007 540F              ANL     A,#0FH
0009 F5FA              MOV     DAC0H,A
                                           ; SOURCE LINE # 69
000B ED                MOV     A,R5
000C F5F9              MOV     DAC0L,A
                                           ; SOURCE LINE # 70
000E 22                RET     
000F         ?C0006:
                                           ; SOURCE LINE # 71
000F BF010B            CJNE    R7,#01H,?C0009
                                           ; SOURCE LINE # 72
                                           ; SOURCE LINE # 73
0012 75FD1F            MOV     DACCON,#01FH
                                           ; SOURCE LINE # 74
0015 EC                MOV     A,R4
0016 540F              ANL     A,#0FH
0018 F5FC              MOV     DAC1H,A
                                           ; SOURCE LINE # 75
001A ED                MOV     A,R5
001B F5FB              MOV     DAC1L,A
                                           ; SOURCE LINE # 76
                                           ; SOURCE LINE # 77
001D         ?C0009:

⌨️ 快捷键说明

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