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

📄 usb.lst

📁 此文件是USB接口芯片CH371的接口驱动程序! 直接将编译生成的HEX文件烧录就可实现PC与下位机的通信!
💻 LST
字号:
C51 COMPILER V8.02   USB                                                                   05/24/2009 23:44:36 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE USB
OBJECT MODULE PLACED IN USB.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE USB.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<AT89X51.h>
   2          
   3          /*
   4          
   5          char *xdata a; 
   6          char xdata *a;
   7          char data *xdata a;
   8          上面3个指针,我概念比较混乱,看了书后也不是特别明白。还请高手帮忙给通俗地解释解释。谢谢!
   9          
  10          xdata: 存储在外部RAM 
  11          data:存储在内部RAM
  12          要存储的内容:
  13          1.指针char *a指向的Byte串,2.指针本身,一般要3Byte
  14          如果没有指定存储的地方(哪种RAM),按编译模式设定,一般是存储在data (small模式)。这样
  15          char *xdata a
  16          char data *xdata a
  17          是相同的,都是表示指针本身存储在外部RAM,指针指向的数据存储在内部RAM
  18          char xdata *a指指针本身3Byte存储在内部RAM,指针指向的Byte串存储在外部RAM XDATA。
  19          一般尽量用内部RAM,data 数组的数据大,内部RAM放不下,用外部RAM保持数组内容
  20          char xdata *a
  21          这时指针本身的3Byte还是在内部RAM中;内部RAM不够用,可以把这3Byte也放倒外部RAM
  22          char xdata *xdata a     
  23          
  24          */
  25          
  26          
  27          #define CH371_PAGE 0
  28          #define CH371_SYSTEM (unsigned char xdata *)2
  29          #define CH371_CONFIG (unsigned char xdata *)2
  30          #define CH371_INT_SET (unsigned char xdata*)6
  31          #define CH371_STATUS (unsigned char xdata*)6
  32          #define CH371_LENGTH (unsigned char xdata*)7
  33          #define CH371_BUFFER (unsigned char xdata*)8
  34          
  35          unsigned char save_status;
  36          unsigned char save_length;
  37          unsigned char save_buffer[8]={0};
  38          unsigned char *temp;
  39          unsigned char counter;
  40          bit ReceiveFlag;
  41          void Init(void)
  42          {
  43   1              *CH371_LENGTH=15;
  44   1              save_length=0;
  45   1              IT0=1;          
  46   1              IE0=0;
  47   1              PX0=1;
  48   1              EX0=1; 
  49   1              EA=1;    
  50   1      
  51   1      }
  52          
  53          void UpLoad(unsigned char *pBuffer,unsigned len)
  54          {
  55   1                 temp=CH371_BUFFER;
C51 COMPILER V8.02   USB                                                                   05/24/2009 23:44:36 PAGE 2   

  56   1              for(counter=0;counter<len;counter++)
  57   1              {
  58   2                      *temp++=*pBuffer++;
  59   2      
  60   2              }
  61   1      
  62   1              *CH371_LENGTH=len;
  63   1      
  64   1      }
  65          
  66          void ExtInt0() interrupt 0
  67          {
  68   1                 save_status=*CH371_STATUS;
  69   1                 if(save_status&0x01)
  70   1                 {
  71   2                       *CH371_LENGTH=15;
  72   2                 }
  73   1                 else{
  74   2                              
  75   2                              P1=0xff;
  76   2                       temp=CH371_BUFFER;
  77   2                       save_length=*CH371_LENGTH;
  78   2                       for(counter=0;counter<save_length;counter++)
  79   2                        {save_buffer[counter]=*temp++;
  80   3                         ReceiveFlag=1;
  81   3                        }
  82   2                                 
  83   2                 }
  84   1      
  85   1      }
  86           
  87           void main(){                    
  88   1       
  89   1                temp=0;
  90   1                counter=0;
  91   1                ReceiveFlag=0;
  92   1                P1=0;
  93   1                Init();
  94   1      
  95   1                while(1)
  96   1                {
  97   2                      if(ReceiveFlag==1)
  98   2                      {
  99   3                              if(save_buffer[0]==0x90)
 100   3                              {
 101   4                                 save_buffer[0]=~save_buffer[0];
 102   4                                 save_buffer[1]=~save_buffer[1];
 103   4                                 save_buffer[2]=~save_buffer[2];
 104   4                                 UpLoad(save_buffer,8);
 105   4      
 106   4                              }
 107   3                              ReceiveFlag=0;
 108   3                
 109   3                      }
 110   2       
 111   2                }
 112   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    261    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V8.02   USB                                                                   05/24/2009 23:44:36 PAGE 3   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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