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

USB编程

开发平台:

C/C++

  1. //***********************************************************************
  2. //                         *
  3. //                P H I L I P S   P R O P R I E T A R Y              *  
  4. //                                                                      *
  5. //          COPYRIGHT (c)   1999 BY PHILIPS SINGAPORE (APIC).        *
  6. //                    --  ALL RIGHTS RESERVED  --                  *
  7. //                                                                      *
  8. //  File Name :       Kernel.c                                      *
  9. //  Author :       Albert Goh         *
  10. //  Created :       3 March 2000                                *
  11. //                                                                      *
  12. //***********************************************************************
  13. //***********************************************************************
  14. //                                                                      *
  15. // Kernel.c is the control centre for this evaluation firmware. It will *
  16. // control where should the firmware branch through via the selection  *
  17. // of the UART port of the 8051. if not via the UART, it will be from  *
  18. // the selection of the code defintion                                  *
  19. //                                                                      *
  20. //***********************************************************************
  21. //***********************************************************************
  22. //                                                                      *
  23. //  Module History             *
  24. //  **************             *
  25. //                   *
  26. //  Date    Version Author Changes       *  
  27. //  ==== ======= ====== =======          *
  28. //  030300   0.1  Albert Created           *  
  29. //                                                                      *
  30. //                                                                      *
  31. //***********************************************************************
  32. //***********************************************************************
  33. //*                *
  34. //*                      Include Files Definition    *
  35. //*                *
  36. //***********************************************************************
  37. #include "standard.h"
  38. #include "Kernel.h"
  39. #include "D14.h"
  40. extern KERNEL Kernel_Flag;
  41. extern D14_CNTRL_REG xdata *D14_Cntrl_Ptr;
  42. extern volatile D14_CNTRL_REG xdata D14_Cntrl_Reg;
  43. extern DMA_INT_FLAG DMA_Int_Flag;
  44. extern USB_INT_FLAG USB_Int_Flag;
  45. extern void Init_D14(void);
  46. extern UC ATAPI_State;
  47. extern DRIVE_CONFIG Drive_Setup;
  48. extern void Set_USB(void);
  49. extern ULI bytecount;
  50. extern UI PIO_Count;
  51. //***********************************************************************
  52. //*                *
  53. //*                      Variable Definition        *
  54. //*                *
  55. //***********************************************************************
  56. UI idata Data;
  57. ULI USB_Interrupt;
  58. UI  DMA_Interrupt;
  59. UC  timecouter=0;
  60. //***********************************************************************
  61. //*                *
  62. //*                      Routine Definition    *
  63. //*                *
  64. //***********************************************************************
  65. void Int_2(void) interrupt 2 using 0
  66. {
  67. }
  68. void Int_3(void) interrupt 3 using 0
  69. {
  70. TH1=60;
  71. TL1=80;
  72. timecouter++;
  73. }
  74. void Int_4(void) interrupt 4 using 0
  75. {
  76. }
  77. void Int_5(void) interrupt 5 using 0
  78. {
  79. }
  80. //***********************************************************************
  81. //*                     *
  82. //* Routine  : Int_Timer0                                          *
  83. //* Input : Timer 0 overflow               *
  84. //* Output : Set time up flag                        *
  85. //* Function : To set the time up flag                          *
  86. //*                *
  87. //***********************************************************************
  88. void Int_Timer0(void) interrupt 1 using 0
  89. {
  90. Kernel_Flag.BITS.Timer_Expired = 1;
  91. }
  92. //***********************************************************************
  93. //*                     *
  94. //* Routine  :  Int Ext 0                                        *
  95. //* Input :  External Interrupt from ISP1581                       *
  96. //* Output :  None                                     *
  97. //* Function :  To read and keep a copy of the interrupt source of    *
  98. //*    ISP1581       *
  99. //***********************************************************************
  100. void Int_Ext_0(void) interrupt 0 using 1
  101. {
  102. //read in USB interrupt register and keep a copy
  103. //         USB_Interrupt = D14_Cntrl_Reg.D14_INT.VALUE;
  104. //         USB_Int_Flag.VALUE |= USB_Interrupt;
  105. //读取ISP1581中断寄存器
  106. USB_Int_Flag.VALUE |= D14_Cntrl_Reg.D14_INT.VALUE;
  107. //回写ISP1581中断寄存器
  108. D14_Cntrl_Reg.D14_INT.VALUE = USB_Int_Flag.VALUE;
  109. // if (USB_Int_Flag.BITS.EP1RX)
  110. // USB_Int_Flag.BITS.EP1RX = 0;
  111. //总线复位处理
  112. if(USB_Int_Flag.BITS.RESET)
  113. {
  114. //清除总线复位中断位
  115. USB_Int_Flag.BITS.RESET = 0;
  116. //设置总线复位标志
  117. Kernel_Flag.BITS.Bus_Reset = 1;
  118. PIO_Count = 64;
  119. //切换到全速模式
  120.        HS_FS_LED = FULL_SPEED_LED;
  121. Kernel_Flag.BITS.HS_FS_State = FULL_SPEED;
  122. //初始化ISP1581
  123. Init_D14();
  124. //设置softconnect
  125. D14_Cntrl_Reg.D14_MODE.BITS.SOFTCT = 1;
  126. }
  127. }