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

📄 main.lst

📁 支持philips pdiusbd12 芯片进行usb通信的下位机源码
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  12/03/2004 14:35:27 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /****************************************Copyright (c)**************************************************
   2          **                               广州周立功单片机发展有限公司
   3          **                                     研    究    所
   4          **                                        产品一部 
   5          **
   6          **                                 http://www.zlgmcu.com
   7          **
   8          ** 文   件   名: main.c
   9          ** 最后修改日期: 2004年11月15日
  10          ** 描        述: 用户应用程序
  11          ** 版        本: V5.0
  12          **********************************************************************************************************
             -/
  13          
  14          #include <reg52.h>
  15          #include "D12Config.h"
  16          #include "Descriptor.h"
  17          #include "Chap_9.h"
  18          #include "D12Driver.h"
  19          #include "string.h"
  20          
  21          
  22          /***********************************************************
  23                                  主函数                  Main Function
  24          ************************************************************/
  25          
  26          #define CMD_RECEIVE             0x01                    /* 接收命令 */
  27          #define CMD_TRANSMIT    0x02                    /* 发送命令 */
  28          
  29          INT8U xdata RecBuf[1024];                               /* 缓冲区 */
  30          
  31          void RxServe(void);
  32          
  33          sfr AUXR = 0x8E;                                                /* 只用于TKS668 仿真器 */
  34          
  35          
  36          /****************************************************************************
  37          ** 函数名称: void Init_Interrupt(void)
  38          ** 功能描述: 初始化MCU相关中断
  39          *****************************************************************************/
  40          void Init_Interrupt(void)
  41          {
  42   1              EX0 = 1;                                                        /* 开外部中断0 */
  43   1              PX0 = 0;                                                        /* 设置外部中断0中断优先级 */
  44   1              EA = 1;                                                         /* 开80C51总中断 */
  45   1      
  46   1              AUXR = 0;                                                       /* 使能668芯片内部xdata */
  47   1      }
  48          
  49          /****************************************************************************
  50          ** 函数名称: main()
  51          ** 功能描述: 主函数
  52          *****************************************************************************/
  53          main()
  54          {       
C51 COMPILER V7.06   MAIN                                                                  12/03/2004 14:35:27 PAGE 2   

  55   1              if (Init_D12()!=0)                                      /* 初始化D12 */
  56   1                      return;                                                 /* 如果初始化不成功,返回 */
  57   1      
  58   1              Init_Interrupt();                                       /* 实始化D12以后,才能使能相关中断 */
  59   1                      
  60   1              while(1)
  61   1              {
  62   2                      usbserve();                                             /* 处理USB事件 */
  63   2      
  64   2                      if (bEPPflags.bits.ep2_rxdone == 1)                                     
  65   2                      {                                                                                       /* 从端点2收到数据 */
  66   3                              RxServe();                                                              /* 数据处理 */
  67   3      
  68   3                              DISABLE();
  69   3                              bEPPflags.bits.ep2_rxdone = 0;                  /* 清空端点2收到数据标志 */
  70   3                              ENABLE();
  71   3                      }
  72   2      
  73   2              }
  74   1      
  75   1      }
  76          
  77          /****************************************************************************
  78          ** 函数名称: void RxServe(void)
  79          ** 功能描述: 对接收到的数据进行处理,并发送数据到PC机
  80          *****************************************************************************/
  81          void RxServe(void)
  82          {
  83   1              INT8U ack = 0x01;                       /* 应答字 */                            
  84   1              INT8U command,len;
  85   1              INT16 offset;
  86   1      
  87   1              command = EpBuf[0];                                                             //命令字
  88   1              offset = (INT16U)(EpBuf[1] << 8) + EpBuf[2];    //接收/发送 缓冲区地址
  89   1              len = EpBuf[3];                                                                 //接收/发送 长度
  90   1              
  91   1              //接收数据命令
  92   1              if (command == CMD_RECEIVE)
  93   1              {
  94   2                      memcpy(RecBuf + offset,&EpBuf[4],len);          
  95   2                      D12_WriteEndpoint(5,1,&ack);                            //应答PC机:我已收到你发来的数据!
  96   2              }       
  97   1              
  98   1              //发送数据命令
  99   1              if (command == CMD_TRANSMIT)    
 100   1              {
 101   2                      if (len > 64)
 102   2                      {                                                                                                               //要求发送数据大于64字节
 103   3                              D12_WriteEndpoint(5,64,RecBuf + offset);                        //写第一个发送缓冲区
 104   3                              D12_WriteEndpoint(5,len - 64,RecBuf + offset + 64);     //写第二个发送缓冲区
 105   3                      }
 106   2                      else
 107   2                              D12_WriteEndpoint(5,len,RecBuf + offset);                       //只写第一个发送缓冲区
 108   2              }
 109   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    190    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   1024    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.06   MAIN                                                                  12/03/2004 14:35:27 PAGE 3   

   DATA SIZE        =   ----       5
   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 + -