📄 24c08page.lst
字号:
C51 COMPILER V7.10 24C08PAGE 05/07/2006 17:33:52 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE 24C08PAGE
OBJECT MODULE PLACED IN 24c08page.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 24c08page.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE
line level source
1
2 /*
3 ****************************************************************************
4 AT24C08 test program, Test ok!,Us with [delay.asm]
5 Write byte Tan-wentang, 2004-08-15
6
7 ****************************************************************************
8 */
9
10 //#pragma src(at24c08asm.asm)
11 //#pragma src
12
13 //#pragma CODE
14
15 #include <REG2051.H>
16 #include <intrins.H>
17
18 #include "AT24C08PAGE_Ok.H"
19 //#include "project.h"
20 sbit SCL = P3^4;
21 sbit SDA = P3^5;
22 sbit WP = P3^3;
23 void delay_ms (unsigned char delaytime);
24 //=========================================================================
25
26 bit EETestAcknowledge (void) {
27 1 SDA = 1;
28 1 delay_ms(10);
29 1 SCL = 1;
30 1 delay_ms(10);
31 1 F0 = SDA;
32 1 delay_ms(10);
33 1 SCL = 0;
34 1 return F0;
35 1 }
36 //=========================================================================
37
38 unsigned char EEReadByte (void) {
39 1 unsigned char d = 0;
40 1 unsigned char i;
41 1
42 1 i = 8;
43 1 do {
44 2 SCL = 1;
45 2 d *= 2;
46 2 if (SDA) d++;
47 2 SCL = 0;
48 2 delay_ms(10);
49 2 } while (--i);
50 1 return d;
51 1 }
52 //=========================================================================
53
54 void EESendByte (unsigned char d) {
55 1 unsigned char i;
C51 COMPILER V7.10 24C08PAGE 05/07/2006 17:33:52 PAGE 2
56 1
57 1 i = 8;
58 1 do {
59 2 SDA = (bit)(d & 0x80);
60 2 delay_ms(10);
61 2 SCL = 1;
62 2 delay_ms(10);
63 2 SCL = 0;
64 2 d *= 2;
65 2 } while(--i);
66 1 return;
67 1 }
68
69 //=========================================================================
70
71 void EEStop (void) {
72 1 SCL = 0;
73 1 delay_ms(10);
74 1 SDA = 0;
75 1 delay_ms(10);
76 1 SCL = 1;
77 1 delay_ms(10);
78 1 SDA = 1;
79 1 return;
80 1 }
81 //=========================================================================
82 void EEAcknowledge (void) {
83 1 SDA = 0;
84 1 delay_ms(10);
85 1 SCL = 1;
86 1 delay_ms(10);
87 1 SCL = 0;
88 1 delay_ms(10);
89 1 SDA = 1;
90 1 return;
91 1 }
92 //=========================================================================
93 void EENoAcknowledge (void) {
94 1 SDA = 1;
95 1 delay_ms(10);
96 1 SCL = 1;
97 1 delay_ms(10);
98 1 SCL = 0;
99 1 return;
100 1 }
101 //=========================================================================
102 void EEStart (void) {
103 1 SDA = 1;
104 1 delay_ms(10);
105 1 SCL = 1;
106 1 delay_ms(10);
107 1 SDA = 0;
108 1 delay_ms(10);
109 1 SCL = 0;
110 1 return;
111 1 }
112 //=========================================================================
113
114 void EESendWcom (unsigned char Block, com) {
115 1 EEStart();
116 1 //EESendByte(0xa0);
117 1 EESendByte(0xa0 | com | ((Block & 0x07) * 2));
C51 COMPILER V7.10 24C08PAGE 05/07/2006 17:33:52 PAGE 3
118 1 }
119
120 //=========================================================================
121
122 void EEReadPage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) {
123 1 WP = 0;
124 1 EESendWcom(Block , 0x00);
125 1 EETestAcknowledge();
126 1
127 1 EESendByte(StartAddr);
128 1 EETestAcknowledge();
129 1
130 1 EEStart();
131 1 EESendWcom(Block , 0x01);
132 1 EETestAcknowledge();
133 1
134 1 do {
135 2 if (1 == n) break;
136 2 if (0 == n) break;
137 2
138 2 *str = EEReadByte();
139 2 EEAcknowledge();
140 2 str++;
141 2 n--;
142 2 } while(1);
143 1 *str = EEReadByte();
144 1 EENoAcknowledge();
145 1 EEStop();
146 1 WP = 1;
147 1 //EEDelayMs(0x000a);
148 1 }
149 // 0 1 2 3 4 5 6 7 * 256 = 8 * 0x100 = 0x800
150 // 0 1 2 3 4 5 6 7 * 256 = 8 * 0x100 * 8 = 0x4000
151 //=========================================================================
152 //; MOV R5, #83H ;DATAADDR
153 //; MOV R3, 2BH ;EEPROMADDR
154 //; MOV R2, 2AH ;EEPROM BLOCK ADDR
155 //; MOV R7, #01H ;BYTE COUNT
156 //; LCALL L1EE3H
157 //=========================================================================
158 void EEWritePage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) {
159 1 WP = 0;
160 1 EESendWcom(Block , 0x00);
161 1 EETestAcknowledge();
162 1
163 1 EESendByte(StartAddr);
164 1 EETestAcknowledge();
165 1
166 1 do {
167 2 if (0 == n) break;
168 2 EESendByte(*str);
169 2 EETestAcknowledge();
170 2 str++;
171 2 n--;
172 2 } while (1);
173 1 EEStop();
174 1 delay_ms(0xfe);
175 1 WP = 1;
176 1 }
177 void delay_ms (unsigned char delaytime)
178 { //22.1184
179 1 unsigned char i,j;
C51 COMPILER V7.10 24C08PAGE 05/07/2006 17:33:52 PAGE 4
180 1 for (i = 0;i < delaytime;i++)
181 1 for (j = 0 ;j<delaytime;j++);
182 1 }
C51 COMPILER V7.10 24C08PAGE 05/07/2006 17:33:52 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION EETestAcknowledge (BEGIN)
; SOURCE LINE # 26
; SOURCE LINE # 27
0000 D2B5 SETB SDA
; SOURCE LINE # 28
0002 7F0A MOV R7,#0AH
0004 120000 R LCALL _delay_ms
; SOURCE LINE # 29
0007 D2B4 SETB SCL
; SOURCE LINE # 30
0009 7F0A MOV R7,#0AH
000B 120000 R LCALL _delay_ms
; SOURCE LINE # 31
000E A2B5 MOV C,SDA
0010 92D5 MOV F0,C
; SOURCE LINE # 32
0012 7F0A MOV R7,#0AH
0014 120000 R LCALL _delay_ms
; SOURCE LINE # 33
0017 C2B4 CLR SCL
; SOURCE LINE # 34
0019 A2D5 MOV C,F0
; SOURCE LINE # 35
001B ?C0001:
001B 22 RET
; FUNCTION EETestAcknowledge (END)
; FUNCTION EEReadByte (BEGIN)
; SOURCE LINE # 38
; SOURCE LINE # 39
0000 E4 CLR A
0001 F500 R MOV d,A
; SOURCE LINE # 42
0003 750008 R MOV i,#08H
0006 ?C0004:
; SOURCE LINE # 43
; SOURCE LINE # 44
0006 D2B4 SETB SCL
; SOURCE LINE # 45
0008 E500 R MOV A,d
000A 25E0 ADD A,ACC
000C F500 R MOV d,A
; SOURCE LINE # 46
000E 30B502 JNB SDA,?C0005
0011 0500 R INC d
0013 ?C0005:
; SOURCE LINE # 47
0013 C2B4 CLR SCL
; SOURCE LINE # 48
0015 7F0A MOV R7,#0AH
0017 120000 R LCALL _delay_ms
; SOURCE LINE # 49
001A D500E9 R DJNZ i,?C0004
; SOURCE LINE # 50
001D AF00 R MOV R7,d
; SOURCE LINE # 51
001F ?C0006:
001F 22 RET
; FUNCTION EEReadByte (END)
C51 COMPILER V7.10 24C08PAGE 05/07/2006 17:33:52 PAGE 6
; FUNCTION _EESendByte (BEGIN)
; SOURCE LINE # 54
0000 8F00 R MOV d,R7
; SOURCE LINE # 57
0002 750008 R MOV i,#08H
0005 ?C0009:
; SOURCE LINE # 58
; SOURCE LINE # 59
0005 E500 R MOV A,d
0007 33 RLC A
0008 92B5 MOV SDA,C
; SOURCE LINE # 60
000A 7F0A MOV R7,#0AH
000C 120000 R LCALL _delay_ms
; SOURCE LINE # 61
000F D2B4 SETB SCL
; SOURCE LINE # 62
0011 7F0A MOV R7,#0AH
0013 120000 R LCALL _delay_ms
; SOURCE LINE # 63
0016 C2B4 CLR SCL
; SOURCE LINE # 64
0018 E500 R MOV A,d
001A 25E0 ADD A,ACC
001C F500 R MOV d,A
; SOURCE LINE # 65
001E D500E4 R DJNZ i,?C0009
; SOURCE LINE # 67
0021 ?C0010:
0021 22 RET
; FUNCTION _EESendByte (END)
; FUNCTION EEStop (BEGIN)
; SOURCE LINE # 71
; SOURCE LINE # 72
0000 C2B4 CLR SCL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -