📄 usb.#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,®ister_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,®ister_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 + -