⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system_init.lst

📁 电源检测系统 能够检测电源的过欠压,报警
💻 LST
字号:
C51 COMPILER V8.08   SYSTEM_INIT                                                           05/21/2008 20:12:34 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE SYSTEM_INIT
OBJECT MODULE PLACED IN System_Init.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE System_Init.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <C8051F000.h> //寄存器定义
   2          
   3          #define uint unsigned int
   4          /*
   5          //外部时钟设置
   6          void Sysclk_Init(void)
   7          {
   8            uint i = 0;
   9            WDTCN  = 0xDE;        //关闭看门狗
  10            WDTCN  = 0xAD;
  11          //WDTCN  = 0x05;        //开启看门狗
  12          //WDTCN  = 0xA5;
  13            OSCXCN = 0x67;        //使用内部时钟16MHz使能时钟丢失检测
  14            for(i=0;i<256;i++);
  15            while(!(OSCXCN&0x80));//等待时钟稳定
  16            OSCICN = 0x88;                //开启外部时钟使能时钟丢失检测0x88
  17          }
  18          */
  19          //内部时钟设置
  20          void Sysclk_Init(void)
  21          {
  22   1        uint i = 0;
  23   1        WDTCN  = 0xDE;        //关闭看门狗
  24   1        WDTCN  = 0xAD;
  25   1      //WDTCN  = 0x05;        //开启看门狗
  26   1      //WDTCN  = 0xA5;
  27   1        OSCICN = 0x97;        //使用内部时钟16MHz使能时钟丢失检测
  28   1        for(i=0;i<=500;i++);
  29   1        while(OSCXCN&0x80);   //等待时钟稳定
  30   1        OSCXCN = 0x00;
  31   1      }
  32          
  33          //端口设置初始化
  34          void Port_Init(void)
  35          {
  36   1        XBR0 = 0x01;    //SDA和SCL连到P0.0 P0.1
  37   1        XBR1 = 0x00;    //INT0和INT1连到引脚
  38   1        XBR2 = 0x40;    //交叉开关使能端口I/O弱上拉使能
  39   1      
  40   1        PRT0CF = 0xFF;  //P0输出方式为推挽
  41   1        PRT1CF = 0xFF;  //P1输出方式为推挽
  42   1        PRT2CF = 0x00;  //P2输出方式为推挽
  43   1        PRT3CF = 0x00;  //P3输出方式为推挽
  44   1      }
  45          
  46          //ADC初始化  
  47          void Adc_Init(void)
  48          {
  49   1        AMX0CF = 0x00;  //均为单独输入
  50   1        AMX0SL = 0x00;  //00-->AN0  01-->AN1
  51   1        ADC0CF = 0x80;  //(16M/16)/8转换时钟为8个系统时钟,内部放大增益=1;
  52   1        ADC0LTH = 0xFF; //ADC上限数据高位
  53   1        ADC0LTL = 0xFF; //ADC上限数据高位
  54   1        ADC0GTH = 0x00; //ADC下限数据高位
  55   1        ADC0GTL = 0x00; //ADC下限数据低位     
C51 COMPILER V8.08   SYSTEM_INIT                                                           05/21/2008 20:12:34 PAGE 2   

  56   1        ADC0CN = 0xC0;  //AD使能,C0向ADCBUSY位写1时启动AD转换 CC定时器2溢出启动AD转换
  57   1      }
  58          
  59          //串口初始化
  60          void Uart_Init(void)
  61          {
  62   1        SCON = 0x50;    //方式1和8位UART允许RX
  63   1        TMOD |= 0x20;    //定时器1方式2和8位重装载
  64   1        TH1  = 0x64;    //0xF3为115.2kbps;    //0x9C重载值9.6kbps@24MHz 
  65   1        TR1  = 1;       //启动定时器1
  66   1        CKCON|= 0x18;   //定时器1使用sysclk作为时其
  67   1        PCON |= 0x80;   //SMOD = 1 ((2^SMOD)/32)*SYSCLK/(12^T1M-1)(256-TH1)
  68   1        ES   = 1;               //串口中断允许
  69   1        TI   = 0;       //发送中断标志 
  70   1        TR1  = 1;               //定时器1允许运行
  71   1      }
  72          
  73          //DAC初始化
  74          void Dac_Init(void)
  75          {
  76   1        DAC0CN = 0x80;  //DA0使能
  77   1        DAC1CN = 0x80;  //DA1使能
  78   1        REF0CN = 0x07;  //内部温度传感器使能ADC和DAC偏压使能
  79   1                        //系统基准电压为内部电压  
  80   1      }
  81          
  82          //TIME0中断初始化
  83          void Time0_Init(void)
  84          {
  85   1        TL0 = 0x00;//0xD7;
  86   1        TH0 = 0x80;//0xFE;
  87   1        TMOD |= 0x01;  //定时器0允许采用十六位定时器计数
  88   1        TCON |= 0x10;  //TR0 = 1定时器0允许 
  89   1        ET0 = 1;       //使能定时器0
  90   1      }
  91          
  92          //TIME3中断初始化
  93          void Time3_Init(void)
  94          {
  95   1        TMR3RLL=0x00;
  96   1        TMR3RLH=0x40;
  97   1        TMR3L=0xFF;
  98   1        TMR3H=0xFF;  
  99   1        EIE2 |= 0x01;  //0x01允许定时器3中断 0x00禁止
 100   1        TMR3CN|=0x04;  //0x04定时器3运行允许 0x00禁止
 101   1        TMR3CN|=0x02;  //0x02定时器3使用系统时钟
 102   1      }
 103          
 104          void I2c_Init(void)
 105          {
 106   1        SMB0CN = 0x44;       // 允许SMBus在应答周期发送ACK
 107   1        SMB0CR = -80;        // SMBus时钟频率 = 100kHz.
 108   1        EIE1 |= 0x02;        // SMBus中断允许
 109   1      }
 110          /*
 111          //外部中断0初始化
 112          void Int_Init(void)
 113          {
 114            IE = 0x15;  //外部中断0和1允许
 115            IP = 0x00;  //串口为高优先级
 116            TCON|= 0x0F;  //INT1和INT0允许采用边沿触发
 117          }
C51 COMPILER V8.08   SYSTEM_INIT                                                           05/21/2008 20:12:34 PAGE 3   

 118          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    155    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -