📄 ad_cy.lst
字号:
166 ******************************************************************************/
167
168 void Write_Data(uint8 Fl,uint16 Flash_Address) //向EEPROM中写数据
169 {
170 1 IAP_CONTR =ENABLE_IAP ; //打开 IAP 功能, 设置 Flash 操作等待时间
171 1 IAP_CMD =IAP_BYTE_PROGRAM ;//设置为IAP/ISP/EEPROM 字节读模式命令
172 1 IAP_ADDRH =(uint8)(Flash_Address>>8); //设置目标单元地址的高8 位地址
173 1 IAP_ADDRL =(uint8)Flash_Address; //设置目标单元地址的低8 位地址
174 1 IAP_DATA =Fl;
175 1 EA=0;
176 1 IAP_TRIG =0x5A ; //先送5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此
177 1 IAP_TRIG =0xA5 ; //送完A5h 后,ISP/IAP 命令立即被触发起动
178 1 EA=1;
179 1 ;
C51 COMPILER V7.06 AD_CY 02/20/2009 10:36:17 PAGE 4
180 1 }
181 /******************************************************************************
182 函数:Erase_Data()
183 功能:EEPROM扇区擦除
184 说明:设置相应的IAP参数,最后连续送5A和A5到IAP_TRIG中开启IAP.自动进行扇区擦除
185 ******************************************************************************/
186
187 void Erase_Data(uint16 Flash_Address)
188 {
189 1 IAP_CONTR =ENABLE_IAP ; //打开 IAP 功能, 设置 Flash 操作等待时间
190 1 IAP_CMD =IAP_SECTOR_ERASE ; //设置为IAP/ISP/EEPROM 字节读模式命令
191 1 IAP_ADDRH =(uint8)(Flash_Address>>8); //设置目标单元地址的高8 位地址
192 1 IAP_ADDRL =(uint8)Flash_Address; //设置目标单元地址的低8 位地址
193 1 EA=0;
194 1 IAP_TRIG =0x5A ; //先送5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此
195 1 IAP_TRIG =0xA5 ; //送完A5h 后,ISP/IAP 命令立即被触发起动
196 1 EA=1;
197 1 ;
198 1 }
199 /******************************************************************************
200 函数:IAP_Disable()
201 功能:关闭 IAP 功能
202 说明:以下具体说时
203 ******************************************************************************/
204
205 void IAP_Disable(void)
206 {
207 1 //关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态,
208 1 //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关
209 1 IAP_CONTR =0 ; //关闭 IAP 功能
210 1 IAP_CMD =0 ; //清命令寄存器,使命令寄存器无命令,此句可不用
211 1 IAP_TRIG =0 ; //清命令触发寄存器,使命令触发寄存器无触发,此句可不用
212 1 IAP_ADDRH =0xFF ; //送地址高字节单元为FF,指向非EEPROM 区
213 1 IAP_ADDRL =0xFF ; //送地址低字节单元为FF,防止误操作
214 1
215 1 }
216 /******************************************************************************
217 函数:Serial_Port_Initial()
218 功能:串口初始化
219 说明:串口采用串口1,方式1来传送接收数据,使用独立波特率发生器作为波特率发生器
220 采用4800bps传输速率。
221 ******************************************************************************/
222
223 void Serial_Port_Initial(void)//串口初始化
224 {
225 1 SCON=0x50; //采用串口方式1。
226 1 BRT=RELOAD; //装入重装数
227 1 //AUXR 8Eh Auxiliary Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS
228 1 AUXR|=0x11; //00010001;开启BRTR即启动Serial,开启S1BRS即使用独立波特率发生器作
229 1 //为波特率发生器
230 1 ES=1; //允许串口中断
231 1 EA=1; //开启总中断
232 1
233 1 }
234 /******************************************************************************
235 函数:Send_UART()
236 功能:串口发送数据
237 说明:串口采用串口1,方式1来传送接收数据,使用独立波特率发生器作为波特率发生器
238 采用4800bps传输速率。
239 ******************************************************************************/
240
241 void Send_UART(uint8 i)//发送数据
C51 COMPILER V7.06 AD_CY 02/20/2009 10:36:17 PAGE 5
242 {
243 1 ES=0;
244 1 TI=0;
245 1 SBUF=i;
246 1 while(TI==0);
247 1 TI=0;
248 1 ES=1;
249 1 }
250 /******************************************************************************
251 函数:UART_Interrupt_Receive()
252 功能:串口接收数据
253 说明:串口采用串口1,方式1来传送接收数据,使用独立波特率发生器作为波特率发生器
254 采用4800bps传输速率。
255 ******************************************************************************/
256
257 void UART_Interrupt_Receive(void) interrupt 4//中断接收
258 {
259 1 uint8 k=0;
260 1 if(RI==1)
261 1 {
262 2 RI=0;
263 2 k=SBUF;
264 2 Send_UART(k+1);
265 2 }
266 1 else TI=0;
267 1 }
268
269 /******************************************************************************
270 函数:Timer0_Iint()
271 功能:定时器0初始化,定时1MS
272 说明:请根据具体情况调整定时值
273 ******************************************************************************/
274
275 void Timer0_Init(void)
276 {
277 1 TMOD |= 0x01; /* TMOD: timer 0, mode 1, 16-bit 0001 */
278 1 TH0 = (65536-24000)/256;
279 1 TL0 = (65536-24000)%256; //1ms
280 1 TR0 = 1; /* TR1: timer 0 run */
281 1 ET0=1;
282 1 EA=1;
283 1 }
284 /********************************************************************
285 // Function : UTL_DelayTime
286 // Description : Delay until time out
287 // Arguments : wCount : the delay time
288 // btBreak : FALSE, wait until time out
289 // : TRUE, leave immediately
290 // Return : TRUE
291 // Side Effect :
292 // *********************************************************************/
293 bit UTL_DelayTime(uint16 wCount)
294 {
295 1 __wTemp= wCount;
296 1 __dwTemp= __dwCountSystem;
297 1 while ( ( __dwCountSystem- __dwTemp ) < __wTemp )
298 1 {
299 2 }
300 1 return 1;
301 1 }
302
303 /* *********************************************************************
C51 COMPILER V7.06 AD_CY 02/20/2009 10:36:17 PAGE 6
304 // Function : ISR_Timer0; ET1(SFR, bit 3 of IE)
305 // : Timer1, mode 1, 16 bits counter
306 // Description : 1. receive the internal timer counting(When up counter overflow)
307 // : 2. must re-load the TH1, TL1 value
308 // 3. The Timer will scan Key, monitor system and Error-Concealment
309 // Arguments :
310 // Return : none
311 // Side Effect :
312 // *********************************************************************/
313 void ISR_Timer0(void) interrupt 1 using 1
314 {
315 1 //BYTE bKey;
316 1 __dwCountSystem++;
317 1 TH0 = (65536-24000)/256; // reload counter
318 1 TL0 = (65536-24000)%256; //1ms
319 1 return;
320 1 }
321
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 641 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 1
IDATA SIZE = 21 ----
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 + -