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

📄 chap9.lst

📁 at89c51+isp1581控制程序(c语言源代码).包含快速模式和高速模式
💻 LST
📖 第 1 页 / 共 2 页
字号:
 310          {
 311          	40,							// bLength
 312          	USB_STRING_DESCRIPTOR_TYPE,				// bDescriptorType
 313          	// String...
 314          	'T', 0, 's', 0, 'i', 0, 'n', 0, 'g', 0, 'h', 0, 'u', 0, 'a', 0, ' ', 0, 'U', 0,
 315          	'n', 0, 'i', 0, 'v', 0, 'e', 0, 'r', 0, 's', 0, 'i', 0, 't', 0, 'y', 0
 316          };
 317          code unsigned char szProduct[] =
 318          {
 319          	90,							// bLength
 320          	USB_STRING_DESCRIPTOR_TYPE,				// bDescriptorType
 321          	// String...
 322          	'U', 0, 'S', 0, 'B', 0, '2', 0, '.', 0, '0', 0, ' ', 0, 'D', 0, 'e', 0, 'v', 0,
 323          	'e', 0, 'l', 0, 'o', 0, 'p', 0, 'e', 0, ' ', 0, 'K', 0, 'i', 0, 't', 0, ' ', 0,
 324          	'B', 0, 'y', 0, ' ', 0, 'X', 0, 'X', 0, 'G', 0, ':', 0, ' ', 0, 'x', 0, 'x', 0,
 325          	'g', 0, 'a', 0, 'n', 0, 'g', 0, '@', 0, '2', 0, '6', 0, '3', 0, '.', 0, 'n', 0,
 326          	'e', 0, 't', 0, ' ', 0, ' ', 0
 327          };
 328          
 329          code unsigned char szSerialNumber[] =
 330          {
 331          	22,										// bLength
 332          	USB_STRING_DESCRIPTOR_TYPE,				// bDescriptorType
 333          	// String...
 334          	'0', 0, '0', 0, '0', 0, '0', 0, '-', 0, '0', 0, '0', 0, '0', 0, '0', 0, '0', 0
 335          };
 336          
 337          code unsigned char szConfiguration[] =
 338          {
 339          	40,										// bLength
 340          	USB_STRING_DESCRIPTOR_TYPE,				// bDescriptorType
 341          	// String...
 342          	'E', 0, 'n', 0, 'd', 0, 'i', 0, 'a', 0, 'n', 0, ' ', 0, 'T', 0, 'e', 0, 'c', 0,
 343          	'h', 0, ' ', 0, 'B', 0, 'y', 0, ':', 0, ' ', 0, 'X', 0, 'X', 0, 'G', 0
 344          };
 345          
 346          code unsigned char szInterface[] =
 347          {
 348          	70,										// bLength
 349          	USB_STRING_DESCRIPTOR_TYPE,				// bDescriptorType
 350          	// String...
 351          	'I', 0, 'n', 0, 't', 0, 'e', 0, 'r', 0, 'f', 0, 'a', 0, 'c', 0, 'e', 0, ' ', 0,
 352          	't', 0, 'o', 0, ' ', 0, 't', 0, 'h', 0, 'e', 0, ' ', 0, 'C', 0, 'P', 0, 'U', 0,
 353          	' ', 0,	'C', 0, 'o', 0, 'o', 0, 'l', 0, 'e', 0, 'r', 0, ' ', 0, 's', 0, 'y', 0,
 354          	's', 0,	't', 0, 'e', 0, 'm', 0
 355          };
 356          
 357          code unsigned char szUserInfo[] =
 358          {
 359          	114,									// bLength
 360          	USB_STRING_DESCRIPTOR_TYPE,				// bDescriptorType
 361          	// String...
 362          	'T', 0, 'h', 0, 'e', 0, ' ', 0, 'o', 0, 'r', 0, 'i', 0, 'g', 0, 'i', 0, 'n', 0,
 363          	'a', 0, 'l', 0,	' ', 0, 'u', 0, 's', 0, 'e', 0, 'r', 0, ' ', 0, 'o', 0, 'f', 0,
 364          	' ', 0,	't', 0,	'h', 0, 'i', 0, 's', 0, ' ', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0,
 365          	'd', 0,	' ', 0,	'i', 0, 's', 0, ' ', 0, 'x', 0, 'u', 0,	'x', 0, 'i', 0,	'g', 0,
C51 COMPILER V6.20c  CHAP9                                                                 05/19/2003 01:05:08 PAGE 7   

 366          	'a', 0,	'n', 0,	'g', 0, ' ', 0, '@', 0, '2', 0, '6', 0,	'3', 0, '.', 0,	'n', 0,
 367          	'e', 0,	't', 0,	' ', 0, ' ', 0, ' ', 0, ' ', 0
 368          };
 369          
 370          /*
 371             //*************************************************************************
 372             // USB Protocol Layer
 373             //*************************************************************************
 374          */
 375          
 376          void reserved(void)
 377          {
 378   1          USB_Stall_EP0();
 379   1      }
 380          
 381          /*
 382             //*************************************************************************
 383             // USB standard device requests
 384             //*************************************************************************
 385          */
 386          void USBClassRequest_GetStatus(void)  //OK
 387          {
 388   1      	unsigned char endp, txdat[2];
 389   1      	unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 390   1      	unsigned char c;
 391   1      	
 392   1      	if (bRecipient == USB_RECIPIENT_DEVICE) {
 393   2      		if(bZBoardFlags.bits.bRemote_Wakeup == 1)
 394   2      			txdat[0] = 3;
 395   2      		else
 396   2      			txdat[0] = 1;
 397   2      		txdat[1]=0;
 398   2      		USB_Single_Transmit(txdat, 2);
 399   2      	} else if (bRecipient == USB_RECIPIENT_INTERFACE) {
 400   2      		txdat[0]=0;
 401   2      		txdat[1]=0;
 402   2      		USB_Single_Transmit(txdat, 2);
 403   2      	} else if (bRecipient == USB_RECIPIENT_ENDPOINT) {
 404   2      		//endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 405   2      		if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 406   2      			//c = USBD12_SelectEndpoint(endp*2 + 1);	/* Control-in */
 407   2      			endp = endp*2 + 1;	/* Control-in */
 408   2      		else
 409   2      			endp = endp*2;	/* Control-out */
 410   2      		
 411   2      		c = ISP1581_GetEndpointStatus(endp);
 412   2      		
 413   2      		txdat[0] = c & epctlfc_stall;   /* Halt */
 414   2      		txdat[1] = 0;
 415   2      		USB_Single_Transmit(txdat, 2);
 416   2      	} else
 417   1      		USB_Stall_EP0();
 418   1      }
 419          
 420          void USBClassRequest_ClearFeature(void) //ok
 421          {
 422   1      	unsigned char endp;
 423   1      	unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 424   1      
 425   1      	if (bRecipient == USB_RECIPIENT_DEVICE
 426   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
 427   2      		DISABLE_INTERRUPTS;
C51 COMPILER V6.20c  CHAP9                                                                 05/19/2003 01:05:08 PAGE 8   

 428   2      		bZBoardFlags.bits.bRemote_Wakeup = 0;
 429   2      		ENABLE_INTERRUPTS;
 430   2      		Chap9_ControlWriteHandshake();
 431   2      	}
 432   1      	else if (bRecipient == USB_RECIPIENT_ENDPOINT
 433   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
 434   2      		endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 435   2      		if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 436   2      			/* clear TX stall for IN on EPn. */
 437   2      			ISP1581_SetEndpointStatus(endp*2 + 1, 0);
 438   2      		else
 439   2      			/* clear RX stall for OUT on EPn. */
 440   2      			ISP1581_SetEndpointStatus(endp*2, 0);
 441   2      		Chap9_ControlWriteHandshake();
 442   2      	} else
 443   1      		USB_Stall_EP0();
 444   1      }
 445          
 446          void USBClassRequest_SetFeature(void)  //OK
 447          {
 448   1      	unsigned char endp;
 449   1      	unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 450   1      	
 451   1      	if (bRecipient == USB_RECIPIENT_DEVICE
 452   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
 453   2      		DISABLE_INTERRUPTS;
 454   2      		bZBoardFlags.bits.bRemote_Wakeup = 1;
 455   2      		ENABLE_INTERRUPTS;
 456   2      		Chap9_ControlWriteHandshake();
 457   2      	}
 458   1      	else if (bRecipient == USB_RECIPIENT_ENDPOINT
 459   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
 460   2      		endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 461   2      		if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 462   2      			/* clear TX stall for IN on EPn. */
 463   2      			endp=endp*2 + 1;
 464   2      		else
 465   2      			/* clear RX stall for OUT on EPn. */
 466   2      			endp=endp*2;
 467   2      		ISP1581_SetEndpointStatus(endp, epctlfc_stall);
 468   2      		//USB_Single_Transmit(0, 0);
 469   2      		Chap9_ControlWriteHandshake();
 470   2      	} else
 471   1      		USB_Stall_EP0();
 472   1      	MCU_LED0 = 0;
 473   1      }
 474          
 475          void USBClassRequest_SetAddress(void)  //ok
 476          {
 477   1      	
 478   1      	ISP1581_SetAddressEnable((UCHAR)(ControlData.DeviceRequest.wValue &
 479   1      				DEVICE_ADDRESS_MASK), 1);
 480   1      	Chap9_ControlWriteHandshake();
 481   1      	
 482   1      }
 483          
 484          void USBClassRequest_GetDescriptor(void)      //ok
 485          {
 486   1      	unsigned char bDescriptor = MSB(ControlData.DeviceRequest.wValue);
 487   1      
 488   1      	if(bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE)
 489   1      	{
C51 COMPILER V6.20c  CHAP9                                                                 05/19/2003 01:05:08 PAGE 9   

 490   2      		if(bZBoardFlags.bits.ConnectSpeed == HighSpeed)
 491   2      			//Chap9_BurstTransmitEP0((PUCHAR)&DeviceDescr_H, sizeof(USB_DEVICE_DESCRIPTOR));
 492   2      			USB_Code_Transmit((unsigned char code *)&DeviceDescr_H, sizeof(USB_DEVICE_DESCRIPTOR));
 493   2      		else
 494   2      			USB_Code_Transmit((unsigned char code *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
 495   2      	}
 496   1      	else if(bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE)
 497   1      	{
 498   2      		if(bZBoardFlags.bits.ConnectSpeed == HighSpeed)
 499   2      			USB_Code_Transmit((unsigned char code *)&ConfigDescr_H, CONFIG_DESCRIPTOR_LENGTH);
 500   2      		else
 501   2      			USB_Code_Transmit((unsigned char code *)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);
 502   2      		
 503   2      	}
 504   1      	else if(bDescriptor == USB_STRING_DESCRIPTOR_TYPE)
 505   1      	{
 506   2      		switch(LSB(ControlData.DeviceRequest.wValue))
 507   2      		{
 508   3      		case 0:
 509   3      			USB_Code_Transmit((unsigned char code *)&StringLANGID, StringLANGID[0]);
 510   3      			break;
 511   3      		case 1:
 512   3      			USB_Code_Transmit((unsigned char code *)szManufacturer, szManufacturer[0]);
 513   3      			break;
 514   3      		case 2:
 515   3      			USB_Code_Transmit((unsigned char code *)szProduct, szProduct[0]);
 516   3      			break;
 517   3      		case 3:
 518   3      			USB_Code_Transmit((unsigned char code *)szSerialNumber, szSerialNumber[0]);
 519   3      			break;
 520   3      		case 4:
 521   3      			USB_Code_Transmit((unsigned char code *)szConfiguration, szConfiguration[0]);
 522   3      			break;
 523   3      		case 5:
 524   3      			USB_Code_Transmit((unsigned char code *)szInterface, szInterface[0]);
 525   3      			break;
 526   3      		case 6:
 527   3      			USB_Code_Transmit((unsigned char code *)szUserInfo, szUserInfo[0]);
 528   3      			break;
 529   3      		default:
 530   3      			USB_Code_Transmit((unsigned char code *)&StringLANGID, 4);
 531   3      			break;
 532   3      		}
 533   2      		
 534   2      	}
 535   1      	else if (bDescriptor ==USB_OTEHRSPEEDCONFIGURATION_DESCRIPTOR_TYPE)
 536   1      		{
 537   2      			if(bZBoardFlags.bits.ConnectSpeed == HighSpeed)
 538   2      			{
 539   3      				//Chap9_BurstTransmitEP0((PUCHAR)&Otherspeed_ConfigDescr_H, CONFIG_DESCRIPTOR_LENGTH);
 540   3      				USB_Code_Transmit((unsigned char code *)&Otherspeed_ConfigDescr_H, CONFIG_DESCRIPTOR_LENGTH);
 541   3      			}
 542   2      			else
 543   2      			{
 544   3      				USB_Stall_EP0();
 545   3      			}
 546   2      			MCU_LED0 = 0;
 547   2      		}
 548   1      	else if (bDescriptor ==USB_DEVICEQUALIFIER_DESCRIPTOR_TYPE)
 549   1      		{
 550   2      		USB_Code_Transmit((unsigned char code *)&DeviceQualifierDescr_H, sizeof(USB_DEVICEQUALIFIER_DESCRIPTOR))
             -;
C51 COMPILER V6.20c  CHAP9                                                                 05/19/2003 01:05:08 PAGE 10  

 551   2      		MCU_LED0 = 0;
 552   2      		}
 553   1      	else
 554   1      	{
 555   2      		USB_Stall_EP0();
 556   2      		
 557   2      	}
 558   1      }
 559          
 560          void USBClassRequest_GetConfiguration(void)  //ok
 561          {
 562   1      	unsigned char c = bZBoardFlags.bits.bConfiguration;
 563   1      
 564   1      	USB_Single_Transmit(&c, 1);
 565   1      }
 566          
 567          void USBClassRequest_SetConfiguration(void) //ok
 568          {
 569   1      	if (ControlData.DeviceRequest.wValue == 0) {
 570   2      		/* put device in unconfigured state */
 571   2      		Chap9_ControlWriteHandshake();
 572   2      		DISABLE_INTERRUPTS;
 573   2      		bZBoardFlags.bits.bConfiguration = 0;
 574   2      		ENABLE_INTERRUPTS;
 575   2      		//USB_Init_Unconfig();
 576   2      	} else if (ControlData.DeviceRequest.wValue == 1) {
 577   2      		/* Configure device */
 578   2      		Chap9_ControlWriteHandshake();
 579   2      
 580   2      	
 581   2      		DISABLE_INTERRUPTS;
 582   2      		bZBoardFlags.bits.bConfiguration = 1;
 583   2      		LED_STATUS=0;
 584   2      		ENABLE_INTERRUPTS;
 585   2      	} else
 586   1      		USB_Stall_EP0();
 587   1      }
 588          
 589          void USBClassRequest_GetInterface(void)  //ok
 590          {
 591   1      	unsigned char txdat = 0;        /* Only/Current interface = 0 */
 592   1      
 593   1      	USB_Single_Transmit(&txdat, 1);
 594   1      }
 595          
 596          void USBClassRequest_SetInterface(void)  //ok
 597          {
 598   1      	if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0)
 599   1      		Chap9_ControlWriteHandshake();
 600   1      	else
 601   1      		USB_Stall_EP0();
 602   1      }
 603          
 604          ///////////////////////////////////////////////////////////////////////////////
 605          void Chap9_ControlWriteHandshake(void)
 606          {
 607   1      	ISP1581_ControlWriteHandshake();
 608   1      	bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLWRITEHANDSHAKE;
 609   1      }
 610          


C51 COMPILER V6.20c  CHAP9                                                                 05/19/2003 01:05:08 PAGE 11  

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    641    ----
   CONSTANT SIZE    =    536    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      10
   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 + -