C51 COMPILER V9.52.0.0   FU68XX_2_SYSTEM                                                   09/28/2018 17:46:10 PAGE 1   


C51 COMPILER V9.52.0.0, COMPILATION OF MODULE FU68XX_2_SYSTEM
OBJECT MODULE PLACED IN .\Output\FU68xx_2_System.obj
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE ..\Library\FU68xx_Hardware_Driver\Source\FU68xx_2_System.c LARGE OMF2 WARNI
                    -NGLEVEL(0) BROWSE INCDIR(..\Library\FU68xx_Hardware_Driver\Include;..\User\Include) DEBUG PRINT(.\Listing\FU68xx_2_Syste
                    -m.lst) TABS(2) OBJECT(.\Output\FU68xx_2_System.obj)

line level    source

   1          /**************************** (C) COPYRIGHT 2017 Fortiortech shenzhen *****************************
   2          * File Name          : FU68xx_2_System.c
   3          * Author             : Vina Peng,Fortiortech  Appliction Team
   4          * Version            : V1.0
   5          * Date               : 10-Apr-2017
   6          * Description        : This file contains the system function used for Motor Control.
   7          ***************************************************************************************************
   8          * All Rights Reserved
   9          **************************************************************************************************/
  10          /* Includes -------------------------------------------------------------------------------------*/
  11          #include <FU68xx_2.h>
  12          
  13          
  14          /*-------------------------------------------------------------------------------------------------
  15              Function Name : VREFConfig(Value, Status)
  16              Description   : 参考电压VREF配置，如果使能VREF模块，则内部产生VREF输入到ADC作�
             -�ADC
  17                                              参考电压，如果禁止VREF模块，则由外部提供VREF输入�
             -�ADC作为ADC参考电压。
  18              Input         : Value--VCC低电压预警值
  19                            0: VREF4_5, 参考电压VREF输出为4.5V
  20                            1: VREF5_0, 参考电压VREF输出为5.0V
  21                            2: VREF3_0, 参考电压VREF输出为3.0V
  22                            3: VREF4_0, 参考电压VREF输出为4.0V
  23                            Statue--使能控制，Disable或Enable。
  24            Output                :   None
  25          -------------------------------------------------------------------------------------------------*/
  26          void VREFConfig(uint8 Value, bool Status)
  27          {
  28   1          switch(Value)
  29   1          {
  30   2              case 0: ClrBit(VREF_VHALF_CR, VRVSEL0 | VRVSEL1);          break;
  31   2              case 1: SetReg(VREF_VHALF_CR, VRVSEL0 | VRVSEL1, VRVSEL0); break;
  32   2              case 2: SetReg(VREF_VHALF_CR, VRVSEL0 | VRVSEL1, VRVSEL1); break;
  33   2              case 3: SetBit(VREF_VHALF_CR, VRVSEL0 | VRVSEL1);          break;
  34   2          }
  35   1      
  36   1          SetReg(VREF_VHALF_CR, VREFEN, (Status ? VREFEN : 0x00));
  37   1      }
  38          
  39          
  40          /* Flash Program Config--------------------------------------------------------------------------*/
  41          
  42          /*-------------------------------------------------------------------------------------------------
  43              Function Name : uint8 Flash_Sector_Erase(uint8 xdata *FlashAddress)
  44              Description   : 扇区自擦除: 指定将要擦除的Flash扇区，每个扇区128Byte，共128个扇
             -区，
  45                                              扇区0~127对应Flash地址0x0000~0x3fff，通过指定Flash地址来
             -指定要擦除
  46                                              的Flash地址所在扇区。一次只能擦除一个扇区，自擦�
             -�数据为任意值，一定
  47                                              要在解锁后才给DPTR赋值。
  48              Input         : FlashAddress--Flash自擦除扇区内任意地址
C51 COMPILER V9.52.0.0   FU68XX_2_SYSTEM                                                   09/28/2018 17:46:10 PAGE 2   

  49            Output                :   0--Flash自擦除成功，1--Flash自擦除失败
  50          -------------------------------------------------------------------------------------------------*/
  51          uint8 Flash_Sector_Erase(uint8 xdata *FlashAddress)
  52          {
  53   1          bool TempEA;
  54   1      
  55   1          TempEA = EA;
  56   1          EA = 0;
  57   1      
  58   1          if(FlashAddress < 0x3f80)       // 不擦除最后一个扇区
  59   1          {
  60   2              FLA_CR = 0x03;                                   //使能自擦除
  61   2              FLA_KEY = 0x5a;
  62   2              FLA_KEY = 0x1f;                                   //flash预编程解锁
  63   2              _nop_();
  64   2              *FlashAddress = 0xff;                   //写任意数据
  65   2              FLA_CR = 0x08;                                   //开始预编程，完成后Flash再次上锁
  66   2          }
  67   1      
  68   1          EA = TempEA;
  69   1      
  70   1          if(ReadBit(FLA_CR, FLAERR))
  71   1          {
  72   2              return 1;
  73   2          }
  74   1          else
  75   1          {
  76   2              return 0;
  77   2          }
  78   1      }
  79          
  80          /*-------------------------------------------------------------------------------------------------
  81              Function Name : uint8 Flash_Sector_Write(uint8 xdata *FlashAddress, uint8 FlashData)
  82              Description   : Flash自烧写: 对扇区预编程和自擦除后，可以对扇区内的地址进行F
             -lash烧写，
  83                            一次烧写一个byte,一定要在解锁后才给DPTR赋值
  84              Input         : FlashAddress--Flash烧写地址
  85                                              FlashData--Flash烧写数据
  86            Output                :   0--Flash自烧写成功，1--Flash自烧写失败
  87          -------------------------------------------------------------------------------------------------*/
  88          uint8 Flash_Sector_Write(uint8 xdata *FlashAddress, uint8 FlashData)
  89          {
  90   1          bool TempEA;
  91   1      
  92   1          TempEA = EA;
  93   1          EA = 0;
  94   1      
  95   1        if(FlashAddress < 0x3f80)         // 不编程最后一个扇区
  96   1          {
  97   2              FLA_CR = 0x01;              // 使能Flash编程
  98   2              FLA_KEY = 0x5a;
  99   2              FLA_KEY = 0x1f;             // flash预编程解锁
 100   2              _nop_();
 101   2              *FlashAddress = FlashData;  // 写编程数据
 102   2              FLA_CR = 0x08;              // 开始预编程，完成后Flash再次上锁
 103   2          }
 104   1      
 105   1          EA = TempEA;
 106   1      
 107   1          if(ReadBit(FLA_CR, FLAERR))
 108   1          {
 109   2              return 1;
C51 COMPILER V9.52.0.0   FU68XX_2_SYSTEM                                                   09/28/2018 17:46:10 PAGE 3   

 110   2          }
 111   1          else
 112   1          {
 113   2              return 0;
 114   2          }
 115   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    170    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)
