📄 flash.lst
字号:
C51 COMPILER V7.20 FLASH 01/31/2007 10:21:46 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN Flash.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\c51.exe Flash.c DB OE
line level source
1 #include "LZK.H"
2
3
4 /**********************************************************************************
5 ** 函数名称: Flash_128_Write()
6 ** 功能描述: FLASH128字节快速存储区写操作
7 ** 入口参数: pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
8 ** 注意存储空间的指向,因为MOVX在操作Flash空间时,中间不能转而去操作XRAM
9 ** BufFrom为数据指针,len为数据长度
10 ** 出口参数: 无
11 ** 全局变量: 无
12 ** 调用模块: 无
13 ** 说明:
14 *********************************************************************************/
15 void Flash_128_Write(uint8 xdata *pwrite,uint8 *BufFrom,uint8 len,bit k)
16 {
17 1 unsigned char i;
18 1
19 1 WDTCN = 0xde;
20 1 WDTCN = 0xad; //禁止看门狗
21 1
22 1 EA=0; //禁止中断
23 1
24 1 SFRPAGE=0x00;
25 1 FLSCL = 0x81; //FLWE=1 Flash擦/写使能
26 1 PSCTL = 0x07; //SFLE=1 Flash指向128字节快速存储区
27 1 //PSEE=1 Flash页擦除使能
28 1 //PSWE=1 MOVX指向Flash闪存
29 1 *pwrite=0; //擦除操作
30 1
31 1 PSCTL=0x05;
32 1
33 1
34 1 if(k)
35 1 {
36 2 for(i=0;i<len;i++) //copy BufFrom to FLASH with *pwriter
37 2 {
38 3 *pwrite++ = 0x00;
39 3 }
40 2 }
41 1 else
42 1 {
43 2 for(i=0;i<len;i++) //copy BufFrom to FLASH with *pwriter
44 2 {
45 3 *pwrite++ = *BufFrom++;
46 3 }
47 2 }
48 1
49 1 PSCTL = 0; // disable FLASH writes,MOVX指向外部RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
50 1 FLSCL = 0x80; // disable FLASH writes
51 1 EA=1;
52 1 }
53
54 /************************************************************************
55 ** 函数名称: Flash_128_Read()
C51 COMPILER V7.20 FLASH 01/31/2007 10:21:46 PAGE 2
56 ** 功能描述: FLASH128字节快速存储区读操作
57 ** 入口参数: 采用指针方法实现
58 ** BufTo为存放读取值的缓冲指针,对FLASH读操作采用MOVC指令,故采用code指针类型
59 ** len为数据长度
60 ** 出口参数: 无
61 ** 全局变量: 无
62 ** 调用模块: 无
63 ** 说明:
64 ************************************************************************/
65 void Flash_128_Read(uint8 code *pread, uint8 *BufTo, uint8 len)
66 {
67 1 unsigned char i;
68 1
69 1 SFRPAGE=0x00;
70 1 PSCTL |= 0x04; //SFLE=1, Flash指向128字节快速存储区
71 1
72 1 for(i=0;i<len;i++)
73 1 {
74 2 BufTo[i]=*pread;
75 2 pread++;
76 2 }
77 1
78 1 PSCTL = 0; //返回RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
79 1
80 1 }
81 //////////////////////////////////////////////////////////////////////////////
82 void HisFlash(uint8 k)
83 {
84 1 uint8 i;
85 1 for(i=83;i>6;i--)
86 1 Flash[i]=Flash[i-7];
87 1
88 1 RTC8563_Read();
89 1 Flash[0]=RTCData[6];
90 1 Flash[1]=RTCData[5];
91 1 Flash[2]=RTCData[3];
92 1 Flash[3]=RTCData[2];
93 1 Flash[4]=RTCData[1];
94 1 Flash[5]=RTCData[0];
95 1 Flash[6]=k;
96 1 Flash_128_Write(0,Flash,128,0);
97 1 }
98 ///////////////////////////////////////////////////////////////////////////////
99 /**********************************************************************************
100 ** 函数名称: Flash_Param_Write()
101 ** 功能描述: FLASH用户设置参数保存存储区写操作
102 ** 入口参数: pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
103 ** 注意存储空间的指向,因为MOVX在操作Flash空间时,中间不能转而去操作XRAM
104 ** BufFrom为数据指针,len为数据长度
105 ** 出口参数: 无
106 ** 全局变量: 无
107 ** 调用模块: 无
108 ** 说明:
109 *********************************************************************************/
110 void Flash_64K_Write(uint8 xdata *pwrite,uint8 *BufFrom,uint8 len,bit k)
111 {
112 1 unsigned char i;
113 1
114 1 WDTCN = 0xde;
115 1 WDTCN = 0xad; //禁止看门狗
116 1
117 1 EA = 0; //禁止中断
C51 COMPILER V7.20 FLASH 01/31/2007 10:21:46 PAGE 3
118 1
119 1 SFRPAGE = 0x00;
120 1 FLSCL = 0x81; //FLWE=1 Flash擦/写使能
121 1 PSCTL = 0x03; //SFLE=0 Flash指向64KB程序/数据区
122 1 //PSEE=1 Flash页擦除使能
123 1 //PSWE=1 MOVX指向Flash闪存
124 1 *pwrite = 0xFA02; //擦除操作
125 1
126 1 PSCTL = 0x01;
127 1
128 1
129 1 if(k)
130 1 {
131 2 for(i=0;i<len;i++) //copy BufFrom to FLASH with *pwriter
132 2 {
133 3 *pwrite++ = 0x00;
134 3 }
135 2 }
136 1 else
137 1 {
138 2 for(i=0;i<len;i++) //copy BufFrom to FLASH with *pwriter
139 2 {
140 3 *pwrite++ = *BufFrom++;
141 3 }
142 2 }
143 1
144 1 PSCTL = 0; // disable FLASH writes,MOVX指向外部RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
145 1 FLSCL = 0x80; // disable FLASH writes
146 1 EA = 1;
147 1 }
148
149 /************************************************************************
150 ** 函数名称: Flash_Param1_Read()
151 ** 功能描述: FLASH用户设置参数保存存储区读操作
152 ** 入口参数: 采用指针方法实现
153 ** BufTo为存放读取值的缓冲指针,对FLASH读操作采用MOVC指令,故采用code指针类型
154 ** len为数据长度
155 ** 出口参数: 无
156 ** 全局变量: 无
157 ** 调用模块: 无
158 ** 说明:
159 ************************************************************************/
160 void Flash_64K_Read(uint8 code *pread, uint8 *BufTo, uint8 len)
161 {
162 1 unsigned char i;
163 1
164 1 SFRPAGE=0x00;
165 1 // PSCTL &= 0xFD; //SFLE=0, Flash指向64K程序/数据区
166 1
167 1 for(i=0; i<len; i++)
168 1 {
169 2 BufTo[i] = *pread;
170 2 pread++;
171 2 }
172 1
173 1 PSCTL = 0; //返回RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
174 1
175 1 }
176 /***********************************************************************/
177 uint16 uchar_to_uint(uint8 x1,uint8 x2)
178 {
179 1 uint16 y;
C51 COMPILER V7.20 FLASH 01/31/2007 10:21:46 PAGE 4
180 1 y=x1;
181 1 y=y<<8;
182 1 y=y+x2;
183 1 return(y);
184 1 }
185 /***********************************************************************/
186 uint8 uint_to_uchar(uint16 y,bit k)
187 {
188 1 uint8 x;
189 1 if(k)
190 1 x=y>>8;
191 1 else
192 1 x=y;
193 1 return(x);
194 1 }
195 /***********************************************************************/
196 void Stc_to_CFlash()
197 {
198 1 CFlash[0]=EM_NomalPhaDiffCMD;
199 1 CFlash[1]=EM_FulVoltPhaDiffCMD;
200 1 CFlash[2]=AsyncTimOutCMD;
201 1 CFlash[3]=EM_TimCMD;
202 1 CFlash[4]=uint_to_uchar(EM_VoltScaleCMD,1);
203 1 CFlash[5]=uint_to_uchar(EM_VoltScaleCMD,0);
204 1 CFlash[6]=uint_to_uchar(EM_CurrScaleCMD,1);
205 1 CFlash[7]=uint_to_uchar(EM_CurrScaleCMD,0);
206 1 CFlash[8]=uint_to_uchar(EM_VoltMaxCMD,1);
207 1 CFlash[9]=uint_to_uchar(EM_VoltMaxCMD,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -