void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
//bEndp 端点命令数据0x00-0x05
//bStalled 端点状态数据
{
if(bEndp > 0x05)
{
bEndp = 0x00;
}
OUTPortb(D12_COMMAND,0x40 + bEndp); //向PDIUSBD12输出命令
OUTPortb(D12_DATA,bStalled); //输出命令数据
//设置端点状态寄存器:
//[7:1]:保留
//[0]:停止
}
另外 外部终端程序是这样的,
怎么加进去 ?
void __irq EINT0_ISR(void)
{
unsigned short int_reg,temp;
bEPPflags.bits.in_ISR = 1;
int_reg = D12_ReadInterruptRegister();
temp = 0x0000;
Uart_Printf("Interrupt Register value:%x\n",int_reg);
if(int_reg != 0)
{
if(int_reg & D12_InterruptRegister_Suspend)
{
bEPPflags.bits.suspend = 1;
}
if(int_reg & D12_InterruptRegister_BusReset)
{
bEPPflags.bits.bus_Reset = 1;
}
if(int_reg & D12_InterruptRegister_DMA_EOT)
{
}
if(int_reg & D12_InterruptRegister_Endpoint_2_IN)
{
D12_ReadLastTransactionStatus(D12_COMMAND_Endpoint_2_IN);
}
if(int_reg & D12_InterruptRegister_Endpoint_2_OUT)
{
D12_ReadLastTransactionStatus(D12_COMMAND_Endpoint_2_OUT);
}
if(int_reg & D12_InterruptRegister_Endpoint_1_IN)
{
D12_ReadLastTransactionStatus(D12_COMMAND_Endpoint_1_IN);
}
if(int_reg & D12_InterruptRegister_Endpoint_1_OUT)
{
D12_ReadLastTransactionStatus(D12_COMMAND_Endpoint_1_OUT);
}
if(int_reg & D12_InterruptRegister_Endpoint_0_IN)
{
D12_ReadLastTransactionStatus(D12_COMMAND_Endpoint_0_IN);
}
if(int_reg & D12_InterruptRegister_Endpoint_0_OUT)
{
D12_ReadLastTransactionStatus(D12_COMMAND_Endpoint_0_OUT);
}
}
bEPPflags.bits.in_ISR = 0;
ClrIrqPnd(BIT_EINT0); //清中断
//关中断
//DisableIrq(BIT_EINT0);
}