Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
03/06/08 07:30
Read: times


 
#151942 - The ASM lst file
Responding to: ???'s previous message
Guys
I have got a lst file after enabling the ASM checkbox in the create list file section in the device options. Thanks Jon.


C51 COMPILER V7.20   SPI                                                                   03/06/2008 12:56:07 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN SPI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SPI.c LARGE BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          /*****************************************************************************************/
   2          //Program: Interfacing AT93C46A serial EEPROM to a P89V51RD2 using the SPI//
   3          /*****************************************************************************************/
   4          
   5          
   6          #include <stdio.h>
   7          #include <p89v51rx2.h>
   8          
   9          unsigned char spi_transfer(unsigned char dat);
  10          void delay(unsigned char Delval);
  11          void delay_ms(unsigned int Delval_ms);
  12          
  13          // Opcodes for controling the EPROM
  14          
  15          #define EWEN 0x98
  16          #define ERASE 0xe0
  17          #define WRITE 0xa0
  18          #define READ 0xc0
  19          
  20          unsigned char ADDRESS = 0x01; //Memory Address
  21          unsigned char DATA_1 = 0x25; // Data to be written to the memory
  22          unsigned char read_data = 0x00; //Data to be read from the memory
  23          
  24          //SPI Pin Defination 
  25          sbit cs = P1^4;
  26          sbit di = P1^5;
  27          sbit dou = P1^6;
  28          sbit clk = P1^7;
  29          
  30          //Debugging LEDs
  31          sbit LED1 = P2^0;
  32          sbit LED2 = P2^1;
  33          
  34          //SPI READ and WRITE Function
  35          unsigned char spi_transfer(unsigned char dat)
  36          {
  37   1         SPDAT = dat;
  38   1         while (!(SPCFG & 0x80));
  39   1         SPCFG = 0x00;
  40   1         read_data = SPDAT;
  41   1         LED1 = 1; //LED1 used to check if the spi_transfer function is completely executed
  42   1         return(read_data);
  43   1         
  44   1      }
  45          
  46          //DELAY FUNCTIONS
  47          //delay(10) = 200usec.
  48          
  49          void delay(unsigned char Delval)
  50          {
  51   1       unsigned char i=25;
  52   1       for(;Delval!=0;Delval--)
  53   1        for(;i!=0;i--);
  54   1      }
  55           
C51 COMPILER V7.20   SPI                                                                   03/06/2008 12:56:07 PAGE 2   

  56          void delay_ms(unsigned int Delval_ms)
  57          {
  58   1       for(;Delval_ms!=0;Delval_ms--)
  59   1       {
  60   2        delay(250);
  61   2        delay(250);
  62   2        delay(250);
  63   2        delay(250);
  64   2       }
  65   1      }
  66          //MAIN
  67          void main(void)
  68          {
  69   1      
  70   1            unsigned char DATA_1 = 0x25; 
  71   1            unsigned char ret_dat = 0;
  72   1              
  73   1              LED1 = 0;
  74   1              LED2 = 0;
  75   1      
  76   1              cs = 1;
  77   1              di = 1;
  78   1              dou = 1;
  79   1              clk = 1;
  80   1                 
  81   1             SPCTL = 0x73; //initialize SPI
  82   1             cs = 0;
  83   1             delay_ms(10);
  84   1                         
  85   1                 cs = 1;
  86   1             spi_transfer(EWEN); //enable write of eeprom
  87   1             cs = 0;
  88   1             delay_ms(10);
  89   1      
  90   1                 cs = 1;
  91   1                 spi_transfer(ERASE);
  92   1                 spi_transfer(ADDRESS);
  93   1             cs = 0;
  94   1             delay_ms(10);
  95   1      
  96   1             cs = 1;
  97   1             spi_transfer(WRITE); //write sample data to the memory
  98   1             spi_transfer(ADDRESS);
  99   1             spi_transfer(DATA_1); 
 100   1             cs = 0;
 101   1             delay_ms(10);
 102   1      
 103   1           cs = 1;
 104   1           spi_transfer(READ); //read the data that is written at previous address
 105   1           spi_transfer(ADDRESS);
 106   1           ret_dat = read_data;
 107   1           cs = 0;
 108   1           delay_ms(10);
 109   1         
 110   1         //Check if all above operations are performed as desired
 111   1         if(ret_dat == DATA_1)
 112   1        {     
 113   2           LED2 = 1;
 114   2        }
 115   1        else    
 116   1       {
 117   2          LED2 = 0;
C51 COMPILER V7.20   SPI                                                                   03/06/2008 12:56:07 PAGE 3   

 118   2       } 
 119   1       while(1);
 120   1      
 121   1      }
 122          
C51 COMPILER V7.20   SPI                                                                   03/06/2008 12:56:07 PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION L?0024 (BEGIN)
0000 120000      R     LCALL   _spi_transfer
0003 900000      R     MOV     DPTR,#ADDRESS
0006 E0                MOVX    A,@DPTR
0007 FF                MOV     R7,A
             ; FUNCTION _spi_transfer (BEGIN)
                                           ; SOURCE LINE # 35
;---- Variable 'dat' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 36
                                           ; SOURCE LINE # 37
0008 8F86              MOV     SPDAT,R7
000A         ?C0001:
                                           ; SOURCE LINE # 38
000A E5AA              MOV     A,SPCFG
000C 30E7FB            JNB     ACC.7,?C0001
000F         ?C0002:
                                           ; SOURCE LINE # 39
000F E4                CLR     A
0010 F5AA              MOV     SPCFG,A
                                           ; SOURCE LINE # 40
0012 900000      R     MOV     DPTR,#read_data
0015 E586              MOV     A,SPDAT
0017 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 41
0018 D2A0              SETB    LED1
                                           ; SOURCE LINE # 42
001A E0                MOVX    A,@DPTR
001B FF                MOV     R7,A
                                           ; SOURCE LINE # 44
001C         ?C0003:
001C 22                RET     
             ; FUNCTION _spi_transfer (END)

             ; FUNCTION L?0025 (BEGIN)
0000 7FFA              MOV     R7,#0FAH
0002 120000      R     LCALL   _delay
0005 7FFA              MOV     R7,#0FAH
             ; FUNCTION _delay (BEGIN)
                                           ; SOURCE LINE # 49
;---- Variable 'Delval' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 50
                                           ; SOURCE LINE # 51
;---- Variable 'i' assigned to Register 'R6' ----
0007 7E19              MOV     R6,#019H
                                           ; SOURCE LINE # 52
0009         ?C0004:
0009 EF                MOV     A,R7
000A 6009              JZ      ?C0010
                                           ; SOURCE LINE # 53
000C         ?C0007:
000C EE                MOV     A,R6
000D 6003              JZ      ?C0006
000F 1E                DEC     R6
0010 80FA              SJMP    ?C0007
0012         ?C0006:
0012 1F                DEC     R7
0013 80F4              SJMP    ?C0004
                                           ; SOURCE LINE # 54
0015         ?C0010:
C51 COMPILER V7.20   SPI                                                                   03/06/2008 12:56:07 PAGE 5   

0015 22                RET     
             ; FUNCTION _delay (END)

             ; FUNCTION L?0021 (BEGIN)
0000         L?0022:
0000 120000      R     LCALL   _spi_transfer
0003         L?0023:
0003 C294              CLR     cs
0005 7F0A              MOV     R7,#0AH
0007 7E00              MOV     R6,#00H
             ; FUNCTION _delay_ms (BEGIN)
                                           ; SOURCE LINE # 56
;---- Variable 'Delval_ms' assigned to Register 'R4/R5' ----
0009 AD07              MOV     R5,AR7
000B AC06              MOV     R4,AR6
                                           ; SOURCE LINE # 57
                                           ; SOURCE LINE # 58
000D         ?C0011:
000D ED                MOV     A,R5
000E 4C                ORL     A,R4
000F 600D              JZ      ?C0014
                                           ; SOURCE LINE # 59
                                           ; SOURCE LINE # 60
                                           ; SOURCE LINE # 61
0011 120000      R     LCALL   L?0025
                                           ; SOURCE LINE # 62
                                           ; SOURCE LINE # 63
0014 120000      R     LCALL   L?0025
                                           ; SOURCE LINE # 64
0017 ED                MOV     A,R5
0018 1D                DEC     R5
0019 70F2              JNZ     ?C0011
001B 1C                DEC     R4
001C         ?C0020:
001C 80EF              SJMP    ?C0011
                                           ; SOURCE LINE # 65
001E         ?C0014:
001E 22                RET     
             ; FUNCTION _delay_ms (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 67
                                           ; SOURCE LINE # 68
                                           ; SOURCE LINE # 70
;---- Variable 'DATA_1' assigned to Register 'R3' ----
0000 7B25              MOV     R3,#025H
                                           ; SOURCE LINE # 71
;---- Variable 'ret_dat' assigned to Register 'R2' ----
0002 E4                CLR     A
0003 FA                MOV     R2,A
                                           ; SOURCE LINE # 73
0004 C2A0              CLR     LED1
                                           ; SOURCE LINE # 74
0006 C2A1              CLR     LED2
                                           ; SOURCE LINE # 76
0008 D294              SETB    cs
                                           ; SOURCE LINE # 77
000A D295              SETB    di
                                           ; SOURCE LINE # 78
000C D296              SETB    dou
                                           ; SOURCE LINE # 79
000E D297              SETB    clk
C51 COMPILER V7.20   SPI                                                                   03/06/2008 12:56:07 PAGE 6   

                                           ; SOURCE LINE # 81
0010 75D573            MOV     SPCTL,#073H
                                           ; SOURCE LINE # 82
0013 C294              CLR     cs
                                           ; SOURCE LINE # 83
0015 7F0A              MOV     R7,#0AH
0017 FE                MOV     R6,A
0018 120000      R     LCALL   _delay_ms
                                           ; SOURCE LINE # 85
001B D294              SETB    cs
                                           ; SOURCE LINE # 86
001D 7F98              MOV     R7,#098H
                                           ; SOURCE LINE # 87
                                           ; SOURCE LINE # 88
001F 120000      R     LCALL   L?0021
                                           ; SOURCE LINE # 90
0022 D294              SETB    cs
                                           ; SOURCE LINE # 91
0024 7FE0              MOV     R7,#0E0H
0026 120000      R     LCALL   _spi_transfer
                                           ; SOURCE LINE # 92
0029 900000      R     MOV     DPTR,#ADDRESS
002C E0                MOVX    A,@DPTR
002D FF                MOV     R7,A
                                           ; SOURCE LINE # 93
                                           ; SOURCE LINE # 94
002E 120000      R     LCALL   L?0021
                                           ; SOURCE LINE # 96
0031 D294              SETB    cs
                                           ; SOURCE LINE # 97
0033 7FA0              MOV     R7,#0A0H
                                           ; SOURCE LINE # 98
0035 120000      R     LCALL   L?0024
                                           ; SOURCE LINE # 99
0038 7F25              MOV     R7,#025H
                                           ; SOURCE LINE # 100
                                           ; SOURCE LINE # 101
003A 120000      R     LCALL   L?0022
                                           ; SOURCE LINE # 103
003D D294              SETB    cs
                                           ; SOURCE LINE # 104
003F 7FC0              MOV     R7,#0C0H
                                           ; SOURCE LINE # 105
0041 120000      R     LCALL   L?0024
                                           ; SOURCE LINE # 106
0044 900000      R     MOV     DPTR,#read_data
0047 E0                MOVX    A,@DPTR
0048 FA                MOV     R2,A
                                           ; SOURCE LINE # 107
                                           ; SOURCE LINE # 108
0049 120000      R     LCALL   L?0023
                                           ; SOURCE LINE # 111
004C EA                MOV     A,R2
004D B42504            CJNE    A,#025H,?C0015
                                           ; SOURCE LINE # 112
                                           ; SOURCE LINE # 113
0050 D2A1              SETB    LED2
                                           ; SOURCE LINE # 114
0052 8002              SJMP    ?C0017
0054         ?C0015:
                                           ; SOURCE LINE # 116
                                           ; SOURCE LINE # 117
C51 COMPILER V7.20   SPI                                                                   03/06/2008 12:56:07 PAGE 7   

0054 C2A1              CLR     LED2
                                           ; SOURCE LINE # 118
0056         ?C0017:
                                           ; SOURCE LINE # 119
0056 80FE              SJMP    ?C0017
             ; FUNCTION main (END)



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


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


List of 25 messages in thread
TopicAuthorDate
Problem with P89V51RD2 to AT93C46A (SERIAL EEPROM)            01/01/70 00:00      
   Dummy Bit            01/01/70 00:00      
      RE: Dummy Bit & Code Update            01/01/70 00:00      
         asm?            01/01/70 00:00      
            ASM            01/01/70 00:00      
               disassemble            01/01/70 00:00      
                  Re: ASM            01/01/70 00:00      
                     options            01/01/70 00:00      
                        that is silly            01/01/70 00:00      
                           that's a +-10 lines C source...            01/01/70 00:00      
                              CODE compiler directive            01/01/70 00:00      
                                 #code ?            01/01/70 00:00      
                                    Sorry.... here            01/01/70 00:00      
                              I believe in doing it right, even when ...            01/01/70 00:00      
                                 10 lines maximum            01/01/70 00:00      
                                    Thanks Jon Ledbetter            01/01/70 00:00      
               .lst            01/01/70 00:00      
         "1" preceeding instructions and "0" for data            01/01/70 00:00      
   The ASM lst file            01/01/70 00:00      
      Jan, would you not ...            01/01/70 00:00      
         to be absolutely honest...            01/01/70 00:00      
            LEDs            01/01/70 00:00      
               Re: LEDs            01/01/70 00:00      
                  this might be the problem            01/01/70 00:00      
                     LED Test            01/01/70 00:00      

Back to Subject List