??? 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) |
Topic | Author | Date |
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 |