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

📄 isr.lst

📁 at89c51+isp1581控制程序(c语言源代码).包含快速模式和高速模式
💻 LST
字号:
C51 COMPILER V6.20c  ISR                                                                   05/19/2003 01:05:01 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN ISR.OBJ
COMPILER INVOKED BY: E:\WIN98\HARDWARE\KEILC\C51\BIN\C51.EXE ISR.C DB OE SMALL ROM(LARGE) 

stmt level    source

   1          #include "stdio.h"
   2          #include "HAL.H"
   3          //#include "USBD12.H"
   4          #include "SMPro.H"
   5          //#include "USB110.H"
   6          #include "USB.H"
   7          #include "VDOR.H"
   8          #include "Isp1581.h"
   9          #include "main.h"
  10          #include "Isr.h"
  11          #include "Iso.h"
  12          #include "Hal4sys.h"
  13          /*
  14          //*************************************************************************
  15          //  Public static data
  16          //*************************************************************************
  17          */
  18          
  19          extern ZBOARDFLAGS bZBoardFlags;
  20          extern CONTROL_XFER ControlData;
  21          extern GLOBE_VARIABLE globe_variable;
  22          extern IO_REQUEST idata ioRequest;
  23          unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
  24          /* ISR static vars */
  25          unsigned long lClockTicks = 0;
  26          
  27          /*
  28          void ISR_Timer2(void) interrupt 5
  29          {
  30          }
  31          
  32          void ISR_COMM(void) interrupt 4
  33          {
  34          }
  35          
  36          void ISR_Timer1(void) interrupt 3
  37          {
  38          }
  39          
  40          void ISR_INT1(void) interrupt 2
  41          {
  42          }
  43          */
  44          void ISR_Timer0(void) interrupt 1
  45          {
  46   1      	DISABLE_INTERRUPTS;
  47   1      	lClockTicks ++;
  48   1      	bZBoardFlags.bits.bTimer = 1;
  49   1      	ENABLE_INTERRUPTS;
  50   1      }
  51          
  52          
  53          void ISR_INT0(void) interrupt 0
  54          {
  55   1      	DISABLE_INTERRUPTS;
C51 COMPILER V6.20c  ISR                                                                   05/19/2003 01:05:01 PAGE 2   

  56   1      	ISRx_FN_USB();
  57   1      	ENABLE_INTERRUPTS;
  58   1      }
  59          
  60          void ISRx_FN_USB()
  61          {
  62   1      	//unsigned int nST;
  63   1      	USHORT   int_low, int_high;
  64   1      	unsigned char nosetup;
  65   1      	//bZBoardFlags.bits.bIN_ISR = 1;
  66   1      	bZBoardFlags.bits.At_IRQL1 = 1;
  67   1      
  68   1      	int_low = ISP1581_ReadInterruptRegisterLow();
  69   1      	int_high = ISP1581_ReadInterruptRegisterHigh();
  70   1      	if(int_low != 0 || int_high != 0)
  71   1          	{
  72   2      		if(int_low & int_busreset)
  73   2      		{
  74   3      			ISP1581_IntClearl(int_busreset);
  75   3      			if(int_low & int_hs_stat)
  76   3      			{
  77   4      				bZBoardFlags.bits.ConnectSpeed = HighSpeed;
  78   4      				bZBoardFlags.bits.bBus_Reset = 1;
  79   4      				int_low &= ~int_hs_stat;
  80   4      				ISP1581_IntClearl(int_hs_stat);
  81   4      				
  82   4      			}
  83   3      			else
  84   3      			{
  85   4      				bZBoardFlags.bits.ConnectSpeed = FullSpeed;
  86   4      				bZBoardFlags.bits.bBus_Reset = 1;
  87   4      				MCU_LED1 = 1;
  88   4      			}
  89   3      		}
  90   2      		if(int_low & int_hs_stat)
  91   2      		{
  92   3      			ISP1581_IntClearl(int_hs_stat);
  93   3      			if(bZBoardFlags.bits.ConnectSpeed == FullSpeed)
  94   3      			{
  95   4      				bZBoardFlags.bits.ConnectSpeed = HighSpeed;
  96   4      				bZBoardFlags.bits.bBus_Reset = 1;
  97   4      				MCU_LED1 = 0;
  98   4      			}
  99   3      		}
 100   2      		else if(int_low & int_susp)
 101   2      			{Isr_SuspendChange();}
 102   2      		else if(int_low & int_resume)
 103   2      			{Isr_Resume();}
 104   2      		else if(int_low & int_dma)
 105   2      			{Isr_DmaEot();}
 106   2      		else if(int_low & (int_sof|int_psof))
 107   2      			{Isr_SOF();}
 108   2      		else {
 109   3      				if(int_low & int_ep0set)
 110   3      					{nosetup = 0x0;}
 111   3      				else
 112   3      					{nosetup = 0x1;}
 113   3      				if(int_low & int_ep1rx)
 114   3      					Isr_Ep01rxDone();
 115   3      				if(int_low & int_ep1tx)
 116   3      					Isr_Ep01txDone();
 117   3      				if(int_low & int_ep2rx)
C51 COMPILER V6.20c  ISR                                                                   05/19/2003 01:05:01 PAGE 3   

 118   3      					Isr_Ep02rxDone();
 119   3      				if(int_low & int_ep2tx)
 120   3      					Isr_Ep02txDone();
 121   3      				if(int_high & int_ep3rx)
 122   3      					Isr_Ep03rxDone();
 123   3      				if(int_high & int_ep3tx)
 124   3      					Isr_Ep03txDone();
 125   3      	// *************************** Control pipe *******************************
 126   3      				if(int_low & int_ep0tx)
 127   3      					Isr_Ep00TxDone(nosetup);
 128   3      
 129   3      				if(int_low & int_ep0rx)     /*Keep Control Out of EP0 at Highest priority*/
 130   3      					Isr_Ep00RxDone(nosetup);
 131   3      
 132   3      				if(nosetup == 0)
 133   3      					Isr_EP0Setup();
 134   3      	//**************************** not used endpoints*************************
 135   3      				if(int_high & int_ep4rx)
 136   3      					Isr_Ep04rxDone();
 137   3      				if(int_high & int_ep4tx)
 138   3      					Isr_Ep04txDone();
 139   3      			}
 140   2      
 141   2      	}
 142   1      	bZBoardFlags.bits.At_IRQL1 = 0;
 143   1      
 144   1      }
 145          ///////////////////////////////////////////////////////////////////////////
 146          void Isr_SuspendChange(void)
 147          {
 148   1      	ISP1581_IntClearl(int_susp);
 149   1      	ISP1581_GoSuspend();
 150   1      }
 151          
 152          void Isr_Resume(void)
 153          {
 154   1      	ISP1581_UnlockDevice();
 155   1      	ISP1581_SendResume();
 156   1      	ISP1581_IntClearl(int_resume);
 157   1      }
 158          
 159          void Isr_DmaEot(void)
 160          {
 161   1      	unsigned short dmaeot_reason;// dma_width16, isp1581_dma_counter_remains;
 162   1      	unsigned int c;
 163   1      	dmaeot_reason =	ISP1581_GetDMAInt();
 164   1      	ISP1581_SetDMAInt(dmaeot_reason);//clear DMA interrupt ;
 165   1      	ISP1581_IntClearl(int_dma);
 166   1      	
 167   1      	//CPLD_ctl(dmactl_stop);
 168   1      	//ISP1581_SetDMACMD(dmacmd_reset);
 169   1      	//ISP1581_SetDMAIntMask(0);
 170   1      	//c = ISP1581_GetIntEnableLow();
 171   1      	//ISP1581_SetIntEnableLow(c|bulkinendpointinterrupt|bulkoutendpointinterrupt);
 172   1      	
 173   1      	//清除中断标志
 174   1      	
 175   1      	bZBoardFlags.bits.dma_state = DMA_IDLE;
 176   1      }
*** WARNING C280 IN LINE 162 OF ISR.C: 'c': unreferenced local variable
 177          
 178          //true iso
C51 COMPILER V6.20c  ISR                                                                   05/19/2003 01:05:01 PAGE 4   

 179          void Isr_SOF(void)
 180          {
 181   1      	ISP1581_IntClearl(int_sof|int_psof);
 182   1      }
 183          
 184          void Isr_EP0Setup(void)
 185          {
 186   1      	// Getting Setup Packet
 187   1      	ISP1581_IntClearl(int_ep0set);
 188   1      	SetupToken_Handler();
 189   1      }
 190          void Isr_Ep00RxDone(unsigned char nosetup)
 191          {
 192   1      	UCHAR       i;
 193   1      	unsigned short len;
 194   1      	
 195   1      	//ISP1581_IntClearl(int_ep0rx);
 196   1      	switch (bZBoardFlags.bits.DCP_state)
 197   1      	{
 198   2      	case USBFSM4DCP_DATAOUT:
 199   2      		
 200   2      		if(ControlData.wLength >= ControlData.wCount)
 201   2      			len = ControlData.wLength - ControlData.wCount;
 202   2      		else
 203   2      			len = 0x0;
 204   2      			
 205   2      		i =ISP1581_ReadControlEndpoint(ControlData.dataBuffer + ControlData.wCount, len);
 206   2      		ControlData.wCount += i;
 207   2      
 208   2      		if(ControlData.wCount <= ControlData.wLength && i <= EP0_PACKET_SIZE)
 209   2      		{
 210   3      			bZBoardFlags.bits.CONTROL_HANDLE_DONE = 1;
 211   3      			bZBoardFlags.bits.DCP_state = USBFSM4DCP_REQUESTPROC;
 212   3      		}
 213   2      		else	// too much data out than expected
 214   2      		{
 215   3      			if(nosetup)
 216   3      			{
 217   4      			ISP1581_StallEP0InControlWrite();
 218   4      			bZBoardFlags.bits.DCP_state = USBFSM4DCP_STALL;
 219   4      			}
 220   3      		}
 221   2      		ISP1581_IntClearl(int_ep0rx);
 222   2      		break;
 223   2      	case USBFSM4DCP_CONTROLREADHANDSHAKE:
 224   2      		bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
 225   2      		ISP1581_IntClearl(int_ep0rx);
 226   2      		break;
 227   2      	case USBFSM4DCP_IDLE:
 228   2      		bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
 229   2      		if(nosetup)
 230   2      			{//MCU_LED0 = 0;
 231   3      			ISP1581_IntClearl(int_ep0rx);}
 232   2      		break;
 233   2      	case USBFSM4DCP_STALL:
 234   2      		if(nosetup)
 235   2      			ISP1581_IntClearl(int_ep0rx);
 236   2      		break;
 237   2      	default:
 238   2      	if(nosetup)
 239   2      		{
 240   3      		
C51 COMPILER V6.20c  ISR                                                                   05/19/2003 01:05:01 PAGE 5   

 241   3      		ISP1581_StallEP0InControlWrite();
 242   3      		bZBoardFlags.bits.DCP_state = USBFSM4DCP_STALL;
 243   3      		}
 244   2      		break;
 245   2      	}
 246   1      }
 247          void Isr_Ep00TxDone(unsigned char nosetup)
 248          {
 249   1      	short i;
 250   1      	ISP1581_IntClearl(int_ep0tx);
 251   1      	switch (bZBoardFlags.bits.DCP_state)
 252   1      	{
 253   2      	case USBFSM4DCP_CONTROLREADHANDSHAKE:
 254   2      		ISP1581_ControlReadHandshake();
 255   2      		bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE;
 256   2      		break;
 257   2      	case USBFSM4DCP_CONTROLWRITEHANDSHAKE:
 258   2      		bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
 259   2      		break;
 260   2      	case USBFSM4DCP_DATAIN:
 261   2      		i = ControlData.wLength - ControlData.wCount;
 262   2      		if( i >= EP0_PACKET_SIZE)
 263   2      		{
 264   3      			ISP1581_WriteControlEndpoint(ControlData.pData + ControlData.wCount, EP0_PACKET_SIZE);
 265   3      			ControlData.wCount += EP0_PACKET_SIZE;
 266   3      			bZBoardFlags.bits.DCP_state = USBFSM4DCP_DATAIN;
 267   3      		}
 268   2      		else if( i != 0)
 269   2      		{
 270   3      			ISP1581_WriteControlEndpoint(ControlData.pData + ControlData.wCount, i);
 271   3      			ControlData.wCount += i;
 272   3      			bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE;
 273   3      		}
 274   2      		else if (i == 0)
 275   2      		{
 276   3      			ISP1581_WriteControlEndpoint(0, 0);
 277   3      			bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE;
 278   3      		}
 279   2      		break;
 280   2      	case USBFSM4DCP_STALL:
 281   2      		bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
 282   2      		break;
 283   2      	case USBFSM4DCP_IDLE:
 284   2      		//MCU_LED0=0;
 285   2      		break;
 286   2      	case USBFSM4DCP_REQUESTPROC:
 287   2      		
 288   2      		break;
 289   2      	case USBFSM4DCP_SETUPPROC:
 290   2      		
 291   2      		break;
 292   2      	case USBFSM4DCP_DATAOUT:
 293   2      		
 294   2      		break;
 295   2      	default:
 296   2      // do nothing, maybe just 1st nak for control in.
 297   2      		if(nosetup)
 298   2      		{
 299   3      			//MCU_LED0=0;
 300   3      			ISP1581_StallEP0InControlRead();
 301   3      			bZBoardFlags.bits.DCP_state = USBFSM4DCP_STALL;
 302   3      		}
C51 COMPILER V6.20c  ISR                                                                   05/19/2003 01:05:01 PAGE 6   

 303   2      		break;
 304   2      	
 305   2      	}
 306   1      }
 307          
 308          void Isr_Ep01rxDone(void)
 309          {
 310   1      	unsigned short len;
 311   1      	ISP1581_IntClearl(int_ep1rx);
 312   1      	len= ISP1581_ReadBulkEndpoint(EPINDEX4EP01OUT,GenEpBuf,EP1_PACKET_SIZE);
 313   1      }
 314          void Isr_Ep01txDone(void)
 315          {
 316   1      	ISP1581_IntClearl(int_ep1tx);
 317   1      }
 318          void Isr_Ep02rxDone(void)
 319          {
 320   1      	unsigned short len;
 321   1      	ISP1581_IntClearl(int_ep2rx);
 322   1      	len= ISP1581_ReadBulkEndpoint(EPINDEX4EP02OUT,GenEpBuf,maxepsize_FS);
 323   1      
 324   1      }
 325          void Isr_Ep02txDone(void)
 326          {
 327   1      	ISP1581_IntClearl(int_ep2tx);
 328   1      }
 329          void Isr_Ep03rxDone(void)
 330          {
 331   1      	ISP1581_IntClearh(int_ep3rx);
 332   1      }
 333          void Isr_Ep03txDone(void)
 334          {
 335   1      	ISP1581_IntClearh(int_ep3tx);
 336   1      }
 337          void Isr_Ep04rxDone(void)
 338          {
 339   1      	unsigned short len;
 340   1      	ISP1581_IntClearh(int_ep4rx);
 341   1      	len= ISP1581_ReadBulkEndpoint(EPINDEX4EP04OUT,GenEpBuf,EP4_PACKET_SIZE);
 342   1      	ioRequest.bCommand=GenEpBuf[0];
 343   1      	bZBoardFlags.bits.bLED = 1;
 344   1      	
 345   1      }
 346          void Isr_Ep04txDone(void)
 347          {
 348   1      	ISP1581_IntClearh(int_ep4tx);	
 349   1      }
 350          
 351          
 352          ///////////////////////////////////////////////////////////////////////////
 353          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1011    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      19
   IDATA SIZE       =     64    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V6.20c  ISR                                                                   05/19/2003 01:05:01 PAGE 7   


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

⌨️ 快捷键说明

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