Initial.#3
上传用户:gxz1972
上传日期:2019-09-13
资源大小:323k
文件大小:5k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. //-----------------------------------------------------------------------------
  2. // GlobalVariabel.c
  3. //-----------------------------------------------------------------------------
  4. // Copyright 2007 Vson Technology, Inc.
  5. // http://www.usbmcu.com
  6. //
  7. // Program Description:
  8. //
  9. //
  10. //
  11. //
  12. //
  13. // MCU:            C8051F347
  14. // Tool chain:     Keil C51 7.50 / Keil EVAL C51
  15. //                 Silicon Laboratories IDE version 2.6
  16. // Command Line:   
  17. // Project Name:   TR1000
  18. //
  19. //
  20. // Release 1.0
  21. //    -All changes by Brin
  22. //    -24 JUL 2007
  23. //
  24. //
  25. //-----------------------------------------------------------------------------
  26. // Includes
  27. //-----------------------------------------------------------------------------
  28. #include "Include_H.h"
  29. //-----------------------------------------------------------------------------
  30. // Initialization Subroutines
  31. //-----------------------------------------------------------------------------
  32. void Initial(void)
  33. {
  34.    data BYTE i;
  35.    PORT_Init ();                       // Initialize Crossbar and GPIO
  36.    Timer_Init();
  37.    SYSCLK_Init ();                     // Initialize oscillator
  38.    USB0_Init ();                       // Initialize USB0
  39.    VDD_MON_Init();                     // Turn on VDD Monitor
  40.    for (i = 0; i < 64; i++)
  41.    {
  42.  gaucTxData2HostBuffer[i]=0;
  43.    }
  44. }
  45. //-----------------------------------------------------------------------------
  46. // SYSCLK_Init
  47. //-----------------------------------------------------------------------------
  48. //
  49. // Return Value : None
  50. // Parameters   : None
  51. //
  52. // This function initializes the system clock and USB clock.
  53. //
  54. //-----------------------------------------------------------------------------
  55. void SYSCLK_Init (void)
  56. {
  57.    unsigned char delay = 100;
  58.    OSCICN |= 0x03;                     // Configure internal oscillator for
  59.                                        // its maximum frequency
  60.    CLKMUL = 0x00;                      // Select internal oscillator as
  61.                                        // input to clock multiplier
  62.    CLKMUL |= 0x80;                     // Enable clock multiplier
  63.    while (delay--);                    // Delay for >5us
  64.    CLKMUL |= 0xC0;                     // Initialize the clock multiplier
  65.    while(!(CLKMUL & 0x20));            // Wait for multiplier to lock
  66.    CLKSEL |= USB_4X_CLOCK;             // Select USB clock
  67.    CLKSEL |= SYS_4X_DIV_2;             // Select SYSCLK as Clock Multiplier/2
  68. }
  69. /*
  70. void SYSCLK_Init (void) //void Oscillator_Init()
  71. {
  72.     int i = 0;
  73.     OSCICN    = 0x83;
  74.     CLKMUL    = 0x80;
  75.     for (i = 0; i < 20; i++);    // Wait 5us for initialization
  76.     CLKMUL    |= 0xC0;
  77.     while ((CLKMUL & 0x20) == 0);
  78.     CLKSEL    = 0x10;
  79. }
  80. */
  81. //-----------------------------------------------------------------------------
  82. // VDD_MON_Init
  83. //-----------------------------------------------------------------------------
  84. //
  85. // Return Value : None
  86. // Parameters   : None
  87. //
  88. // This function initializes the VDD monitor
  89. //
  90. //-----------------------------------------------------------------------------
  91. void VDD_MON_Init(void)        
  92. {
  93.    RSTSRC |= 0x02;
  94. }
  95. //-----------------------------------------------------------------------------
  96. // USB0_Init
  97. //-----------------------------------------------------------------------------
  98. //
  99. // Return Value : None
  100. // Parameters   : None
  101. //
  102. // - Initialize USB0
  103. // - Enable USB0 interrupts
  104. // - Enable USB0 transceiver
  105. // - USB0 left disabled
  106. //
  107. //-----------------------------------------------------------------------------
  108. void USB0_Init (void)
  109. {
  110.    UWRITE_BYTE(POWER, 0x08);           // Asynch. reset
  111.    UWRITE_BYTE(IN1IE, 0x0F);           // Enable Endpoint0 Interrupt
  112.    UWRITE_BYTE(OUT1IE, 0x0F);
  113.    UWRITE_BYTE(CMIE, 0x04);            // Enable Reset interrupt
  114.    USB0XCN = 0xC0;                     // Enable transceiver
  115.    USB0XCN |= FULL_SPEED;              // Select device speed
  116.    UWRITE_BYTE(CLKREC, 0x80);          // Enable clock recovery,
  117.                                        // single-step mode disabled
  118.    EIE1 |= 0x02;                       // Enable USB0 Interrupts
  119. }
  120. //-----------------------------------------------------------------------------
  121. // PORT_Init
  122. //-----------------------------------------------------------------------------
  123. //
  124. // Return Value : None
  125. // Parameters   : None
  126. //
  127. // This function configures the crossbar and GPIO ports.
  128. //
  129. // P2.2   digital   push-pull     LED
  130. // P2.3   digital   push-pull     LED
  131. //
  132. //-----------------------------------------------------------------------------
  133. void PORT_Init(void)
  134. {  
  135.    P2MDOUT |= 0x0C; // Port 2 pins 0,1 set high impedence
  136.    Led1 = 0; // Start with both Leds off
  137.    Led2 = 0;
  138.    XBR0 = 0x00;     
  139.    XBR1 = 0x40;                         // Enable Crossbar
  140. }
  141. void Timer_Init(void)
  142. {
  143.     TMOD      = 0x21;
  144.     CKCON     = 0X08; //0x01;
  145.     TH1       = 0X30; //0x63;
  146. //    TL0       = 0xa0;
  147.     TH0       = 0x15;
  148.     TCON      = 0x50;
  149.     TMR2CN    = 0x04;
  150.     TMR2RLL   = 0xDF;
  151.     TMR2RLH   = 0xB1;
  152.     TMR2L     = 0xDF;
  153.     TMR2H     = 0xB1;
  154. }