ISR.C
上传用户:ids068
上传日期:2013-04-04
资源大小:639k
文件大小:4k
源码类别:

USB编程

开发平台:

C/C++

  1. /****************************************Copyright (c)**************************************************
  2. **                               广州周立功单片机发展有限公司
  3. **                                     研    究    所
  4. **                                 http://www.zlgmcu.com
  5. **--------------当前版本修订------------------------------------------------------------------------------
  6. ** 修改人: 刘英斌
  7. ** 日 期:2003-03-13
  8. ** 描 述:ISP1581 V1.0
  9. **------------------------------------------------------------------------------------------------------
  10. ********************************************************************************************************/
  11. #include "standard.h"
  12. #include "Kernel.h"
  13. #include "D14.h"
  14. extern KERNEL Kernel_Flag;
  15. extern D14_CNTRL_REG xdata *D14_Cntrl_Ptr;
  16. extern volatile D14_CNTRL_REG xdata D14_Cntrl_Reg;
  17. extern DMA_INT_FLAG DMA_Int_Flag;
  18. extern USB_INT_FLAG USB_Int_Flag;
  19. extern void Init_D14(void);
  20. extern UC ATAPI_State;
  21. extern DRIVE_CONFIG Drive_Setup;
  22. extern void Set_USB(void);
  23. extern ULI bytecount;
  24. extern UI PIO_Count;
  25. //***********************************************************************
  26. //*                *
  27. //*                      Variable Definition        *
  28. //*                *
  29. //***********************************************************************
  30. UI idata Data;
  31. ULI USB_Interrupt;
  32. UI DMA_Interrupt;
  33. //***********************************************************************
  34. //*                *
  35. //*                      Routine Definition    *
  36. //*                *
  37. //***********************************************************************
  38. void Int_2(void) interrupt 2 using 0
  39. {
  40. }
  41. void Int_3(void) interrupt 3 using 0
  42. {
  43. }
  44. void Int_4(void) interrupt 4 using 0
  45. {
  46. }
  47. void Int_5(void) interrupt 5 using 0
  48. {
  49. }
  50. //***********************************************************************
  51. //*                     *
  52. //* Routine  : Int_Timer0                                          *
  53. //* Input : Timer 0 overflow               *
  54. //* Output : Set time up flag                        *
  55. //* Function : To set the time up flag                          *
  56. //*                *
  57. //***********************************************************************
  58. void Int_Timer0(void) interrupt 1 using 0
  59. {
  60. Kernel_Flag.BITS.Timer_Expired = 1;
  61. }
  62. //***********************************************************************
  63. //*                     *
  64. //* Routine  :  Int Ext 0                                        *
  65. //* Input :  External Interrupt from ISP1581                       *
  66. //* Output :  None                                     *
  67. //* Function :  To read and keep a copy of the interrupt source of    *
  68. //*    ISP1581       *
  69. //***********************************************************************
  70. void Int_Ext_0(void) interrupt 0 using 1
  71. {
  72. //read in USB interrupt register and keep a copy
  73. //         USB_Interrupt = D14_Cntrl_Reg.D14_INT.VALUE;
  74. //         USB_Int_Flag.VALUE |= USB_Interrupt;
  75. //读取ISP1581中断寄存器
  76. USB_Int_Flag.VALUE |= D14_Cntrl_Reg.D14_INT.VALUE;
  77. //回写ISP1581中断寄存器
  78. D14_Cntrl_Reg.D14_INT.VALUE = USB_Int_Flag.VALUE;
  79. //总线复位处理
  80. if(USB_Int_Flag.BITS.RESET)
  81. {
  82. //清除总线复位中断位
  83. USB_Int_Flag.BITS.RESET = 0;
  84. //设置总线复位标志
  85. Kernel_Flag.BITS.Bus_Reset = 1;
  86. PIO_Count = 64;
  87. //切换到全速模式
  88.        HS_FS_LED = FULL_SPEED_LED;
  89. Kernel_Flag.BITS.HS_FS_State = FULL_SPEED;
  90. //初始化ISP1581
  91. Init_D14();
  92. //设置softconnect
  93. D14_Cntrl_Reg.D14_MODE.BITS.SOFTCT = 1;
  94. }
  95. }