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

📄 init_sys.lst

📁 c8051f020实现4个 产UART 口
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   INIT_SYS                                                              06/10/2007 23:11:21 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE INIT_SYS
OBJECT MODULE PLACED IN .\out\init_sys.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE init_sys.c LARGE OPTIMIZE(SIZE) REGFILE(.\out\mbtest.ORC) BROWSE INCDIR(C:\
                    -Keil\C51\LIB\;D:\TEST_C020\MC_55_C\) DEBUG OBJECTEXTEND OBJECT(.\out\init_sys.obj)

line level    source

   1          
   2          #include  "all.h"
   3          
   4          
   5          void SMBus_Init();
   6          void SYSCLK_Init (void);
   7          void PORT_Init (void);
   8          void ADC0_Init (void);
   9          //void Timer0_Init (int counts);
  10          void Timer3_Init (int counts);
  11          void Timer4_Init (int counts);    //5ms
  12          
  13          
  14          void  FLASH_INIT(uchar ttt ) ;
  15          
  16          //-----------------------------------------------------------------------------
  17          // Global VARIABLES
  18          //-----------------------------------------------------------------------------
  19          
  20          
  21          
  22          
  23          
  24          //-----------------------------------------------------------------------------
  25          // SYSCLK配置
  26          //-----------------------------------------------------------------------------
  27          // 配置系统时钟使用外部晶振22.1184MHz
  28          
  29          void SYSCLK_Init (void)
  30          {
  31   1         int i;                              // delay counter
  32   1      
  33   1         OSCXCN = 0x67;                      // start external oscillator with  0110x111 不分频
  34   1                                             // 22.1184MHz crystal
  35   1         for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
  36   1      
  37   1         while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
  38   1      
  39   1         OSCICN = 0x88;                      // select external oscillator as SYSCLK
  40   1                                             // source and enable missing clock
  41   1                                             // detector  bit7  时钟丢失检测便能
  42   1      }
  43          
  44          // Configure the Crossbar and GPIO ports
  45          void PORT_Init (void)
  46          {
  47   1         EA=0;
  48   1         XBR0    = 0x05;    //0x2C;                     // Enable UART0 / smsc
  49   1         XBR1    = 0x04;  //en int0
  50   1        // XBR2    = 0xc4;   //0x44;                     // Enable crossbar and weak pull-ups,Enable UART1
  51   1      
  52   1      
  53   1         P0MDOUT = 0;                    // enable TX0 TX1 as a push-pull output
  54   1         P1MDOUT = 0;      //P1.1 output
C51 COMPILER V7.50   INIT_SYS                                                              06/10/2007 23:11:21 PAGE 2   

  55   1         P2MDOUT = 0;  
  56   1         P3MDOUT = 0;
  57   1         P74OUT=0;
  58   1         
  59   1         P1=0;
  60   1         P2=0;
  61   1         P3=0;
  62   1         P4=0;
  63   1         P0MDOUT |= 0x7f;   //0x11;                    // enable   sda  scl  TX0  TX1  as a push-pull output
  64   1         P0|=0x84;
  65   1         P1MDOUT |= 0x00;   // 
  66   1         P1|=0x3f;
  67   1         P2MDOUT |= 0x80;   //
  68   1         P2|=0x3f;
  69   1         P3MDOUT |= 0x3e;
  70   1         P3|=0xa0;    
  71   1         P74OUT|= 0X30;             //bit7   bit 6    bit 5    bit4    bit3    bit2    bit1    bit0
  72   1                                                //p7H  P7L    P6H   P6L    P5H    P5L     P4H   P4L 
  73   1                                               // 0      0        1       1       0      0        0      0
  74   1         P7=0XFF;
  75   1         P6=0X00;     
  76   1         P5=0X1f;     
  77   1         P4=0XF3;     
  78   1         
  79   1      
  80   1          XBR0    = 0x0d;    //0x5;                     // Enable UART0 / smsc
  81   1                                                                    //xbr0.3   cex0
  82   1          XBR1    = 0x04;  //en int0
  83   1          XBR2    = 0xc4;   //0x44;                     // Enable crossbar and weak pull-ups,Enable UART1
  84   1          
  85   1         
  86   1         
  87   1              
  88   1      }
  89          
  90          
  91          
  92          void INT0_Init()     // CK  RING
  93          {
  94   1            IT0=1 ;      // EDGE DOWN       
  95   1            EX0=1;
  96   1              
  97   1      }
  98          
  99          
 100          
 101          void SMBus_Init()
 102          {
 103   1      
 104   1      
 105   1             //DISABLE();
 106   1              
 107   1              SMB0CN    = 0x42;
 108   1              SMB0CR  = IIC_SMB0CR;
 109   1      
 110   1              EIP1=EIP1|0x02;             //SMBUS中断为高优先级
 111   1              EIE1 = EIE1|0x02;                       //允许SMBUS中断
 112   1              sm_busy=0;
 113   1             //ENABLE();
 114   1      
 115   1              
 116   1              
C51 COMPILER V7.50   INIT_SYS                                                              06/10/2007 23:11:21 PAGE 3   

 117   1      }
 118          
 119          
 120          
 121          
 122          void ADC0_Init (void)
 123          {
 124   1         AMX0CF=0;      //sing end
 125   1         ADC0CN = 0x04;                      // ADC0 enable; normal tracking
 126   1                                             // mode; ADC0 conversions are initiated 
 127   1                                             // on overflow of Timer3; ADC0 data is
 128   1                                             // right-justified
 129   1                                             
 130   1         REF0CN = 0x03;                      // disenable temp sensor, on-chip VREF,
 131   1                                             // and VREF output buffer
 132   1         AMX0SL = 0x00;                      // Select  ain0  sens as ADC mux output
 133   1         ADC0CF = (SYSCLK/2500000) << 3;     // ADC conversion clock = 2.5MHz
 134   1         ADC0CF |= 0x00;                     // PGA gain = 1
 135   1      
 136   1        // EIE2 |= 0x02;                       // enable ADC interrupts
 137   1      
 138   1              //DAC0CN = 0x80;        // DAC0 Control Register
 139   1              DAC0L = 0x00;   // DAC0 Low Byte Register
 140   1              DAC0H = 0x00;   // DAC0 High Byte Register
 141   1      
 142   1              //DAC1CN = 0x80;        // DAC1 Control Register
 143   1              DAC1L = 0xFF;   // DAC1 Low Byte Register
 144   1              DAC1H = 0xFF;   // DAC1 High Byte Register
 145   1      }
 146          
 147          
 148          
 149          
 150          
 151          /**********************************************************************
 152          **函数原型:   void Attand_485(void)
 153          **入口参数:   Xin_485_b=1
 154          **出口参数:   无
 155          **返 回 值:   无
 156          **说    明:  T0定时中断子程序INIT
 157          ************************************************************************/
 158          /*
 159          void Timer0_Init (int counts)
 160          {
 161             CKCON|=0x8;
 162             TMOD|=0x1;    //16Bit
 163             TH0=(65536-counts)/256;
 164             TL0=(65536-counts)%256;
 165             IE|= 0x2; 
 166             TR0=1;
 167          }
 168          
 169          */
 170          
 171          
 172          
 173          /**********************************************************************
 174          **函数原型:   void Attand_485(void)
 175          **入口参数:   Xin_485_b=1
 176          **出口参数:   无
 177          **返 回 值:   无
 178          **说    明:  T3定时中断子程序INIT
C51 COMPILER V7.50   INIT_SYS                                                              06/10/2007 23:11:21 PAGE 4   

 179          ************************************************************************/
 180          
 181          void Timer3_Init (int counts)
 182          {
 183   1         TMR3CN = 0x00;                      // Stop Timer3; Clear TF3;  scale 12
 184   1                                             // use SYSCLK as timebase
 185   1         TMR3RL  = -counts;                  // Init reload values
 186   1         TMR3    = 0xffff;                   // set to reload immediately
 187   1         EIE2   &= ~0x01;                    // disable Timer3 interrupts
 188   1        // EIE2   |= 0x01; 
 189   1         TMR3CN |= 0x04;                     // start Timer3

⌨️ 快捷键说明

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