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

📄 usb.#1

📁 silabs USB c8051f321 ,DAB USB dongle的资料,已经可以量产的东西
💻 #1
字号:


#include <c8051f320.h>		//	Header file for SiLabs c8051f320  
#include "usb_api.h"		//	Header file for USB_API.lib

 
extern void Dab_Read_Register(int reg_addr,int *ptrdata);
extern void Dab_Write_Register(int reg_addr,int reg_data);

extern void DabFM_Read_Register(int reg_addr,int *ptrdata);
extern void DabFM_Write_Register(int reg_addr,int reg_data);


extern xdata unsigned char command_packet[8];  
extern unsigned char access_data_stream;


//ISR for USB_API, run when API interrupts are enabled, and an interrupt is received

void 	USB_API_ISR(void)	interrupt	16

{

	int register_addr;
	int register_data;
	unsigned char read_reg_data[8];//add preamble 0a0b0c0d0e0f when read registers

	BYTE	INTVAL	=	Get_Interrupt_Source();	//	type of API interrupts

	read_reg_data[0]=0x0a;
	read_reg_data[1]=0x0b;
	read_reg_data[2]=0x0c;
	read_reg_data[3]=0x0d;
	read_reg_data[4]=0x0e;
	read_reg_data[5]=0x0f;

	if (INTVAL	&	RX_COMPLETE)				
	{
		Block_Read(command_packet, 8);//8个字节

		if((command_packet[0]==0xaa)&&(command_packet[1]==0xbb))
		{
			if(command_packet[2] == 0x00)//DAB
			{	
			   switch(command_packet[3])
			   {
			   	case 0x00:// write
						register_addr=command_packet[4]<<8;//high 8 bit
						register_addr=register_addr|command_packet[5];

						register_data=command_packet[6]<<8;
						register_data=register_data|command_packet[7];
                        //EX0=0;
						Dab_Write_Register(register_addr,register_data);
						//EX0=1;
				 break;

  				case 0x11://read
						register_addr=command_packet[4]<<8;//high 8 bit
						register_addr=register_addr|command_packet[5];
						//EX0=0;
						Dab_Read_Register(register_addr,&register_data);
						//EX0=1;
						read_reg_data[7]= register_data & 0x00ff;
						read_reg_data[6] = (register_data >> 8) & 0x00ff;

						Block_Write(read_reg_data, 8);
				 break;

			   	case 0x55://access data stream enable
						EX0=1;
				 		access_data_stream=1;
				 break;

  				case 0xaa://access data stream disable
						EX0=0;
					    access_data_stream=0;
				 break;

				default:
				 break;


			   }//end switch
			

			}//end if "DAB"

			if(command_packet[2] == 0x11)//FM
			{	
			   switch(command_packet[3])
			   {
			   	case 0x00:// write
						register_addr=command_packet[4]<<8;//high 8 bit
						register_addr=register_addr|command_packet[5];

						register_data=command_packet[6]<<8;
						register_data=register_data|command_packet[7];
                        //EX0=0;
						DabFM_Write_Register(register_addr,register_data);
						//EX0=1;
				 break;

  				case 0x11://read
						register_addr=command_packet[4]<<8;//high 8 bit
						register_addr=register_addr|command_packet[5];
						//EX0=0;
						DabFM_Read_Register(register_addr,&register_data);
						//EX0=1;
						read_reg_data[7]= register_data & 0x00ff;
						read_reg_data[6] = (register_data >> 8) & 0x00ff;

						Block_Write(read_reg_data, 8);
				 break;

				default:
				 break;


			   }//end switch


				

			}//end if "FM"





		}//end if((command_packet[0]==0xaa)&&(command_packet[1]==0xbb))


	}//end if (INTVAL & RX_COMPLETE)


}

⌨️ 快捷键说明

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