📄 text1.lst
字号:
167
168
169 void SPI_interrpt() interrupt 6 //SPI中断服务程序
170 {
171 1 if(SPIF==1)
172 1 {SPIF=0;spi_flag=1;}
173 1 }
174 /*发送一个字节*/
175 void SendSPI(unsigned int spidat)
176 {
177 1 SPIF=0;
178 1 SPI0DAT=spidat;
179 1 while(SPIF==0);
C51 COMPILER V8.02 TEXT1 09/08/2008 08:59:36 PAGE 4
180 1 SPIF=0;
181 1 }
182
183 unsigned char GetSPI(void)
184 {
185 1 SPIF=0;
186 1 SPI0DAT=0; //产生接收脉冲
187 1 while(SPIF==0);
188 1 SPIF=0;
189 1 return SPI0DAT;
190 1 }
191 void buffer_write(unsigned char cmd_code,unsigned int star_addr,unsigned int len)
192 {
193 1 int dat=0,i=0;
194 1 CS1=0; //芯片允许操作
195 1 SendSPI(cmd_code); //写buf1命令84H,,buf2:87H
196 1 SendSPI(0x00); //写无效页地址位
197 1 SendSPI(star_addr>>8); //写地址BA8位
198 1 SendSPI(star_addr); //写地址BA7--BA0位
199 1 for(i=0;i<len;i++)
200 1 {
201 2 dat=i; //取UART0接收到的数据
202 2 SendSPI(dat); //写一个字节
203 2 }
204 1 CS1=1; //禁止芯片操作
205 1 }
206
207 void buffer_read(unsigned char cmd_code,unsigned int star_addr,unsigned int len)
208 {
209 1 int dat=0,i=0;
210 1 CS1=0; //芯片允许操作
211 1 SendSPI(cmd_code); //读buf1命令54H,buf2:56H
212 1 SendSPI(0x00); //写无效页地址位
213 1 SendSPI(star_addr>>8); //写地址BA8位
214 1 SendSPI(star_addr); //写地址BA7--BA0位
215 1 SendSPI(0x00); //写无效位
216 1 for(i=0;i<len;i++)
217 1 {
218 2 UART_BUF[i]=GetSPI(); //暂存读取数据
219 2 SPIF=0;
220 2 }
221 1 CS1=1; //禁止芯片操作
222 1 }
223
224 void buffer_mem(unsigned char cmd_code,unsigned int star_addr)
225 {
226 1 // int dat=0,i=0;
227 1 CS1=0; //芯片允许操作
228 1 SendSPI(cmd_code); //buf1命令83H,buf2:86H
229 1 SendSPI(star_addr>>7); //写地址PA11-PA7
230 1 SendSPI(star_addr<<1); //写地址PA6--PA0位
231 1 SendSPI(0x00); //写无效位
232 1 CS1=1; //禁止芯片操作
233 1 }
234
235 void mem_buffer(unsigned char cmd_code,unsigned int star_addr)
236 {
237 1 // int dat=0,i=0;
238 1 CS1=0; //芯片允许操作
239 1 SendSPI(cmd_code); //buf1命令53H,buf2:55H
240 1 SendSPI(star_addr>>7); //写地址PA11-PA7
241 1 SendSPI(star_addr<<1); //写地址PA6--PA0位
C51 COMPILER V8.02 TEXT1 09/08/2008 08:59:36 PAGE 5
242 1 SendSPI(0x00); //写无效位
243 1 CS1=1; //禁止芯片操作
244 1 }
245
246
247 unsigned char status_read(unsigned char cmd_code)
248 {
249 1 unsigned char dat=0;
250 1 CS1=0; //芯片允许操作
251 1 SendSPI(cmd_code); //命令57H
252 1 dat=GetSPI();
253 1 CS1=1; //禁止芯片操作
254 1 return dat;
255 1 }
256
257 void main()
258 {
259 1 int i=0;
260 1 unsigned int temp1=0;
261 1
262 1
263 1
264 1 Init_Device();
265 1 CS2=1;
266 1 delay1ms(1);
267 1 U_STR_LEN=8; //设置数组长度
268 1 temp1=0;
269 1 R_OK=0;//接收清0,等待接收
270 1 T_OK=0;//发送清0
271 1 while(1)
272 1 {
273 2
274 2 /*中断接收函数调用方法*/ //需预先设置数组长度 U_STR_LEN=8; //设置数组长度
275 2 while(R_OK==0); //接收
276 2 R_OK=0; //为下一次接收做准备
277 2 /**********************/
278 2
279 2 for(i=0;i<4096;i++) //全片读写
280 2 {
281 3 buffer_write(0x84,0x0000,264);//写buf1命令84H,,buf2:87H
282 3
283 3 buffer_mem(0x83,i);//buf1命令83H,buf2:86H
284 3
285 3 while((status_read(0x57) & 0x80)==0);//查询忙标志位
286 3
287 3 mem_buffer(0x55,i);//buf1命令53H,buf2:55H
288 3
289 3 while((status_read(0x57) & 0x80)==0); //查询忙标志位
290 3
291 3 buffer_read(0x56,134,8); //读buf1命令54H,buf2:56H
292 3 }
293 2 /*中断发送函数调用方法*/ //需预先设置数组长度 U_STR_LEN=8; //设置数组长度
294 2 // REN0=0;
295 2 // while(T_OK==0){SBUF0=UART_BUF[UART_T_COUNT];delay1ms(1);}//发送;
296 2 // T_OK=0; //为下一 次发送做准备
297 2
298 2
299 2 temp1=0;
300 2 while(temp1<264) // 指定页据全发送
301 2 {
302 3 mem_buffer(0x55,56);//buf1命令53H,buf2:55H
303 3
C51 COMPILER V8.02 TEXT1 09/08/2008 08:59:36 PAGE 6
304 3 while((status_read(0x57) & 0x80)==0); //查询忙标志位
305 3
306 3 buffer_read(0x56,temp1,8); //读buf1命令54H,buf2:56H
307 3
308 3 // send_UART_string(UART_BUF,0);
309 3 REN0=0;
310 3 while(T_OK==0){SBUF0=UART_BUF[UART_T_COUNT];delay1ms(1);}//发送;
311 3 T_OK=0; //为下一 次发送做准备
312 3
313 3 temp1+=8;
314 3 }
315 2
316 2
317 2
318 2
319 2 /*查询方式发送数组*/
320 2 // send_UART_string(str1,0);
321 2 }
322 1 }
323
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 715 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 89 15
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -