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

📄 pro.lst

📁 单片机控制飞利蒲PDIUSBD12芯片与PC机实现USB1.1通信。
💻 LST
字号:
C51 COMPILER V7.06   PRO                                                                   08/01/2005 14:19:11 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PRO
OBJECT MODULE PLACED IN .\Pro.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE H:\程序\Pro.c BROWSE DEBUG OBJECTEXTEND PRINT(.\Pro.lst) OBJECT(.\Pro.obj)

stmt level    source

   1          #include "at89x52.h"
   2          #include "stdio.h"
   3          #include "intrins.h"
   4          #include "ctype.h"
   5          
   6          sbit rdy=P3^2;
   7          sbit vpp=P3^3;
   8          sbit p26=P3^4;
   9          sbit p27=P3^5;
  10          sbit p36=P3^6;
  11          sbit p37=P3^7;
  12          sbit prog=P2^7;
  13          
  14          void init_serial()
  15          {
  16   1       SCON=0x50; /*mode 1*/
  17   1       TMOD=0x20;
  18   1       TH1=0xfd;
  19   1       PCON=0x80;  /*38400bps*/
  20   1       TR1=1;   /*load tmr1*/
  21   1       TI=1;
  22   1       ES=1;}
  23          
  24          void init_pro()
  25          {
  26   1       p26=0;
  27   1       p27=0;
  28   1       p36=0;
  29   1       p37=0;
  30   1       vpp=1;
  31   1       prog=1;
  32   1       }
  33          
  34          void sendbyte(unsigned char da)        /*send a byte*/
  35          {
  36   1       while(!TI);
  37   1              TI=0;
  38   1              SBUF=da;}
  39           
  40          unsigned char IntToAscii(unsigned char a)     /*change DEC to ASCII HEX code*/
  41          {
  42   1       if(a<10) return a+48;
  43   1       if(a>9) return a+55;}
  44          
  45          unsigned int getadr()                        /*get 5 diti  DEC adr*/
  46          {
  47   1       unsigned char i,a[5];
  48   1       for(i=0;i<5;i++)
  49   1       {
  50   2        while(!RI);
  51   2        RI=0;
  52   2        a[i]=SBUF-48;
  53   2        }
  54   1       return a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];}
  55          
C51 COMPILER V7.06   PRO                                                                   08/01/2005 14:19:11 PAGE 2   

  56          unsigned char getdata()                     /*get 2 diti  HEX data*/
  57          {
  58   1       unsigned char d1,d2;
  59   1       while(!RI);
  60   1       RI=0;
  61   1       d1=toint(SBUF);
  62   1       while(!RI);
  63   1       RI=0;
  64   1       d2=toint(SBUF);
  65   1       return d1*16+d2;}
  66           
  67          unsigned int detchip(int adr)
  68          {
  69   1       P0=0xff;
  70   1       P1=adr%256;P2=adr/256;
  71   1       init_pro();
  72   1       _nop_();_nop_();_nop_();_nop_();_nop_();  /*delay 10 us*/
  73   1       _nop_();_nop_();_nop_();_nop_();_nop_();
  74   1       return P0;}
  75           
  76          void read()
  77          {
  78   1       unsigned int adr,maxadr;
  79   1       unsigned char h,l;
  80   1       P0=0xff;
  81   1       maxadr=getadr();
  82   1       for(adr=0;adr<maxadr;adr++)
  83   1       {
  84   2         P1=adr%256;P2=adr/256;
  85   2         p26=0;
  86   2         p27=0;
  87   2         p36=1;
  88   2         p37=1;
  89   2         vpp=1;
  90   2         prog=1;
  91   2         h=IntToAscii(P0/16);
  92   2         sendbyte(h);
  93   2         l=IntToAscii(P0%16);
  94   2         sendbyte(l);}
  95   1              init_pro();}
  96          
  97          unsigned int test(unsigned int nn)
  98          {
  99   1       unsigned int adr,counter=0;
 100   1       P0=0xff;
 101   1       for(adr=0;adr<nn;adr++)
 102   1       {
 103   2        P1=adr%256;P2=adr/256;
 104   2        p26=0;
 105   2        p27=0;
 106   2        p36=1;
 107   2        p37=1;
 108   2        vpp=1;
 109   2        prog=1;
 110   2        _nop_();_nop_();_nop_();_nop_();_nop_();  /*delay 10 us*/
 111   2        _nop_();_nop_();_nop_();_nop_();_nop_();  
 112   2        if(P0!=0xff) counter++;}
 113   1        init_pro();
 114   1        return counter;}
 115          
 116          unsigned char erase(unsigned int nn,unsigned int p)
 117          {
C51 COMPILER V7.06   PRO                                                                   08/01/2005 14:19:11 PAGE 3   

 118   1       unsigned int i;
 119   1       P0=0xff;
 120   1       p26=1;
 121   1       p27=0;
 122   1       p36=0;
 123   1       p37=0;
 124   1       vpp=0;
 125   1       prog=1;
 126   1       for(i=0;i<50000;i++) _nop_();
 127   1       switch(p)
 128   1       {
 129   2        case 0 : prog=0;
 130   2                 prog=1;
 131   2                 break;
 132   2        case 1 : prog=0;
 133   2                 _nop_();
 134   2                 prog=1;
 135   2                 break;
 136   2        case 2 : prog=0;
 137   2                 _nop_();_nop_();
 138   2                 prog=1;
 139   2                 break;
 140   2        case 3 : prog=0;
 141   2                 _nop_();_nop_();_nop_();
 142   2                 prog=1;
 143   2                 break;
 144   2        case 4 : prog=0;
 145   2                 _nop_();_nop_();_nop_();_nop_();
 146   2                 prog=1;
 147   2                 break;
 148   2        case 5 : prog=0;
 149   2                 _nop_();_nop_();_nop_();_nop_();_nop_();
 150   2                 prog=1;
 151   2                 break;
 152   2        case 6 : prog=0;
 153   2                 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 154   2                 prog=1;
 155   2                 break;
 156   2        case 7 : prog=0;
 157   2                 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 158   2                 prog=1;
 159   2                 break;
 160   2        case 8 : prog=0;
 161   2                 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 162   2                 prog=1;
 163   2                 break;
 164   2        default: prog=0;
 165   2                 for(i=0;i<p;i++) _nop_(); 
 166   2                 prog=1;
 167   2                 break;}
 168   1       _nop_();_nop_();_nop_();_nop_();
 169   1       _nop_();_nop_();_nop_();_nop_();
 170   1       vpp=1;
 171   1       for(i=0;i<p;i++) _nop_();
 172   1       if(test(nn)==0) return 's';
 173   1       else return 'f';}
 174          
 175          unsigned char write()
 176          {
 177   1       unsigned int adr,d,i;
 178   1       p26=0;
 179   1       p27=1;
C51 COMPILER V7.06   PRO                                                                   08/01/2005 14:19:11 PAGE 4   

 180   1       p36=1;
 181   1       p37=1;
 182   1       vpp=0;
 183   1       prog=1;
 184   1       for(i=0;i<4000;i++) _nop_();
 185   1       adr=getadr();
 186   1       d=getdata();
 187   1       while(1)
 188   1       {
 189   2        if(adr>50000) break;
 190   2        P1=adr%256;P2=(adr/256)|0x80;
 191   2        P0=d;
 192   2        TI=0;
 193   2        SBUF='s';
 194   2        prog=0;
 195   2        _nop_();_nop_();_nop_();
 196   2        prog=1;
 197   2        adr=getadr();
 198   2        d=getdata();
 199   2        while(!rdy);}
 200   1        init_pro();
 201   1        return 'f';}
 202          
 203          unsigned char lock(unsigned char level)
 204          {
 205   1       unsigned int i;
 206   1       vpp=0;
 207   1       if(level==1) {p26=1;p27=1;p36=1;p37=1;}
 208   1       if(level==2) {p26=1;p27=1;p36=0;p37=0;}
 209   1       if(level==3) {p26=1;p27=0;p36=1;p37=0;}
 210   1       for(i=0;i<4000;i++) _nop_();
 211   1       prog=1;
 212   1       _nop_();_nop_();_nop_();_nop_();_nop_();  /*delay 10 us*/
 213   1       _nop_();_nop_();_nop_();_nop_();_nop_();
 214   1       prog=0;
 215   1       _nop_();_nop_();_nop_();_nop_();_nop_();  /*delay 10 us*/
 216   1       _nop_();_nop_();_nop_();_nop_();_nop_();
 217   1       prog=1;
 218   1       _nop_();_nop_();_nop_();_nop_();_nop_();
 219   1       while(!rdy);
 220   1       init_pro();
 221   1       return 'o';}
 222          
 223          void main()
 224          {
 225   1       unsigned char data c;
 226   1       unsigned int data adr,l,dx;
 227   1       init_pro();
 228   1       init_serial();
 229   1       while(1)
 230   1       {
 231   2        init_pro();
 232   2        scanf("%c",&c);
 233   2        switch(c)
 234   2        {
 235   3         case 'c' : printf("%c",'o');
 236   3                    break;
 237   3         case 'd' : scanf("%x",&adr);
 238   3                    printf("%x",detchip(adr)); 
 239   3                    break;
 240   3         case 't' : scanf("%u",&dx);
 241   3                    printf("%u",test(dx));
C51 COMPILER V7.06   PRO                                                                   08/01/2005 14:19:11 PAGE 5   

 242   3                    break;
 243   3         case 'r' : read();
 244   3                    break;
 245   3         case 'e' : scanf("%u,%u",&adr,&dx);
 246   3                    printf("%c",erase(adr,dx));
 247   3                    break;
 248   3         case 'w' : printf("%c",write());
 249   3                    break;
 250   3         case 'l' : scanf("%u",&l);
 251   3                    printf("%c",lock(l));
 252   3                    break;
 253   3         case 'h' : printf("**********Er6y Programmer Help Window***********\n");
 254   3                    printf("*         For AT89C/S/LS/51/52/53/55           *\n");
 255   3                    printf("*       Ver 1.0 21011030@uestc Wang Yilei      *\n");
 256   3                    printf("*                  2003/08                     *\n");
 257   3                    printf("*             Working @ 38400Bps               *\n");
 258   3                    printf("*______________________________________________*\n");
 259   3                    printf("*     Command    |    Fuction     |   Return   *\n");
 260   3                    printf("*----------------|----------------|------------*\n");
 261   3                    printf("*d               |Detect chip     |ChipID      *\n");
 262   3                    printf("*t Men Num +ENTER|Test chip black |Used bytes  *\n");
 263   3                    printf("*r Bytes   +ENTER|Read data@adress|Data        *\n");
 264   3                    printf("*e Men Num +ENTER|Erase the chip  |s:Ok;f:Faile*\n");
 265   3                    printf("*w adrdata       |Write data@adr  |s:Ok;f:Done *\n");
 266   3                    printf("*l bitNUM  +ENTER|Lock bits       |o:Finish    *\n");
 267   3                    printf("*h               |Show help window|            *\n");
 268   3                    printf("*________________|________________|____________*\n");
 269   3                    printf("*Notice: if adr>50000 w command will be Done.  *\n");
 270   3                    printf("************************************************\n");
 271   3                    break;
 272   3          default : break;}
 273   2        
 274   2        
 275   2        } 
 276   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1268    ----
   CONSTANT SIZE    =    915    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      27
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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