| ??? 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 |



