📄 fram.lst
字号:
C51 COMPILER V7.50 FRAM 07/20/2005 09:16:50 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE FRAM
OBJECT MODULE PLACED IN E:\空调计费\空调计费\FRAM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\空调计费\空调计费\FRAM.C DB SB OE
line level source
1 #include "P89C60X2.h"
2 #include "hicj6.h"
3 #include "fram.h"
4
5 /* here is the instrution of x25045*/
6 #define WREN 0x06
7 #define WRDI 0x04
8 #define RDSR 0x05
9 #define WRSR 0x01
10 #define READ 0x03
11 #define WRITE 0x02
12 extern union hdd_long {BYTE Hdd_B[4];unsigned long Hdd_L;} Hdd_Str;
13
14 unsigned char Read8()
15 {
16 1 bit bData;
17 1 BYTE cLoop;
18 1 BYTE cData;
19 1 for(cLoop=0;cLoop<8;cLoop++)
20 1 {
21 2 SK=1;
22 2 SK=0;
23 2 SIO=1;
24 2 bData=SIO;
25 2 cData<<=1;
26 2 if(bData)
27 2 {
28 3 cData|=0x01;
29 3 }
30 2 }
31 1 return cData;
32 1 }
33
34 void Write8(BYTE cData)
35 {
36 1 BYTE cLoop;
37 1 for(cLoop=0;cLoop<8;cLoop++)
38 1 {
39 2 if((cData&0x80)==0) SIO=0;
40 2 else SIO=1;
41 2 SK=0;
42 2 SK=1;
43 2 cData<<=1;
44 2 }
45 1 SIO=1;
46 1 }
47
48 BYTE ReadSR()
49 {
50 1 BYTE cData;
51 1 CS=0;
52 1 Write8(RDSR);
53 1 cData=Read8();
54 1 CS=1;
55 1 return cData;
C51 COMPILER V7.50 FRAM 07/20/2005 09:16:50 PAGE 2
56 1 }
57 /*
58 BYTE WriteSR(BYTE cData)
59 {
60 BYTE cTemp;
61 cTemp=ReadSR();
62 if((cTemp&0x01)==1)
63 return 0;
64 CS=0;
65 Write8(WREN);
66 CS=1;
67 CS=0;
68 Write8(WRSR);
69 Write8(cData);
70 CS=1;
71 return 1;
72 }
73 */
74
75 #ifdef Fm25040
BYTE Read1B(WORD cAddress)
/* 读入一个字节,cAddress为读入地址 */
{
BYTE cData,a;
EA=0;
while((ReadSR()&0x01)==1)
{}
CS=0;
short_delay();
if(cAddress<0x100)
{
a=READ;
}
else
{
a=READ|0x08;
}
Write8(a);
a=cAddress;
Write8(a);
cData=Read8();
CS=1;
EA=1;
return cData;
}
void Write1B(BYTE cData,WORD cAddress)
/* 写入一个字节,cData为写入的数,cAddress为写入地址 */
{
BYTE a;
EA=0;
while((ReadSR()&0x01)==1)
{}
CS=0;
short_delay();
Write8(WREN);
SK=0;
CS=1;
CS=0;
if(cAddress<0x100)
{
a=WRITE;
C51 COMPILER V7.50 FRAM 07/20/2005 09:16:50 PAGE 3
}
else
{
a=WRITE|0x08;
}
Write8(a);
a=cAddress;
Write8(a);
Write8(cData);
SK=0;
CS=1;
EA=1;
}
#endif
132
133 #ifdef Fm25640
134 BYTE Read1B(WORD cAddress)
135 /* 读入一个字节,cAddress为读入地址 */
136 {
137 1 BYTE cData,a;
138 1 EA=0;
139 1 while((ReadSR()&0x01)==1)
140 1 {}
141 1 CS=0;
142 1 short_delay();
143 1 Write8(READ);
144 1 a=cAddress>>8;
145 1 Write8(a);
146 1 a=cAddress;
147 1 Write8(a);
148 1 cData=Read8();
149 1 CS=1;
150 1 EA=1;
151 1 return cData;
152 1 }
153
154 void Write1B(BYTE cData,WORD cAddress)
155 /* 写入一个字节,cData为写入的数,cAddress为写入地址 */
156 {
157 1 BYTE a;
158 1 EA=0;
159 1 while((ReadSR()&0x01)==1)
160 1 {}
161 1 CS=0;
162 1 short_delay();
163 1 Write8(WREN);
164 1 SK=0;
165 1 CS=1;
166 1 CS=0;
167 1
168 1 Write8(WRITE);
169 1
170 1 a=cAddress>>8;
171 1 Write8(a);
172 1 a=cAddress;
173 1 Write8(a);
174 1 Write8(cData);
175 1 SK=0;
176 1 CS=1;
177 1 EA=1;
178 1 }
179
C51 COMPILER V7.50 FRAM 07/20/2005 09:16:50 PAGE 4
180 #endif
181
182 unsigned long Read_Hdd(unsigned char i)
183 {
184 1 i<<=2;
185 1 Hdd_Str.Hdd_B[0]=Read1B(i);
186 1 Hdd_Str.Hdd_B[1]=Read1B(i+1);
187 1 Hdd_Str.Hdd_B[2]=Read1B(i+2);
188 1 Hdd_Str.Hdd_B[3]=Read1B(i+3);
189 1 return Hdd_Str.Hdd_L;
190 1 }
191 void Write_Hdd(unsigned char i)
192 {
193 1 i<<=2;
194 1 Write1B(Hdd_Str.Hdd_B[0],i);
195 1 Write1B(Hdd_Str.Hdd_B[1],i+1);
196 1 Write1B(Hdd_Str.Hdd_B[2],i+2);
197 1 Write1B(Hdd_Str.Hdd_B[3],i+3);
198 1 }
199
C51 COMPILER V7.50 FRAM 07/20/2005 09:16:50 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
CS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0084H 1
SK . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0086H 1
ReadSR . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cData. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_Write8. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cData. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
cLoop. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
short_delay. . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
Hdd_Str. . . . . . . . . . . . . . . . EXTERN DATA UNION ----- 4
Read8. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
bData. . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
cLoop. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
cData. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
hdd_long . . . . . . . . . . . . . . . * TAG * ----- UNION ----- 4
Hdd_B. . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 4
Hdd_L. . . . . . . . . . . . . . . . MEMBER ----- U_LONG 0000H 4
_Read_Hdd. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
_Read1B. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0004H -----
cAddress . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
cData. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
a. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_Write_Hdd . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
_Write1B . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cData. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
cAddress . . . . . . . . . . . . . . AUTO DATA U_INT 0001H 2
a. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
SIO. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0085H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 283 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -