?? iap.lst
字號:
C51 COMPILER V7.07 IAP 03/06/2009 19:29:31 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE IAP
OBJECT MODULE PLACED IN iap.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE iap.c ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "reg922.h"
2 #include "iap.h"
3
4 #define uint8 unsigned char
5 #define uint16 unsigned int
6
7 #define PAGE_SIZE 0x3F
8 /* 定義FLASH控制命令字 */
9 #define LOAD 0x00 /* 加載數據 */
10 #define PROG 0x48 /* 編程 */
11 #define ERS_PROG 0x68 /* 擦除編程 */
12 #define ERS_S 0x71 /* 擦除扇區 */
13 #define ERS_P 0x70 /* 擦除頁 */
14
15 bit prog_fail;
16 uint8 idata W_ADDRH,W_ADDRL;
17 uint16 idata R_ADDR;
18
19 bit FLASH_WriteByte(uint16 addr, uint8 dat)
20 {
21 1 long i;
22 1 EA=0;
23 1 FMCON = LOAD; // 設置加載數據命令
24 1 FMADRH = addr>>8; // 設置寫入地址
25 1 FMADRL = addr&0xFF;
26 1 FMDATA = dat; // 寫入數據
27 1 FMCON = ERS_PROG;
28 1 for(i=0;i<200;i++);
29 1 if ( (FMCON&0x0F)!=0x00 )
30 1 {
31 2 EA=1;
32 2 return(0);
33 2 }
34 1 else
35 1 {
36 2 EA=1;
37 2 return(1);
38 2 }
39 1 }
40
41
42 uint8 FLASH_ReadByte(uint16 addr)
43 {
44 1 uint8 code *readp;
45 1 readp = addr;
46 1 return(*readp);
47 1 }
48
49 /*
50 bit FLASH_WriteNByte(uint16 addr, uint8 *dat_buf, uint8 no)
51 {
52 long i;
53 if(0==no) return(0);
54 FMCON = LOAD; // 設置加載數據命令
55 FMADRH = addr>>8; // 設置寫入地址
C51 COMPILER V7.07 IAP 03/06/2009 19:29:31 PAGE 2
56 FMADRL = addr&0xFF;
57 while(1)
58 { FMDATA = *dat_buf; // 寫入數據
59 dat_buf++; // 指向下一個待寫入的數據
60 addr++;
61 no--;
62 if(0==no) break; // 判斷是否寫完所有數據,若是則退出
63
64 if( (addr&PAGE_SIZE)==0 ) // 判斷是否要換頁
65 { FMCON = ERS_PROG; // 若是,則擦除編程
66 if( (FMCON&0x0F)!=0x00 ) return(0);
67 // 切換到下一頁
68 FMCON = LOAD;
69 FMADRH = addr>>8;
70 FMADRL = addr&0xFF;
71 }
72 }
73 FMCON = ERS_PROG; // 擦除編程
74 for(i=0;i<200;i++);
75 if( (FMCON&0x0F)!=0x00 )
76 {
77 EA=1;
78 return(0);
79 }
80 else
81 {
82 EA=1;
83 return(1);
84 }
85 }
86
87 void FLASH_ReadNByte(uint16 addr, uint8 *dat_buf, uint8 no)
88 { uint8 code *readp;
89
90 if(0==no) return;
91 readp = addr; // 設置讀取的地址
92 for(; no>0; no--)
93 { *dat_buf = *readp; // 讀取數據
94 dat_buf++;
95 readp++; // 指向下一地址
96 }
97 }
98
99 bit FLASH_EraseSector(uint16 addr)
100 {
101 long i;
102 EA=0;
103 FMADRH = addr>>8;
104 FMADRL = addr&0xFF;
105 FMCON = ERS_S;
106 for(i=0;i<200;i++);
107 if( (FMCON&0x0F)!=0x00 )
108 {
109 EA=1;
110 return(0);
111 }
112 else
113 {
114 EA=1;
115 return(1);
116 }
117 }
C51 COMPILER V7.07 IAP 03/06/2009 19:29:31 PAGE 3
118
119 bit FLASH_ErasePage(uint16 addr)
120 {
121 long i;
122 EA=0;
123 FMADRH = addr>>8;
124 FMADRL = addr&0xFF;
125 FMCON = ERS_P;
126 for(i=0;i<200;i++);
127 if( (FMCON&0x0F)!=0x00 )
128 {
129 EA=1;
130 return(0);
131 }
132 else
133 {
134 EA=1;
135 return(1);
136 }
137 }
138
139 bit FLASH_FillPage(uint16 addr, uint8 dat)
140 { uint8 i;
141 long j;
142 // 擦除扇區
143 if( FLASH_ErasePage(addr)==0 ) return(0);
144 //填充數據
145 FMADRH = addr>>8; // 設置頁起始地址
146 FMADRL = addr&(~PAGE_SIZE);
147 FMCON = LOAD; // 設置加載數據命令
148 for(i=0; i<=PAGE_SIZE; i++)
149 { FMDATA = dat; // 加載數據
150 }
151 FMCON = PROG; // 開始編程
152 for(j=0;j<200;j++);
153 if( (FMCON&0x0F)!=0x00 )
154 {
155 EA=1;
156 return(0);
157 }
158 else
159 {
160 EA=1;
161 return(1);
162 }
163 }
164
165 bit PGM_USER(uint8 page_hi , uint8 page_lo )
166 {
167 uint8 Fm_stat;
168 uint8 i; // 循環次數
169 FMCON = LOAD; // 裝載命令,清除頁寄存器
170 FMADRH = page_hi; //
171 FMADRL = page_lo; // 頁地址寫入地址寄存器
172 for (i=0;i<64;i++)
173 {
174 // temp=dbytes[i];
175 FMDATA=0xdd;
176 }
177 FMCON=ERS_PROG; // 擦除&編程頁命令
178 Fm_stat = FMCON; // 讀結果狀態
179 if((Fm_stat & 0xF)!=0)
C51 COMPILER V7.07 IAP 03/06/2009 19:29:31 PAGE 4
180 prog_fail = 1;
181 else
182 prog_fail = 0;
183 return (prog_fail);
184 }
185
186 void FLASH_TEST(void)
187 {
188 unsigned char sta,addrh,addrl;
189 unsigned int i,j;
190 Uart_Printf("This is a FLASH Test!");
191 for(i=0xd00;i<0xd64;i++)
192 {
193 addrh=i/256;
194 addrl=i%256;
195 if(PGM_USER(addrh,addrl))
196 {
197 // Uart_Printf("Program FLASH Fail!\n");
198 }
199 }
200
201 for(i=0xcf0;i<0xdff;i++)
202 {
203 sta=FLASH_ReadByte(i);
204 Uart_Printchar(sta);
205 for(j=0;j<65535;j++) ;
206 }
207 }
208 */
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.07 IAP 03/06/2009 19:29:31 PAGE 5
CODE SIZE = 97 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = 4 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -