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

📄 source1.lst

📁 c8051f060操作ds1747,存取数据,设置和读取时钟信息
💻 LST
字号:
C51 COMPILER V7.02b   SOURCE1                                                              05/19/2006 18:09:30 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE SOURCE1
OBJECT MODULE PLACED IN Source1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe Source1.c DB OE

stmt level    source

   1          /////////////////////////////////////
   2          //  Generated Initialization File  //
   3          /////////////////////////////////////
   4          
   5          #include "c8051F060.h"
   6          #include "absacc.h"
   7          
   8          // Peripheral specific initialization functions,
   9          // Called from the Init_Device() function
  10          #define uchar unsigned char
  11          #define uint unsigned int 
  12          
  13          void init_rtc();
  14          void disp_rtc();
  15          
  16          uchar xdata * data read_ptr;
  17          idata unsigned char a[13];
  18          uchar res[5];
  19          uchar t,k;
  20          uint i;
  21          
  22          sbit AD16 = P3^4;
  23          sbit AD17 = P3^5;
  24          sbit AD18 = P3^6;
  25          sbit RD  = P4^6;
  26          sbit WR  = P4^7;
  27          
  28          
  29          
  30          void Timer_Init()
  31          {
  32   1          SFRPAGE   = TIMER01_PAGE;
  33   1          TCON      = 0x40;
  34   1          TMOD      = 0x20;
  35   1          TH1       = 0x9F;
  36   1              TR1       = 1;
  37   1      }
  38          
  39          void Port_IO_Init()
  40          {
  41   1          SFRPAGE   = CONFIG_PAGE;
  42   1      //    P3MDOUT   = 0x07;
  43   1          XBR0      = 0x05;
  44   1          XBR2      = 0x44;
  45   1      }
  46          
  47          void Oscillator_Init()
  48          {
  49   1          int i = 0;
  50   1          SFRPAGE   = CONFIG_PAGE;
  51   1          OSCXCN    = 0x67;
  52   1          for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
  53   1          while ((OSCXCN & 0x80) == 0);
  54   1          CLKSEL    = 0x01;
  55   1      }
C51 COMPILER V7.02b   SOURCE1                                                              05/19/2006 18:09:30 PAGE 2   

  56          
  57          void Interrupts_Init()
  58          {
  59   1          IE        = 0x80;
  60   1          EIE2      = 0x40;
  61   1          EIE1      = 0x02;
  62   1      }
  63          void SMBus_Init()
  64          {
  65   1          SFRPAGE   = SMB0_PAGE;
  66   1          SMB0CN    = 0x40;
  67   1          SMB0CR    = 0x99;
  68   1      }
  69          void EMIF_Init (void)
  70          {
  71   1         char SFRPAGE_SAVE = SFRPAGE;        // Save Current SFR page
  72   1      
  73   1         SFRPAGE = EMI0_PAGE;                // Save SFR_PAGE
  74   1         EMI0CF = 0x3F;                      // upper ports; non-muxed mode;
  75   1                                             // split mode w/o bank select
  76   1      //   EMI0TC = 0x45;                      // timing (7-cycle MOVX)
  77   1      
  78   1         SFRPAGE = CONFIG_PAGE;
  79   1         P4MDOUT |= 0xFF;                    // all EMIF pins configured as
  80   1         P5MDOUT |= 0xFF;                    // push-pull
  81   1         P6MDOUT |= 0xFF;
  82   1         P7MDOUT |= 0xFF;
  83   1      
  84   1         SFRPAGE = SFRPAGE_SAVE;             // restore SFR_PAGE
  85   1      }
  86          void Init_Device(void)
  87          {
  88   1          Timer_Init();
  89   1          Port_IO_Init();
  90   1          Oscillator_Init();
  91   1          Interrupts_Init();
  92   1              SMBus_Init();
  93   1              EMIF_Init ();
  94   1      
  95   1      }
  96          //=======================================================
  97          void smbus_cfg(uchar smb0adr)
  98          {
  99   1              SFRPAGE=0x00;
 100   1              SMB0ADR=smb0adr;
 101   1      }
 102          void smbusMasterStart()
 103          {
 104   1              k=0;
 105   1              SFRPAGE=0x00;
 106   1              STA=1;
 107   1      }
 108          //=========================================================
 109          //=======================================================
 110          main()
 111          {
 112   1              
 113   1      
 114   1          WDTCN = 0x07;       //看门狗禁止
 115   1          WDTCN = 0xDE;   
 116   1          WDTCN = 0xAD;
 117   1      
C51 COMPILER V7.02b   SOURCE1                                                              05/19/2006 18:09:30 PAGE 3   

 118   1              EA=1;
 119   1              Init_Device();
 120   1              smbus_cfg(0x70);
 121   1              smbusMasterStart();
 122   1      
 123   1      //      init_rtc();
 124   1      
 125   1              for(i=0;i<60000;i++)
 126   1              {       for(i=0;i<60000;i++);}
 127   1              for(i=0;i<60000;i++)
 128   1              {       for(i=0;i<60000;i++);}
 129   1      
 130   1              a[0]=0x1b;
 131   1              a[1]=0x20;
 132   1              a[2]=0x99;
 133   1              a[3]=0x1b;
 134   1              a[4]=0x24;
 135   1      /*      AD16=1;AD17=1;AD18=1;
 136   1              for(i=0;i<30000;i++);
 137   1              XBYTE[0xF8FF]=0x40;
 138   1              read_ptr=0xF8FF;//XRAM_START_ADD;1020-1029
 139   1              for(i=5;i<13;i++)
 140   1              {       
 141   1                      a[i]=*read_ptr;
 142   1                      read_ptr=read_ptr+0x0100;       
 143   1              }
 144   1              XBYTE[0xF8FF]=0;*/
 145   1              disp_rtc();
 146   1      
 147   1              SFRPAGE=0x01;
 148   1              SBUF1=a[0];
 149   1      
 150   1              while(1);
 151   1      }
 152          //===============================================
 153          void uart1_ISR() interrupt 20
 154          {
 155   1              if(RI1){
 156   2                      res[t]=SBUF1;//将接收数据写入res[]数组
 157   2                      t++;
 158   2                      RI1=0;
 159   2              }
 160   1              if(TI1){
 161   2                      t++;    
 162   2                      if(t<13){                       
 163   3                              SBUF1=a[t];//发送数据数组为aa[]
 164   3      
 165   3                      }
 166   2      
 167   2                      TI1=0;
 168   2      
 169   2              }
 170   1      }
 171          //======================================================
 172          void smbusInt() interrupt 7
 173          {
 174   1              SFRPAGE=0x00;
 175   1              
 176   1              if(SMB0STA==0x08)
 177   1              {
 178   2                      SMB0DAT=0x70;
 179   2                      k=1;
C51 COMPILER V7.02b   SOURCE1                                                              05/19/2006 18:09:30 PAGE 4   

 180   2                      STA=0;
 181   2              }
 182   1              if(SMB0STA==0x28||SMB0STA==0x18)
 183   1              {
 184   2                      if(k>=2)
 185   2                              STO=1;
 186   2                      if(k==1)
 187   2                              SMB0DAT=0x00;                                                                   
 188   2                      k++;
 189   2              }
 190   1      
 191   1              if(SMB0STA==0x10)
 192   1              {
 193   2                      SMB0DAT=0x6e;
 194   2                      STA=0;
 195   2              }
 196   1                      SI=0;
 197   1      }
 198          //========================================================
 199          /*void init_rtc()
 200          {
 201                  AD16 = AD17 = AD18 = 1;
 202                  
 203                  XBYTE[0xf8ff] = 0xA0; 
 204                  XBYTE[0xf9ff] = 0x00;//0x00;    second
 205                  XBYTE[0xfaff] = 0x52;//0x01;    minute
 206                  XBYTE[0xfbff] = 0x17;//0x02;    hour
 207                  XBYTE[0xfcff] = 0x05;//0x06;    day
 208                  XBYTE[0xfdff] = 0x19;//0x07;    date
 209                  XBYTE[0xfeff] = 0x05;//0x07;    month
 210                  XBYTE[0xffff] = 0x06;//0x06;    year
 211                  
 212                  XBYTE[0xfff8] = 0x20;
 213          }*/
 214          void disp_rtc()
 215          {
 216   1              AD16 = AD17 = AD18 = 1;
 217   1              
 218   1              XBYTE[0xf8ff] = (0x40||XBYTE[0xf8ff]); 
 219   1      
 220   1              a[5]              = XBYTE[0xf9ff];      
 221   1              a[6]              = XBYTE[0xfaff];
 222   1              a[7]              = XBYTE[0xfbff];
 223   1              a[8]              = (XBYTE[0xfcff]&0x07);
 224   1              a[9]              = XBYTE[0xfdff];
 225   1              a[10]             = XBYTE[0xfeff];
 226   1              a[11]             = XBYTE[0xffff];
 227   1              a[12]             = XBYTE[0xf8ff];      
 228   1              XBYTE[0xf8ff] = 0;
 229   1      }
 230          
 231          //===========================================================
 232          /*
 233                  uchar p=0x41,m=0x61;
 234          
 235                  AD16=1;AD17=0;AD18=0;
 236                  for(i=0;i<30000;i++);
 237                  read_ptr=XBYTE[0x1010];//XRAM_START_ADD;
 238                  for(i=0;i<10;i++)
 239                  {       
 240                          *read_ptr=p;
 241                          read_ptr++;
C51 COMPILER V7.02b   SOURCE1                                                              05/19/2006 18:09:30 PAGE 5   

 242                          p=p+1;  
 243                  }
 244          
 245                  AD16=1;AD17=1;AD18=0;
 246                  for(i=0;i<30000;i++);
 247                  read_ptr=XBYTE[0x1010];//XRAM_START_ADD;
 248                  for(i=0;i<10;i++)
 249                  {       
 250                          *read_ptr=m;
 251                          read_ptr++;
 252                          m=m+1;  
 253                  }
 254          
 255                  AD16=1;AD17=1;AD18=0;
 256                  for(i=0;i<30000;i++);
 257                  read_ptr=XBYTE[0x1010];//XRAM_START_ADD;1020-1029
 258                  for(i=5;i<15;i++)
 259                  {       
 260                          a[i]=*read_ptr;
 261                          read_ptr++;     
 262                  }
 263                  */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    505    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =     13    ----
   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 + -