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

📄 bulk_test.lst

📁 CY7C68013通过SPI接口下载固件至ADNS-3080后的测试代码。
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.10  BULK_TEST                      01/20/2009 06:12:59 PAGE 1   


C51 COMPILER V6.10, COMPILATION OF MODULE BULK_TEST
OBJECT MODULE PLACED IN .\bulk_test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\bulk_test.c OPTIMIZE(6,SPEED) DEB
                    -UG OBJECTEXTEND CODE SYMBOLS PAGEWIDTH(80) 

stmt level    source

   1          #pragma NOIV                    // Do not generate interrupt vecto
             -rs
   2          //----------------------------------------------------------------
             --------------
   3          //   File:      portcstb.c
   4          //   Contents:  Hooks required to implement USB peripheral functio
             -n.
   5          //              Code written for FX2 100-pin REVD...
   6          //              This firmware is used to demonstrate the PORTC STR
             -OBE FEATURE
   7          //   Copyright (c) 2001 Cypress Semiconductor All rights reserved
   8          //----------------------------------------------------------------
             --------------
   9          #include "fx2.h"
  10          #include "fx2regs.h"
  11          #include "fx2sdly.h"            // SYNCDELAY macro
  12          
  13          extern BOOL GotSUD;             // Received setup data flag
  14          extern BOOL Sleep;
  15          extern BOOL Rwuen;
  16          extern BOOL Selfpwr;
  17          
  18          
  19          BYTE Read(BYTE add);//读数据
  20          
  21          BYTE Configuration;             // Current configuration
  22          BYTE AlternateSetting;          // Alternate settings
  23          
  24          // EZUSB FX2 PORTA i/o...
  25          //sbit LATRIGWR = IOA ^ 0;        // alt. func., INT0#
  26          //sbit LATRIGRD = IOA ^ 1;        // alt. func., INT1#
  27          sbit NPD  = IOA ^ 2;//PA2
  28          sbit RST  = IOA ^ 3;//PA3            
  29          sbit NCS  = IOA ^ 4;//PA4
  30          sbit MISO = IOA ^ 5;//PA5
  31          sbit SCLK = IOA ^ 6;//PA6
  32          sbit MOSI = IOA ^ 7;//PA7
  33          sbit LEN = IOB ^ 7;//PB7
  34          // EZUSB FX2 PORTE is not bit-addressable...
  35          
  36          // use this global variable when (de)asserting debug LEDs...
  37          
  38          //----------------------------------------------------------------
             --------------
  39          // Task Dispatcher hooks
  40          //   The following hooks are called by the task dispatcher.
  41          //----------------------------------------------------------------
             --------------
  42          
  43          void TD_Init( void )              
  44          { // Called once at startup
  45   1        CPUCS = 0x10 ;
  46   1        IFCONFIG = 0xC0;
  47   1        EP1OUTCFG = 0xB0;
C51 COMPILER V6.10  BULK_TEST                      01/20/2009 06:12:59 PAGE 2   

  48   1        EP1INCFG = 0xB0;
  49   1        SYNCDELAY;                    
  50   1        
  51   1        OEA = 0xFC;   //使能读写允许的引脚PA2、PA3、PA4、PA5、PA6、PA7、
  52   1        OEB = 0x80;   //PB7
  53   1        
  54   1        Rwuen = TRUE;                 // Enable remote-wakeup
  55   1      }
  56          
  57          void TD_Poll( void )              
  58          { // Called repeatedly while the device is idle
  59   1      
  60   1        if( !( EP1OUTCS & 0x02 ) && EP1OUTBC )//BUSY=0,OUT的缓冲区数据有
             -效;若
  61   1        { 
  62   2      	if(EP1OUTBUF[0]==0x11 && EP1OUTBUF[1]==0x22)  
  63   2      	{
  64   3      	  LEN=1;
  65   3            EZUSB_Delay(50);
  66   3            LEN=0;
  67   3            EZUSB_Delay(50);
  68   3      
  69   3            NPD = 0;//NPD->0 ->1供电
  70   3      	  NPD=1;
  71   3      
  72   3            RST=1;//Reset->0 ->1复位
  73   3      	  EZUSB_Delay1ms();//Delay(>=10us);
  74   3      	  RST=0;
  75   3      	
  76   3      	  SCLK=1;//时钟闲置时上拉
  77   3      
  78   3      	  NCS=1;//NCS->1 ->0芯片选择
  79   3      	  NCS=0;
  80   3      
  81   3            EP1INBUF[0]=Read(0x1f);
  82   3      	  EZUSB_Delay1ms();
  83   3            EP1INBUF[1]=Read(0x00);//PID 0x17
  84   3      	  EZUSB_Delay1ms();
  85   3            EP1INBUF[2]=Read(0x01);
  86   3      	  EZUSB_Delay1ms();
  87   3            EP1INBUF[3]=Read(0x02);
  88   3      	  EZUSB_Delay1ms();
  89   3            EP1INBUF[4]=Read(0x03);
  90   3      	  EZUSB_Delay1ms();
  91   3            EP1INBUF[5]=Read(0x04);
  92   3      	  EZUSB_Delay1ms();
  93   3            EP1INBUF[6]=Read(0x0a);
  94   3      	  EZUSB_Delay1ms();
  95   3            EP1INBUF[7]=Read(0x0e);
  96   3      	  EZUSB_Delay1ms();
  97   3            EP1INBUF[8]=Read(0x10);
  98   3      	  EZUSB_Delay1ms();
  99   3            EP1INBUF[9]=Read(0x11);
 100   3      	  EZUSB_Delay1ms();
 101   3            EP1INBUF[10]=Read(0x3f);
 102   3      	  EZUSB_Delay1ms();
 103   3            EP1INBUF[11]=Read(0x60);
 104   3      	  EZUSB_Delay1ms();
 105   3            EP1INBUF[12]=Read(0x3D);
 106   3      	  EZUSB_Delay1ms();
 107   3      	  EP1INBUF[13]=(BYTE)MISO;
 108   3      	  EZUSB_Delay1ms();
C51 COMPILER V6.10  BULK_TEST                      01/20/2009 06:12:59 PAGE 3   

 109   3            EP1INBC=20;// 设置端点为IN传输,BUSY位自动置1
 110   3      	}
 111   2      	if(EP1OUTBUF[0]==0x11 && EP1OUTBUF[1]==0x33) 
 112   2      	{
 113   3       	 NCS=1;//A3080停止工作
 114   3      	}
 115   2      	if(EP1OUTBUF[0]==0x22 && EP1OUTBUF[1]==0x33)  
 116   2      	{
 117   3      	  LEN=1;
 118   3            EZUSB_Delay(50);
 119   3            LEN=0;
 120   3            EZUSB_Delay(50);
 121   3      	  EP1INBUF[0]=0x11;
 122   3            EP1INBC=20;// 设置端点为IN传输,BUSY位自动置1
 123   3      	}
 124   2      
 125   2      	EP1OUTBC = 0x00;
 126   2        }
 127   1        
 128   1      
 129   1      }
 130          
 131          BYTE Read(BYTE add)
 132          {
 133   1        char a_add[9];
 134   1        BYTE data0;
 135   1        BYTE temp_data0;
 136   1        char i;
 137   1        //1、写地址
 138   1        a_add[0]=0;//读数据标志位
 139   1        a_add[1]=(add & 0x40)>>6;
 140   1        a_add[2]=(add & 0x20)>>5;
 141   1        a_add[3]=(add & 0x10)>>4;
 142   1        a_add[4]=(add & 0x08)>>3;
 143   1        a_add[5]=(add & 0x04)>>2;
 144   1        a_add[6]=(add & 0x02)>>1;
 145   1        a_add[7]=add & 0x01;
 146   1        for(i=0;i<8;i++)//写地址
 147   1        {
 148   2        	SCLK=0;
 149   2      	EZUSB_Delay1ms();
 150   2      	MOSI=a_add[i];
 151   2      	EZUSB_Delay1ms();
 152   2      	SCLK=1;
 153   2      	EZUSB_Delay1ms();
 154   2        }
 155   1        EZUSB_Delay1ms();//Tread>=50us
 156   1        SCLK=0;
 157   1        SCLK=1;
 158   1        for(i=0;i<8;i++)//读数据
 159   1        {
 160   2        	SCLK=1;
 161   2      	EZUSB_Delay1ms();
 162   2      	//data0 += (BYTE)MISO<<(7-i);
 163   2      	temp_data0 = MISO;
 164   2      	data0 +=temp_data0<<(7-i);
 165   2      	EZUSB_Delay1ms();
 166   2      	SCLK=0;
 167   2      	EZUSB_Delay1ms();
 168   2      	SCLK=1;
 169   2        }
 170   1      
C51 COMPILER V6.10  BULK_TEST                      01/20/2009 06:12:59 PAGE 4   

 171   1        LEN=1;
 172   1        EZUSB_Delay(50);
 173   1        LEN=0;
 174   1        EZUSB_Delay(50);
 175   1      
 176   1        return data0;
 177   1      }
 178          
 179          
 180          BOOL TD_Suspend(void)          // Called before the device goes in
             -to suspend mode
 181          {
 182   1         return(TRUE);
 183   1      }
 184          
 185          BOOL TD_Resume(void)          // Called after the device resumes
 186          {
 187   1         return(TRUE);
 188   1      }
 189          
 190          //----------------------------------------------------------------
             --------------
 191          // Device Request hooks
 192          //   The following hooks are called by the end point 0 device requ
             -est parser.
 193          //----------------------------------------------------------------
             --------------
 194          
 195          BOOL DR_GetDescriptor(void)
 196          {
 197   1         return(TRUE);
 198   1      }
 199          
 200          BOOL DR_SetConfiguration(void)   // Called when a Set Configuratio
             -n command is received
 201          {
 202   1         Configuration = SETUPDAT[2];
 203   1         return(TRUE);            // Handled by user code
 204   1      }
 205          
 206          BOOL DR_GetConfiguration(void)   // Called when a Get Configuratio
             -n command is received
 207          {
 208   1         EP0BUF[0] = Configuration;
 209   1         EP0BCH = 0;
 210   1         EP0BCL = 1;
 211   1         return(TRUE);            // Handled by user code
 212   1      }
 213          
 214          BOOL DR_SetInterface(void)       // Called when a Set Interface co
             -mmand is received
 215          {
 216   1         AlternateSetting = SETUPDAT[2];
 217   1         return(TRUE);            // Handled by user code
 218   1      }
 219          
 220          BOOL DR_GetInterface(void)       // Called when a Set Interface co
             -mmand is received
 221          {
 222   1         EP0BUF[0] = AlternateSetting;
 223   1         EP0BCH = 0;
 224   1         EP0BCL = 1;
C51 COMPILER V6.10  BULK_TEST                      01/20/2009 06:12:59 PAGE 5   

 225   1         return(TRUE);            // Handled by user code
 226   1      }
 227          
 228          BOOL DR_GetStatus(void)
 229          {
 230   1         return(TRUE);
 231   1      }
 232          
 233          BOOL DR_ClearFeature(void)
 234          {
 235   1         return(TRUE);
 236   1      }
 237          
 238          BOOL DR_SetFeature(void)
 239          {
 240   1         return(TRUE);
 241   1      }
 242          
 243          
 244          
 245          BOOL DR_VendorCmnd( void )
 246          {
 247   1              return(TRUE);
 248   1      }
 249          
 250          //----------------------------------------------------------------
             --------------
 251          // USB Interrupt Handlers
 252          //   The following functions are called by the USB interrupt jump 
             -table.
 253          //----------------------------------------------------------------
             --------------
 254          
 255          // Setup Data Available Interrupt Handler
 256          void ISR_Sudav(void) interrupt 0
 257          {
 258   1         GotSUD = TRUE;            // Set flag
 259   1         EZUSB_IRQ_CLEAR();
 260   1         USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
 261   1      }
 262          
 263          // Setup Token Interrupt Handler
 264          void ISR_Sutok(void) interrupt 0
 265          {
 266   1         EZUSB_IRQ_CLEAR();
 267   1         USBIRQ = bmSUTOK;         // Clear SUTOK IRQ

⌨️ 快捷键说明

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