📄 isr.c
字号:
/***********
revision:resume,suspend,idlecnt
**********/
#include <stdio.h>
#include "reg51.h"
#include "absacc.h"
#include "FUSB200.h"
#include "type.h"
//extern globalTest;
void irq_int(void)
{
//detect resume Interrupt
//if(XBYTE[FUSB_REG_INT_SOURCE7] & 0x08)
//{
// XBYTE[FUSB_REG_INT_SOURCE7] &= 0xf7;// Clear resume interrupt
// }
//Detect USB reset interrupt
if((XBYTE[FUSB_REG_INT_SOURCE7] & FUSB_INT_SOURCE7_USBRST_INT))
{
//delay 10ms for reseting USB
//delay();
XBYTE[FUSB_REG_INT_SOURCE7] = 0x00;//Clear the USB reset interrupt
init_fusb();//Initialize FUSB
init_interrupt();//Initialize FIFO
}
//EndPoint0 SETUP interrupt(INT_SCR0)
if(XBYTE[FUSB_REG_INT_GROUP] & 0x01)
{
//EndPoint0 interrupt service
ep0_int_service();
// XBYTE[FUSB_REG_CX_CSR] |= 0x04;//Stall Endpoint0,it will be cleared by next setup transaction.
}
//EndPoint1 IN interrupt(INT_SCR5)
if(XBYTE[FUSB_REG_INT_GROUP] & 0x20)//FIFO0 is ready to be written
{
//EndPoint1 interrupt service(IN)
ep1_int_service();
}
//EndPoint2 OUT interrupt(INT_SCR1)
if(XBYTE[FUSB_REG_INT_GROUP] & 0x04)//FIFO6 is ready to be read & short packet data is recived
{
//EndPoint2 interrupt service(OUT)
ep2_int_service();
}
//Check suspend interrupt
//if(XBYTE[FUSB_REG_INT_SOURCE7] & 0x04)
// {
//suspend delay = 5ms
// XBYTE[FUSB_REG_INT_SOURCE7] &= 0xfb;//Clear suspend interrupt
// XBYTE[FUSB_REG_MAIN_CTL] |= 0x08;//Go suspend:set GOSUSP
// XBYTE[FUSB_REG_IEP1_XPSZ_H] |= 0x08;//Stall IN Endpointx(x=1)
// XBYTE[FUSB_REG_OEP2_XPSZ_H] |= 0x08;//Stall OUT Endpointx(x=2)
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -