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

📄 main.lst

📁 TX-1C开发板PDIUSBD12驱动开发包
💻 LST
📖 第 1 页 / 共 2 页
字号:
 218   1      
 219   1      
 220   1      	while( TRUE )
 221   1      	{
 222   2      
 223   2      		if (bEPPflags.bits.timer)
 224   2      		{
 225   3      			DISABLE;//定时器溢出,检测按键状态
 226   3      			bEPPflags.bits.timer = 0;
 227   3      			ENABLE;
 228   3      
 229   3      			if(bEPPflags.bits.configuration)//设备未配置返回
 230   3      				check_key_LED();		//检测键盘
 231   3      		}
 232   2               if(flag==1){
 233   3                send(A,H,C,D,E,F);}
 234   2      //        D12_WriteEndpoint(3,1,'1');	}
 235   2      		if (bEPPflags.bits.bus_reset) 
 236   2      		{//设备复位处理
 237   3      			DISABLE;
 238   3      			bEPPflags.bits.bus_reset = 0;
 239   3      			ENABLE;
 240   3      		
 241   3      		} // if bus reset
C51 COMPILER V6.12  MAIN                                                                   06/23/2007 09:21:32 PAGE 5   

 242   2      
 243   2      		if(bEPPflags.bits.ep1_rxdone)  //端点1输出
 244   2      		{  //控制LED/数码管/
 245   3      		/*
 246   3      		  GenEpBuf[0]    操作对象  
 247   3      			  1			   LED
 248   3      			  2			   数码管
 249   3      			  3			   锋鸣器
 250   3      			  0x55		   读IIC
 251   3      		*/
 252   3      		 DISABLE;
 253   3      		 bEPPflags.bits.ep1_rxdone=0;
 254   3      		 ENABLE;
 255   3      		 if(GenEpBuf[0]==1){P1=GenEpBuf[1];} //LEDDATA=GenEpBuf[1];
 256   3      		 if(GenEpBuf[0]==2) 
 257   3                {
 258   4       			if(GenEpBuf[1]==0)display(0);
 259   4      			if(GenEpBuf[1]==1)display(1);
 260   4      			if(GenEpBuf[1]==2)display(2);
 261   4      			if(GenEpBuf[1]==3)display(3);
 262   4      			if(GenEpBuf[1]==4)display(4);
 263   4      			if(GenEpBuf[1]==5)display(5);
 264   4      			if(GenEpBuf[1]==6)display(6);
 265   4      			if(GenEpBuf[1]==7)display(7);
 266   4      			if(GenEpBuf[1]==8)display(8);
 267   4      			if(GenEpBuf[1]==9)display(9);
 268   4      			if(GenEpBuf[1]==10)display(10);
 269   4      			if(GenEpBuf[1]==11)display(11);
 270   4      			if(GenEpBuf[1]==12)display(12);
 271   4      			if(GenEpBuf[1]==13)display(13);
 272   4      			if(GenEpBuf[1]==14)display(14);
 273   4      			if(GenEpBuf[1]==15)display(15);
 274   4      		  }
 275   3      		 if(GenEpBuf[0]==4)
 276   3                 {A=GenEpBuf[1];
 277   4      		    H=GenEpBuf[2];
 278   4      			C=GenEpBuf[3];
 279   4      			D=GenEpBuf[4];
 280   4      			E=GenEpBuf[5];
 281   4      			F=GenEpBuf[6];
 282   4                  flag=1;
 283   4      
 284   4                 }
 285   3      		 if(GenEpBuf[0]==3)beep=GenEpBuf[1]&0x01;
 286   3      		 if(GenEpBuf[0]==0x55)
 287   3      		 {
 288   4      //		  Read24c02_nByte(GenEpBuf[1],10,EpBuf) ;
 289   4      		  D12_WriteEndpoint(5, 10, EpBuf);
 290   4      		 }
 291   3      		// if GenEpBuf[0]=0;
 292   3      		}
 293   2      	
 294   2      
 295   2      		if (bEPPflags.bits.setup_packet)
 296   2      		{//Setup包处理
 297   3      			DISABLE;
 298   3      			bEPPflags.bits.setup_packet = 0;
 299   3      			ENABLE;
 300   3      			control_handler();//调用请求处理子程序
 301   3      		} // if setup_packet
 302   2      
 303   2      		if(bEPPflags.bits.main_rxdone)			//端点2输出
C51 COMPILER V6.12  MAIN                                                                   06/23/2007 09:21:32 PAGE 6   

 304   2      		{
 305   3      			DISABLE;
 306   3      			bEPPflags.bits.main_rxdone=0;
 307   3      			ENABLE;
 308   3      			EndpointII();//操作LCD和I2C
 309   3      		} //if main_rxdone
 310   2      	} // Main Loop
 311   1      }
 312          
 313          //返回stall应答
 314          void stall_ep0(void)
 315          {
 316   1      	D12_SetEndpointStatus(0, 1);
 317   1      	D12_SetEndpointStatus(1, 1);
 318   1      }
 319          
 320          //断开USB总线
 321          void disconnect_USB(void)
 322          {
 323   1      	// Initialize D12 configuration
 324   1      	D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
 325   1      }
 326          
 327          //连接USB总线
 328          void connect_USB(void)
 329          {
 330   1      	// reset event flags
 331   1      	DISABLE;
 332   1      	bEPPflags.value = 0;//清除所有状态
 333   1      	ENABLE;
 334   1      
 335   1      	// V2.1 enable normal+sof interrupt
 336   1      	D12_SetDMA(D12_ENDP4INTENABLE | D12_ENDP5INTENABLE);
 337   1      
 338   1      	// Initialize D12 configuration
 339   1      	D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
 340   1      }
 341          
 342          //重新连接到USB总线
 343          void reconnect_USB(void)
 344          {
 345   1      	unsigned long clk_cnt;
 346   1      	disconnect_USB();
 347   1      	clk_cnt = ClockTicks;
 348   1      	while(ClockTicks < clk_cnt + 20);
 349   1      	connect_USB();
 350   1      }
 351          
 352          //恢复到未配置状态
 353          void init_unconfig(void)
 354          {
 355   1      	D12_SetEndpointEnable(0);	/* Disable all endpoints but EPP0. */
 356   1      }
 357          
 358          //设置配置状态
 359          void init_config(void)
 360          {
 361   1      	D12_SetEndpointEnable(1);	/* Enable  generic/iso endpoints. */
 362   1      }
 363          
 364          //从端点号1发送数据
 365          void single_transmit(unsigned char * buf, unsigned char len)
C51 COMPILER V6.12  MAIN                                                                   06/23/2007 09:21:32 PAGE 7   

 366          {
 367   1      	if( len <= EP0_PACKET_SIZE) {
 368   2      		D12_WriteEndpoint(1, len, buf);
 369   2      	}
 370   1      }
 371          
 372          //发送端点号1建立代码
 373          void code_transmit(unsigned char code * pRomData, unsigned short len)
 374          {
 375   1      	ControlData.wCount = 0;
 376   1      	if(ControlData.wLength > len)
 377   1      		ControlData.wLength = len;
 378   1      
 379   1      	ControlData.pData = pRomData;
 380   1      	if( ControlData.wLength >= EP0_PACKET_SIZE) {
 381   2      		D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);//发送16字节数据
 382   2      		ControlData.wCount += EP0_PACKET_SIZE;
 383   2      		DISABLE;
 384   2      		bEPPflags.bits.control_state = USB_TRANSMIT;
 385   2      		ENABLE;
 386   2      	}
 387   1      	else {
 388   2      		D12_WriteEndpoint(1, ControlData.wLength, pRomData);//发送16字节内数据
 389   2      		ControlData.wCount += ControlData.wLength;
 390   2      		DISABLE;
 391   2      		bEPPflags.bits.control_state = USB_IDLE;
 392   2      		ENABLE;
 393   2      	}
 394   1      }
 395          
 396          //LED和按键处理子程序
 397          void check_key_LED(void)
 398          {
 399   1      	static unsigned char c ;
 400   1      	D12_WriteEndpoint(3,1,&c);	   //输入键盘数据
 401   1      
 402   1      
 403   1      }
 404          
 405          
 406          void EndpointII()//2*16LCD/IIC
 407          {
 408   1      
 409   1      // if(EpBuf[0]==1)  PrintUsb(EpBuf+2,EpBuf[1]); //LCD
 410   1      // if(EpBuf[0]==2)  Write24c02_nByte(EpBuf[2],EpBuf[1],EpBuf+3);//IIC
 411   1      // EpBuf[0]=0;
 412   1      }
 413          
 414          //请求处理子程序	处理Setup包
 415          void control_handler()
 416          {
 417   1      	unsigned char type, req;
 418   1      	type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;
 419   1      	req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;
 420   1      	if (type == USB_STANDARD_REQUEST)
 421   1      		(*StandardDeviceRequest[req])();//调用标准请求
 422   1      	else if (type == USB_VENDOR_REQUEST)
 423   1      		(*VendorDeviceRequest[req])();//调用厂商请求
 424   1      	else
 425   1      		stall_ep0();
 426   1      }

C51 COMPILER V6.12  MAIN                                                                   06/23/2007 09:21:32 PAGE 8   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    940    ----
   CONSTANT SIZE    =    112    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36      14
   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 + -