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

📄 24c04.lst

📁 单片机C语言程序设计实训100例
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   24C04                                                                 08/05/2009 21:30:57 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define NOP4() {_nop_();_nop_();_nop_();_nop_();}
   6          
   7          sbit SCL = P1^0;
   8          sbit SDA = P1^1;
   9          sbit SPK = P3^0;
  10          
  11          uchar code HI_LIST[] =
  12          {
  13                  0,226,229,232,233,236,238,240,241,242,245,246,247,248
  14          };
  15          uchar code LO_LIST[] =
  16          {
  17                  0,4,13,10,20,3,8,6,2,23,5,26,1,4,3
  18          };
  19          uchar code Song_24C04[] =
  20          {
  21                  1,2,3,1,1,2,3,1,3,4,5,3,4,5
  22          };
  23          uchar sidx;
  24          
  25          void DelayMS(uint x)
  26          {
  27   1              uchar t;
  28   1              while(x--)
  29   1              {
  30   2                      for(t=120;t>0;t--);
  31   2              }
  32   1      }
  33          
  34          void Start()
  35          {
  36   1              SDA=1;SCL=1;NOP4();SDA=0;NOP4();SCL=0;
  37   1      }
  38          
  39          void Stop()
  40          {
  41   1              SDA=0;SCL=0;NOP4();SCL=1;NOP4();SDA=1;
  42   1      }
  43          
  44          void RACK()
  45          {
  46   1              SDA=1;NOP4();SCL=1;NOP4();SCL=0;
  47   1      }
  48          
  49          void NO_ACK()
  50          {
  51   1              SDA=1;SCL=1;NOP4();SCL=0;SDA=0;
  52   1      }
  53          
  54          void Write_A_Byte(uchar b)
  55          {
C51 COMPILER V8.08   24C04                                                                 08/05/2009 21:30:57 PAGE 2   

  56   1              uchar i;
  57   1              for(i=0;i<8;i++)
  58   1              {
  59   2                      b<<=1;SDA=CY;_nop_();SCL=1;NOP4();SCL=0;
  60   2              }
  61   1              RACK();
  62   1      }
  63          
  64          void Write_IIC(uchar addr,uchar dat)
  65          {
  66   1              Start();
  67   1              Write_A_Byte(0xa0);
  68   1              Write_A_Byte(addr);
  69   1              Write_A_Byte(dat);
  70   1              Stop();
  71   1              DelayMS(10);
  72   1      }
  73          
  74          uchar Read_A_Byte()
  75          {
  76   1              uchar i,b;
  77   1              for(i=0;i<8;i++)
  78   1              {
  79   2                      SCL=1;b<<=1;B|=SDA;SCL=0;
  80   2              }
  81   1              return b;
  82   1      }
  83          
  84          uchar Read_Current()
  85          {
  86   1              uchar d;
  87   1              Start();
  88   1              Write_A_Byte(0xa1);
  89   1              d=Read_A_Byte();
  90   1              NO_ACK();
  91   1              Stop();
  92   1              return d;
  93   1      }
  94          
  95          uchar Random_Read(uchar addr)
  96          {
  97   1              Start();
  98   1              Write_A_Byte(0xa0);
  99   1              Write_A_Byte(addr);
 100   1              Stop();
 101   1              return Read_Current();          
 102   1      }
 103          
 104          void T0_INT() interrupt 1
 105          {
 106   1              SPK=!SPK;
 107   1              TH0=HI_LIST[sidx];
 108   1              TL0=LO_LIST[sidx];
 109   1      }
 110          
 111          void main()
 112          {
 113   1              uchar i;
 114   1              IE=0x82;
 115   1              TMOD=0x00;
 116   1              for(i=0;i<14;i++)
 117   1              {
C51 COMPILER V8.08   24C04                                                                 08/05/2009 21:30:57 PAGE 3   

 118   2                      Write_IIC(i,Song_24C04[i]);     
 119   2              }
 120   1              while(1)
 121   1              {
 122   2                      for(i=0;i<14;i++)
 123   2                      {
 124   3                              sidx=Random_Read(i);
 125   3                              TR0=1;
 126   3                              DelayMS(300);
 127   3                      }
 128   2              }
 129   1      }
C51 COMPILER V8.08   24C04                                                                 08/05/2009 21:30:57 PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _DelayMS (BEGIN)
                                           ; SOURCE LINE # 25
;---- Variable 't' assigned to Register 'R5' ----
;---- Variable 'x' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 26
0000         ?C0001:
                                           ; SOURCE LINE # 28
0000 EF                MOV     A,R7
0001 1F                DEC     R7
0002 AA06              MOV     R2,AR6
0004 7001              JNZ     ?C0032
0006 1E                DEC     R6
0007         ?C0032:
0007 4A                ORL     A,R2
0008 600B              JZ      ?C0006
                                           ; SOURCE LINE # 29
                                           ; SOURCE LINE # 30
000A 7D78              MOV     R5,#078H
000C         ?C0003:
000C ED                MOV     A,R5
000D D3                SETB    C
000E 9400              SUBB    A,#00H
0010 40EE              JC      ?C0001
0012 1D                DEC     R5
0013 80F7              SJMP    ?C0003
                                           ; SOURCE LINE # 31
                                           ; SOURCE LINE # 32
0015         ?C0006:
0015 22                RET     
             ; FUNCTION _DelayMS (END)

             ; FUNCTION Start (BEGIN)
                                           ; SOURCE LINE # 34
                                           ; SOURCE LINE # 35
                                           ; SOURCE LINE # 36
0000 D291              SETB    SDA
0002 D290              SETB    SCL
0004 00                NOP     
0005 00                NOP     
0006 00                NOP     
0007 00                NOP     
0008 C291              CLR     SDA
000A 00                NOP     
000B 00                NOP     
000C 00                NOP     
000D 00                NOP     
000E C290              CLR     SCL
                                           ; SOURCE LINE # 37
0010 22                RET     
             ; FUNCTION Start (END)

             ; FUNCTION L?0033 (BEGIN)
0000 120000      R     LCALL   _Write_A_Byte
0003 AF05              MOV     R7,AR5
0005 120000      R     LCALL   _Write_A_Byte
             ; FUNCTION Stop (BEGIN)
                                           ; SOURCE LINE # 39
                                           ; SOURCE LINE # 40
                                           ; SOURCE LINE # 41
C51 COMPILER V8.08   24C04                                                                 08/05/2009 21:30:57 PAGE 5   

0008 C291              CLR     SDA
000A C290              CLR     SCL
000C 00                NOP     
000D 00                NOP     
000E 00                NOP     
000F 00                NOP     
0010 D290              SETB    SCL
0012 00                NOP     
0013 00                NOP     
0014 00                NOP     
0015 00                NOP     
0016 D291              SETB    SDA
                                           ; SOURCE LINE # 42
0018 22                RET     
             ; FUNCTION Stop (END)

             ; FUNCTION RACK (BEGIN)
                                           ; SOURCE LINE # 44
                                           ; SOURCE LINE # 45
                                           ; SOURCE LINE # 46
0000 D291              SETB    SDA
0002 00                NOP     
0003 00                NOP     
0004 00                NOP     
0005 00                NOP     
0006 D290              SETB    SCL
0008 00                NOP     
0009 00                NOP     
000A 00                NOP     
000B 00                NOP     

⌨️ 快捷键说明

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