📄 flash1.lst
字号:
C51 COMPILER V7.10 FLASH1 08/18/2007 18:11:35 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE FLASH1
OBJECT MODULE PLACED IN flash1.OBJ
COMPILER INVOKED BY: C:\SiLabs\IDEfiles\C51\BIN\C51.exe flash1.c DB OE
line level source
1 ////////////FLASH读写操作调试程序/////////////////
2 //////////flash.c////////////////////////////////////////
3 #include "c8051f020.h"
4 #include "absacc.h"
5 #define LEN 5
6 void FlashWrite(unsigned char xdata *pwrite,unsigned char *BufFrom,unsigned char len){
7 1 /*
8 1 pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
9 1 BufFrom为数据指针
10 1 len为数据长度
11 1 */
12 1 unsigned char i;
13 1 WDTCN = 0xde;//1101 1110
14 1 WDTCN = 0xad;// 禁止看门狗1010 1101
15 1 EA=0;//禁止中断
16 1 // SFRPAGE=0x00;//0x84/* SFR PAGE SELECT */
17 1 FLSCL = 0x81;//0xb7/* FLASH TIMING PRESCALAR */
18 1 PSCTL = 0x03;//0x8f 0000 0011
19 1 *pwrite=0; //擦除操作
20 1 PSCTL=0x01;
21 1 for(i=0;i<len;i++) //copy BufFrom to FLASH with *pwriter
22 1 {
23 2 *pwrite++=*BufFrom++;
24 2 }
25 1 PSCTL = 0; // disable FLASH writes
26 1 FLSCL = 0x80; // disable FLASH writes
27 1 EA=1;
28 1 }
29
30 void Flasherase(unsigned char xdata *pwrite){
31 1 /*
32 1 pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
33 1 BufFrom为数据指针
34 1 len为数据长度
35 1 */
36 1 // unsigned char i;
37 1 WDTCN = 0xde;//1101 1110
38 1 WDTCN = 0xad;// 禁止看门狗1010 1101
39 1 EA=0;//禁止中断
40 1 // SFRPAGE=0x00;//0x84/* SFR PAGE SELECT */
41 1 FLSCL = 0x81;//0xb7/* FLASH TIMING PRESCALAR */
42 1 PSCTL = 0x03;//0x8f 0000 0011
43 1 *pwrite=0; //擦除操作
44 1 PSCTL=0x01;
45 1
46 1 PSCTL = 0; // disable FLASH writes
47 1 FLSCL = 0x80; // disable FLASH writes
48 1 EA=1;
49 1 }
50
51
52 void FlashRead(unsigned char code *pread,unsigned char *BufTo,unsigned char len){//采用指针方法实现
53 1 /*
54 1 对FLASH读操作采用MOVC指令,故采用code指针类型
55 1 BufTo为存放读取值的缓冲指针
C51 COMPILER V7.10 FLASH1 08/18/2007 18:11:35 PAGE 2
56 1 len为数据长度
57 1 */
58 1 unsigned char i;
59 1 for(i=0;i<len;i++){
60 2 BufTo[i]=*pread;
61 2 pread++;
62 2 }
63 1 }
64
65
66 void config(){
67 1 //看门狗禁止
68 1 WDTCN = 0x07;
69 1 WDTCN = 0xDE;
70 1 WDTCN = 0xAD;
71 1 // SFRPAGE = 0x0F;
72 1 //交叉开关使能,但没有进行外围设备配置
73 1 XBR0 = 0x00;
74 1 XBR1 = 0x00;
75 1 XBR2 = 0x40;
76 1 // XBR3 = 0x00;
77 1 //管脚输出配置,P0口为开漏输出,其中P0.6接上拉电阻,P0为数字输入口
78 1 // SFRPAGE = 0x0F;
79 1 P0MDOUT = 0x00;
80 1 P1MDIN = 0xFF;
81 1 //晶振配置,采用内部晶振8分频
82 1 // SFRPAGE = 0x0F;
83 1 // CLKSEL = 0x00;
84 1 OSCXCN = 0x00;
85 1 OSCICN = 0x84;
86 1 }
87 void main(){
88 1
89 1
90 1
91 1 xdata float readpi=0.0;
92 1 int i=0;
93 1 config();
94 1 for(i=0;i<30;i++)
95 1 {Flasherase(512*i);
*** WARNING C214 IN LINE 95 OF FLASH1.C: 'Argument': conversion: non-pointer to pointer
96 2 }
97 1
98 1 while(1);//可在此设断点观察写的数据与读的数据是否一致
99 1 }
100
101
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 238 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 4
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
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 + -