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

📄 xxgmain.lst

📁 一个51写的usb程序 测试过的
💻 LST
📖 第 1 页 / 共 2 页
字号:
 241          {
C51 COMPILER V6.20c  XXGMAIN                                                               01/16/2003 10:36:17 PAGE 5   

 242   1      	D12_SetEndpointEnable(1);	/* Enable  generic/iso endpoints. */
 243   1      }
 244          //--------------------------
 245          
 246          void single_transmit(unsigned char * buf, unsigned char len)
 247          {
 248   1      	if( len <= EP0_PACKET_SIZE) {
 249   2      		D12_WriteEndpoint(1, len, buf);
 250   2      	}
 251   1      }
 252          
 253          void code_transmit(unsigned char code * pRomData, unsigned short len)
 254          {
 255   1      	ControlData.wCount = 0;
 256   1      	if(ControlData.wLength > len)
 257   1      		ControlData.wLength = len;
 258   1      
 259   1      	ControlData.pData = pRomData;
 260   1      	if( ControlData.wLength >= EP0_PACKET_SIZE) {	// 如果发送代码大于包长度
 261   2      		D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);
 262   2      		ControlData.wCount += EP0_PACKET_SIZE;
 263   2      
 264   2      		DISABLE;
 265   2      		bEPPflags.bits.control_state = USB_TRANSMIT;
 266   2      		ENABLE;
 267   2      	}
 268   1      	else {						//发送代码小于包长度
 269   2      		D12_WriteEndpoint(1, ControlData.wLength, pRomData);
 270   2      		ControlData.wCount += ControlData.wLength;
 271   2      		DISABLE;
 272   2      		bEPPflags.bits.control_state = USB_IDLE;
 273   2      		ENABLE;
 274   2      	}
 275   1      }
 276          
 277          //---------------------------
 278          
 279          void setup_dma()
 280          {
 281   1      	ioSize = ioRequest.uSize;
 282   1      	ioCount = 0;
 283   1      
 284   1      	DISABLE;
 285   1      	bEPPflags.bits.dma_state = DMA_RUNNING;
 286   1      	ENABLE;
 287   1      
 288   1      	single_transmit(0, 0);
 289   1      
 290   1      	if(ioRequest.bCommand & 0x1) {
 291   2      		if(ioSize > 64 || ioSize == 0) {
 292   3      			//if(bNoRAM)
 293   3      				D12_WriteEndpoint(5, 64, EpBuf);
 294   3      			//else
 295   3      			//	D12_WriteEndpoint(5, 64, MainEpBuf);
 296   3      			ioCount += 64;
 297   3      		}
 298   2      		else {
 299   3      			//if(bNoRAM)
 300   3      				D12_WriteEndpoint(5, ioSize, EpBuf);
 301   3      			//else
 302   3      			//	D12_WriteEndpoint(5, ioSize, MainEpBuf);
 303   3      			ioCount += ioSize;
C51 COMPILER V6.20c  XXGMAIN                                                               01/16/2003 10:36:17 PAGE 6   

 304   3      		}
 305   2      	}
 306   1      }
 307          
 308          //------------------------------
 309          void control_handler()
 310          {
 311   1      	unsigned char type, req;
 312   1      	
 313   1      	type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;	//0x60
 314   1      	req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;		//0x0F
 315   1      
 316   1      	//help_devreq(type, req); // print out device request
 317   1      
 318   1      	if (type == USB_STANDARD_REQUEST)
 319   1      		(*StandardDeviceRequest[req])();
 320   1      	else if (type == USB_VENDOR_REQUEST)
 321   1      		(*VendorDeviceRequest[req])();
 322   1      	else
 323   1      		stall_ep0();
 324   1      	
 325   1      }
 326          
 327          
 328          //-------------------------------------------
 329          
 330          //-------------------------------------------
 331          
 332          void main()
 333          {
 334   1      	unsigned char key, i;
 335   1      	//bNoRam=1;
 336   1      	//DISABLE;
 337   1      	init_port();
 338   1      	init_serial();
 339   1      	init_timer0(); 
 340   1      	EA = 0; 
 341   1      	//for test
 342   1      	MCU_LED0=0;
 343   1      	MCU_LED1=0;
 344   1      	MCU_LED0=1;
 345   1      	MCU_LED1=1;
 346   1      	//--------------
 347   1      	//printf("Re-connect PDIUSBD12 evaluation board to USB.\n");
 348   1      	IE0=0;
 349   1      	IT0=0;
 350   1      	EX0=1;
 351   1      	//--------------------------
 352   1      //	MCU_D12RST = 0;
 353   1      //	MCU_D12RST = 1;
 354   1      	//--------------------
 355   1      	
 356   1      	MCU_D12CS = 0x1;
 357   1      	//-----------------------	
 358   1      	
 359   1      	//for(i = 0; i < 16; i ++)
 360   1      	//	MainEpBuf[i] = i;
 361   1      	//for(i = 0; i < 16; i ++) {
 362   1      	//	if(MainEpBuf[i] != i)
 363   1      	//		break;
 364   1      	//	}
 365   1      	//if(i < 16)
C51 COMPILER V6.20c  XXGMAIN                                                               01/16/2003 10:36:17 PAGE 7   

 366   1      		bNoRAM = TRUE;
 367   1      	//else
 368   1      	//	bNoRAM = FALSE;
 369   1      	
 370   1      	//--------------------------
 371   1      	MCU_D12CS = 0x0;
 372   1      	
 373   1      	//bNoRam=TRUE;
 374   1      	//---------------------------
 375   1      	
 376   1      	//----------------------------
 377   1      	/*
 378   1      	if(MCU_SWM0 == 0 && MCU_SWM1 == 0) {
 379   1      		MCU_D12RST = 0;
 380   1      		MCU_D12RST = 1;
 381   1      		D12_SetDMA(0x0);
 382   1      	}
 383   1      	*/
 384   1      	//if((i = D12_GetDMA()) == 0xC3) 
 385   1      //		{D12_SendResume();}
 386   1      	//else {
 387   1      	//	bEPPflags.value = 0;
 388   1      	
 389   1      		/* Power on reset, lightup LEDs for 1 sec,
 390   1      		   disconnect and reconnect Soft-Connect */
 391   1      		//printf("\nPDIUSBD12 SMART evaluation board firmware V3.0.\n");
 392   1      	i=D12_ReadInterruptRegister();
 393   1      	i=0;
 394   1      	//i=D12_ReadEndpointStatus(0);
 395   1      	i=D12_ReadLastTransactionStatus(0);
 396   1      	i=D12_ReadLastTransactionStatus(1);
 397   1      	i=D12_ReadLastTransactionStatus(2);
 398   1      	i=D12_ReadLastTransactionStatus(3);
 399   1      	i=D12_ReadLastTransactionStatus(4);
 400   1      	i=D12_ReadLastTransactionStatus(5);
 401   1      	ENABLE;
 402   1      	reconnect_USB();
 403   1      	ENABLE;	
 404   1       //		}
 405   1       	//=======================================
 406   1       	/* Main program loop */
 407   1      	
 408   1      	while( TRUE ){
 409   2      	
 410   2      		if (bEPPflags.bits.timer){
 411   3      			DISABLE;
 412   3      			bEPPflags.bits.timer = 0;
 413   3      			ENABLE;
 414   3      
 415   3      			if(bEPPflags.bits.configuration)
 416   3      				check_key_LED();
 417   3      		}
 418   2      
 419   2      		if (bEPPflags.bits.bus_reset) {
 420   3      			DISABLE;
 421   3      			bEPPflags.bits.bus_reset = 0;
 422   3      			ENABLE;
 423   3      			// Release D12's SUSPEND pin after bus reset
 424   3      			// Enable 74HCT123 pulse generation before disconnect
 425   3      			///D12SUSPD = 1;
 426   3      			D12SUSPD=0;
 427   3      		} // if bus reset
C51 COMPILER V6.20c  XXGMAIN                                                               01/16/2003 10:36:17 PAGE 8   

 428   2      
 429   2      		if (bEPPflags.bits.suspend) {
 430   3      			DISABLE;
 431   3      			bEPPflags.bits.suspend= 0;
 432   3      			ENABLE;
 433   3      
 434   3      			if(D12SUSPD == 1) {
 435   4      				D12SUSPD = 0;
 436   4      				P0 = 0xFF;
 437   4      				P1 = 0xFF;
 438   4      				P2 = 0xFF;
 439   4      				P3 = 0xFF;
 440   4      				D12_SetDMA(0xC3);
 441   4      				D12SUSPD = 1;
 442   4      				PCON |= 0x02;
 443   4      				while (1);
 444   4      		
 445   4      			}
 446   3      		
 447   3      		} // if suspend change
 448   2      
 449   2      		if (bEPPflags.bits.setup_packet){
 450   3      			DISABLE;
 451   3      			bEPPflags.bits.setup_packet = 0;
 452   3      			ENABLE;
 453   3      			control_handler();
 454   3      			//D12SUSPD = 1;
 455   3      			D12SUSPD=0;
 456   3      		} // if setup_packet
 457   2      		
 458   2      		if(bEPPflags.bits.setup_dma != 0) {
 459   3      			DISABLE;
 460   3      			bEPPflags.bits.setup_dma --;
 461   3      			ENABLE;
 462   3      			setup_dma();
 463   3      		} // if setup_dma
 464   2      		
 465   2      	} // Main Loop
 466   1      
 467   1      	//on_exit();
 468   1      	//=======================================	
 469   1       
 470   1      }
*** WARNING C280 IN LINE 334 OF XXGMAIN.C: 'key': unreferenced local variable
 471          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    770    ----
   CONSTANT SIZE    =     96    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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