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

C/C++

  1. #include "common.H"
  2. #include "DEVICE.H"
  3. #include "HAL.H"
  4. #include "HPI.H"
  5. #include "FAT.H"
  6. #include "FAT32.H"
  7. #include "HPI32.H"
  8. FLAGS bdata bFlags;
  9. extern unsigned char xdata DBUF[BUFFER_LENGTH];
  10. /////////////////////////////////////////////////
  11. extern unsigned long xdata DirStartCluster,DirStartCluster32;
  12. extern unsigned char xdata UARTBUF[UARTBUF_LENGTH];
  13. extern Command_Def xdata Command;
  14. extern SYS_INFO_BLOCK xdata DeviceInfo;
  15. extern FILE_INFO xdata ThisFile;
  16. //////////////////////////////////////////
  17. void Init_Port()
  18. {
  19. P0 = 0xFF;
  20. P1 = 0xFF;
  21. P2 = 0xFF;
  22. P3 = 0xFF;
  23. }
  24. /*Serial Port */
  25. /*Mode            = 1  /8-bit UART
  26.   Serial Port Interrupt    = Disabled         */
  27. /*Receive         = Enabled   */
  28. /*Auto Addressing    = Disabled   */
  29. void Init_COMM(void)
  30. {
  31. SCON = 0x53;
  32. PCON = 0x80 | PCON;
  33. T2CON=0x30;
  34. RCAP2H=0xFF; // 57600 @ 21.1184MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))
  35. RCAP2L=0xF4;
  36. TI=0;
  37. RI=0;
  38. TR2=1;
  39. ES = 1;
  40. }
  41. void main(void)
  42. {
  43. unsigned char temp;
  44. unsigned long xdata time_count;
  45. Init_Port();
  46.     Init_COMM(); 
  47. bFlags.bits.bUartInDone=0;
  48. DirStartCluster=0;
  49. DirStartCluster32=0;
  50. for(temp=0;temp<64;temp++)
  51. DBUF[temp]=0;
  52. ENABLE_INTERRUPTS;
  53. while(TRUE)
  54. {
  55.         time_count++;
  56. if (time_count>1000)  // 过一段时间查询一下SD/MMC卡是否在线  www.mcusky.com
  57. {
  58.   DISABLE_INTERRUPTS;
  59. time_count = 0;
  60. ENABLE_INTERRUPTS;
  61. if(SdInit()) //初始化SD卡
  62.      {    
  63.       if(bFlags.bits.SLAVE_ONLINE == FALSE)
  64.       {bFlags.bits.SLAVE_FOUND=TRUE;
  65.        bFlags.bits.SLAVE_ONLINE =TRUE;
  66.   }
  67.      }
  68.         else 
  69. {
  70.      if(bFlags.bits.SLAVE_ONLINE ==TRUE)
  71.        {bFlags.bits.SLAVE_REMOVED=TRUE;
  72.         bFlags.bits.SLAVE_ONLINE =FALSE;
  73.    }
  74.     }
  75.  }
  76. if(bFlags.bits.SLAVE_FOUND){
  77. DISABLE_INTERRUPTS;
  78. bFlags.bits.SLAVE_FOUND=FALSE;
  79.     bFlags.bits.SLAVE_ENUMERATED = TRUE;
  80.     DirStartCluster=0;
  81. DirStartCluster32=0;
  82. ThisFile.FatSectorPointer=0;
  83. DeviceInfo.LastFreeCluster=0;
  84. MCU_LED1=0;
  85. bFlags.bits.bMassDevice=TRUE;
  86. ENABLE_INTERRUPTS;
  87. }
  88. if(bFlags.bits.SLAVE_REMOVED)
  89.            {
  90. DISABLE_INTERRUPTS;
  91. bFlags.bits.SLAVE_REMOVED=FALSE;
  92. bFlags.bits.SLAVE_ENUMERATED = FALSE;
  93. bFlags.bits.SLAVE_IS_ATTACHED = FALSE;
  94. MCU_LED1=1;MCU_LED2=1;
  95. ENABLE_INTERRUPTS;
  96. }
  97. if(bFlags.bits.bUartInDone){
  98. DISABLE_INTERRUPTS;
  99. bFlags.bits.bUartInDone=0;
  100. if(DeviceInfo.FAT) //FAT32
  101. UartHandler32();
  102. else
  103. UartHandler(); //FAT16
  104. ENABLE_INTERRUPTS;
  105. }
  106. if(bFlags.bits.bMassDevice)
  107.   {
  108. DISABLE_INTERRUPTS;
  109. bFlags.bits.bMassDevice=FALSE;
  110. if(InitFileSystem())
  111. {
  112. bFlags.bits.SLAVE_IS_ATTACHED = TRUE;
  113. MCU_LED2=0;
  114. }
  115. else
  116. {
  117. bFlags.bits.SLAVE_IS_ATTACHED = FALSE;
  118. }
  119. ENABLE_INTERRUPTS;
  120. }
  121. }
  122.     
  123. }