📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 01/08/2007 14:47:29 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<regsnd1.h>
2 #include <absacc.h>
3 #include <stdio.h>
4
5 /*硬件地址定义*/
6 #define WRITE_DATA 0x0884
7 #define WRITE_COM 0x0885
8 #define WRITE_ADD 0x0886
9 #define READ_DATA 0x0884
10
11 /*K9F1G08U0M指令集*/
12 #define READ A 0x00
13 #define READ B 0x01
*** WARNING C317 IN LINE 13 OF main.c: attempt to redefine macro 'READ'
14 #define READID 0x90
15 #define RESET 0xff
16 #define PAGEPROGRAM 0x80
17 #define BLOCKERASE 0x60
18 #define READSTATUS 0x70
19
20
21 #define SWAP1(x) ((x)&0xff)
22 #define SWAP2(x) (((x)>>9)&0xff)
23 #define SWAP3(x) (((x)>>17)&0xff)
24 #define SWAP4(x) (((x)>>25)&0x03)
25 sbit fRB=P5^0;
26 /*------------------------------------------------------------------------------
27 初始化
28 ---------------------------------------------------------------------------------*/
29 void Init()
30 {
31 1 //初始化串行口
32 1
33 1 SCON = 0X52;
34 1 PCON = 0X80 ;
35 1 TMOD = 0X20;
36 1 TCON = 0x69;
37 1 TH1=0Xf5;
38 1 TL1=0Xf5;
39 1
40 1 }
41 /*----------------------------------------------------------------------------
42 延时一些时间
43 ------------------------------------------------------------------------------*/
44 void delay10ms(unsigned int x)
45 {
46 1 unsigned int i;
47 1 for(i=0;i<x;i++);
48 1 }
49 /*----------------------------------------------------------------------------
50 给K9F1G08U0M发送指令
51 ------------------------------------------------------------------------------
52 --*/
53 void WriteCom(unsigned char i)
54 {
C51 COMPILER V7.50 MAIN 01/08/2007 14:47:29 PAGE 2
55 1 XBYTE[WRITE_COM]=i;
56 1 }
57 /*----------------------------------------------------------------------------
58 给K9F1G08U0M发送地址
59 ------------------------------------------------------------------------------
60 --*/
61 void WriteAdd(unsigned char i)
62 {
63 1 XBYTE[WRITE_ADD]=i;
64 1 }
65 /*----------------------------------------------------------------------------
66 给K9F1G08U0M发送数据
67 ------------------------------------------------------------------------------
68 --*/
69 void WriteData(unsigned char i)
70 {
71 1 XBYTE[WRITE_DATA]=i;
72 1 }
73 /*----------------------------------------------------------------------------
74 向K9F1G08U0M读取数据
75 ------------------------------------------------------------------------------
76 --*/
77 unsigned char ReadData(void)
78 {
79 1 return (XBYTE[READ_DATA]);
80 1 }
81
82
83 /*----------------------------------------------------------------------------
84 复位K9F1G08U0M
85 -----------------------------------------------------------------------------*/
86 void Reset(void)
87 {
88 1 WriteCom(0xff);
89 1 }
90 /////////////
91 void print(unsigned char x)
92 {
93 1 SBUF=x;
94 1 while(!TI);
95 1 TI=0;
96 1 }
97 /*----------------------------------------------------------------------------
98 读取K9F1G08U0M的ID
99 -----------------------------------------------------------------------------*/
100 void ReadID(void)
101 {
102 1 unsigned char x,y,z,u;
103 1 WriteCom(0x90);
104 1 // WriteAdd(0x00);//////////////////
105 1 x=ReadData();
106 1 y=ReadData();
107 1 z=ReadData();
108 1 u=ReadData();
109 1 // print(x);
110 1 // print(y);
111 1 // print(z);
112 1 // print(u);
113 1 printf("ID of K9F1G08U0M is %x,%x,%x,%x\n",x,y,z,u);
114 1 }
115 /*----------------------------------------------------------------------------
116 块擦除
C51 COMPILER V7.50 MAIN 01/08/2007 14:47:29 PAGE 3
117 -----------------------------------------------------------------------------*/
118 void BlockErase(unsigned long blockadd)
119 {
120 1 unsigned char x;
121 1 WriteCom(0x60);
122 1 // WriteAdd(SWAP1(blockadd));
123 1 WriteAdd(SWAP2(blockadd));
124 1 WriteAdd(SWAP3(blockadd));
125 1 WriteAdd(SWAP4(blockadd));
126 1 WriteCom(0xd0);
127 1 while(!fRB);
128 1 delay10ms(10000);
129 1 WriteCom(0x70);//读状态命令
130 1 x= ReadData();//读状态值
131 1
132 1 if(x&0x01)printf("erase error!!!%x\n",x);
133 1 else printf("erase completed!!%x\n",x);
134 1
135 1 }
136 /*----------------------------------------------------------------------------
137 读地址0x--------的数据
138 -----------------------------------------------------------------------------*/
139 unsigned char Read(unsigned long add)
140 {
141 1 unsigned char x;
142 1 if(add&0x100)WriteCom(0x01);
143 1 else WriteCom(0x00);
144 1 WriteAdd(SWAP1(add));
145 1 WriteAdd(SWAP2(add));
146 1 WriteAdd(SWAP3(add));
147 1 WriteAdd(SWAP4(add));
148 1 WriteCom(0x30);
149 1 while(!fRB);
150 1 x=ReadData();
151 1 return x;
152 1 }
153 /*----------------------------------------------------------------------------
154 向地址0x--------写数据
155 -----------------------------------------------------------------------------*/
156 void Write(unsigned long add,unsigned char d)
157 {
158 1 unsigned char x;
159 1 if(add&0x100)WriteCom(0x01);
160 1 else WriteCom(0x00);
161 1 WriteCom(0x80);
162 1 // delay10ms(1);
163 1 WriteAdd(SWAP1(add));
164 1 WriteAdd(SWAP2(add));
165 1 WriteAdd(SWAP3(add));
166 1 WriteAdd(SWAP4(add));
167 1 WriteData(d);
168 1 WriteCom(0x10);
169 1 while(!fRB);
170 1 delay10ms(10000);
171 1 WriteCom(0x70);
172 1 x=ReadData();
173 1 if(x&0x01)printf("write error!!!%x\n",x);
174 1 else printf("write completed!!%x\n",x);
175 1 }
176 main()
177 {
178 1 unsigned char x=16;
C51 COMPILER V7.50 MAIN 01/08/2007 14:47:29 PAGE 4
179 1 unsigned long add;
180 1 Init();
181 1 Reset();
182 1 printf("K9F1G08U0M ready!!\n");
183 1 ReadID();
184 1 delay10ms(10000);
185 1 BlockErase(0x00000000);
186 1 // Write(1,0x98);
187 1 // x=Read(1);
188 1 // printf("0x00000000=%x\n",x);
189 1
190 1 add=0x00000000;
191 1 while((0x00000010-add))
192 1 {
193 2
194 2 Write(add,0x01);
195 2 add++;;
196 2 }
197 1
198 1 delay10ms(10000);
199 1
200 1 add=0x00000000;
201 1 while((0x00000010-add))
202 1 {
203 2 x=Read(add);
204 2 delay10ms(10000);
205 2 printf("0x%lx=%x\n",add,x);
206 2 add++;
207 2 }
208 1 while(1);
209 1 }
210
211
212
213
214
215
216
217
218
219
220
221
222
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 660 ----
CONSTANT SIZE = 141 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -