📄 wr_flash.lst
字号:
C51 COMPILER V7.09 WR_FLASH 01/12/2007 09:29:50 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE WR_FLASH
OBJECT MODULE PLACED IN wr_flash.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wr_flash.c ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE MODP2 DEBUG OBJECTEXTEND P
-REPRINT
line level source
1 /******************************************************************
2 * 文件名:WR_FLASH.C
3 * 功能:实现FLASH读写功能
4 * 日期:2005.6.16
5 * 说明:
6 ******************************************************************/
7 #include <REG922.H>
8
9 #define uint unsigned int
10 #define uchar unsigned char
11
12
13 /* 定义页宽度屏蔽字(16字节时为0x0F,64字节时为0x3F) */
14 #define PAGE_SIZE 0x3F
15
16 /* 定义FLASH控制命令字 */
17 #define LOAD 0x00 /* 加载数据 */
18 #define PROG 0x48 /* 编程 */
19 #define ERS_PROG 0x68 /* 擦除编程 */
20 #define ERS_P 0x70 /* 擦除页 */
21
22
23 /******************************************************************
24 * 名称:FLASH_ReadNByte
25 * 功能:指定FLASH起始地址,读多字节数据
26 * 入口参数:addr 指定的起始地址
27 * dat_buf 保存数据的缓冲区指针
28 * no 要写入数据个数
29 * 出口参数:无
30 ******************************************************************/
31
32 void FLASH_ReadNByte(uint addr, uchar *dat_buf, uchar no)
33 { uchar code *readp;
34 1 if(0==no) return;
35 1 readp = addr; // 设置读取的地址
36 1 for(; no>0; no--)
37 1 { *dat_buf = *readp; // 读取数据
38 2 dat_buf++;
39 2 readp++; // 指向下一地址
40 2 }
41 1 }
42
43
44
45 /******************************************************************
46 * 名称:FLASH_ErasePage
47 * 功能:页擦除
48 * 入口参数:addr 指定待擦除页内的地址
49 * 出口参数:返回0时表示操作错误
50 ******************************************************************/
51 /*
52 bit FLASH_ErasePage(uint addr)
53 { FMADRH = addr>>8;
54 FMADRL = addr&0xFF;
C51 COMPILER V7.09 WR_FLASH 01/12/2007 09:29:50 PAGE 2
55 FMCON = ERS_P;
56
57 if( (FMCON&0x0F)!=0x00 ) return(0);
58 else return(1);
59 }
60 */
61 /******************************************************************
62 * 名称:FLASH_WriteNByte
63 * 功能:指定FLASH起始地址,写多字节数据
64 * 入口参数:addr 指定的起始地址
65 * dat_buf 待写入的数据缓冲区指针
66 * no 要写入数据个数
67 * 出口参数:返回0时表示操作错误
68 ******************************************************************/
69 bit FLASH_WriteNByte(uint addr, uchar *dat_buf, uchar no)
70 {
71 1 if(0==no) return(0);
72 1
73 1 FMCON = LOAD; // 设置加载数据命令
74 1 FMADRH = addr>>8; // 设置写入地址
75 1 FMADRL = addr&0xFF;
76 1 while(1)
77 1 { FMDATA = *dat_buf; // 写入数据
78 2 dat_buf++; // 指向下一个待写入的数据
79 2 addr++;
80 2 no--;
81 2 if(0==no) break; // 判断是否写完所有数据,若是则退出
82 2
83 2 }
84 1 FMCON = ERS_PROG; // 擦除编程
85 1 if( (FMCON&0x0F)!=0x00 ) return(0);
86 1 else return(1);
87 1 }
88
89 /******************************************************************
90 * 名称:FLASH_WriteByte
91 * 功能:指定FLASH地址,写单字节数据
92 * 入口参数:addr 指定的地址
93 * dat 待写入的数据
94 * 出口参数:返回0时表示操作错误
95 ******************************************************************/
96 /******************************************************************
97 * 名称:FLASH_WriteByte
98 * 功能:指定FLASH地址,写单字节数据
99 * 入口参数:addr 指定的地址
100 * dat 待写入的数据
101 * 出口参数:返回0时表示操作错误
102 ****************************************************************** /
103 bit FLASH_WriteByte(uint addr, uchar dat)
104 { FMCON = LOAD; // 设置加载数据命令
105 FMADRH = addr>>8; // 设置写入地址
106 FMADRL = addr&0xFF;
107 FMDATA = dat; // 写入数据
108 FMCON = ERS_PROG; // 擦除编程
109
110 if( (FMCON&0x0F)!=0x00 ) return(0);
111 else return(1);
112 }
113
114 /******************************************************************
115 * 名称:FLASH_ReadByte
116 * 功能:指定FLASH地址,读单字节数据
C51 COMPILER V7.09 WR_FLASH 01/12/2007 09:29:50 PAGE 3
117 * 入口参数:addr 指定的地址
118 * 出口参数:返回值即是读出的数据
119 ****************************************************************** /
120 uint FLASH_ReadByte(uint addr)
121 { uint code *readp;
122
123 readp = addr;
124 return(*readp);
125 }
126
127
128
129 /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* /
130
131
132 !!!!!!重复特别注意:写表的地址必须从串口写入才有效!!!!!
133 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
134
135 /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
136
137
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 88 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
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 + -