ISR.C
上传用户:jcsy2001
上传日期:2013-11-29
资源大小:201k
文件大小:1k
开发平台:

C/C++

  1. #include "common.h"
  2. #include "HAL.H"
  3. #include "HPI.H"
  4. #include "HPI32.H"
  5. extern FLAGS bdata bFlags;
  6. extern unsigned char xdata UARTBUF[UARTBUF_LENGTH];
  7. extern Command_Def xdata Command;
  8. //////////////////////////////////////////
  9. void ISR_COMM(void) interrupt 4
  10. {
  11. unsigned char *pBuf=(unsigned char *)&Command;  //Low Bit at Head
  12. unsigned long xdata  timecount;
  13. unsigned int cnt;
  14. MCU_LED3=0;
  15. if(RI==0)
  16. {
  17. MCU_LED3=1;
  18. return;
  19. }
  20. for(cnt=0;cnt<37;cnt++)
  21. {
  22. timecount=0;
  23. while(!RI&&++timecount<20005);
  24. if(timecount>20000)
  25. {
  26. Command.CLass=0xff;
  27. bFlags.bits.bUartInDone=1;
  28. RI=0;
  29. MCU_LED3=1;
  30. return;
  31. }
  32. *(pBuf+cnt)=SBUF;
  33. RI=0;
  34. }
  35. /////// data phase /////////////////////
  36. if(Command.CLass==0x04||Command.CLass==0x05||Command.CLass==0x09) ///GreatFile/GreatDir/WriteFile
  37. {
  38. if(Command.len>MAX_WRITE_LENGTH)
  39. {
  40. Command.CLass=0xff;
  41. bFlags.bits.bUartInDone=1;
  42. MCU_LED3=1;
  43. return;
  44. }
  45. for(cnt=0;cnt<Command.len;cnt++)
  46. {
  47. timecount=0;
  48. while(!RI&&++timecount<20005);
  49. if(timecount>20000)
  50. {
  51. Command.CLass=0xff;
  52. bFlags.bits.bUartInDone=1;
  53. RI=0;
  54. MCU_LED3=1;
  55. return;
  56. }
  57. UARTBUF[cnt]=SBUF;
  58. RI=0;
  59. }
  60. }
  61. //////////////////////////
  62. bFlags.bits.bUartInDone=1;
  63. RI=0;
  64. MCU_LED3=1;
  65. }