?? wr_flash.lst
字號:
C51 COMPILER V7.09 WR_FLASH 01/12/2007 09:30:16 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:30:16 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:30:16 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 + -