?? eeprom58.lst
字號(hào):
C51 COMPILER V8.08 EEPROM58 02/04/2012 15:58:09 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE EEPROM58
OBJECT MODULE PLACED IN eeprom58.OBJ
COMPILER INVOKED BY: D:\Program Files\keil_51\C51\BIN\C51.EXE eeprom58.c LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTE
-ND
line level source
1 #include "NEW_8051.H"
2 #include "main.h"
3 #include <intrins.h>
4 typedef unsigned char INT8U;
5 typedef unsigned int INT16U;
6
7 /*
8 sfr IAP_DATA = 0xC2;
9 sfr IAP_ADDRH = 0xC3;
10 sfr IAP_ADDRL = 0xC4;
11 sfr IAP_CMD = 0xC5;
12 sfr IAP_TRIG = 0xC6;
13 sfr IAP_CONTR = 0xC7;
14 */
15
16 //定義Flash 操作等待時(shí)間及允許IAP/ISP/EEPROM 操作的常數(shù)
17 //#define ENABLE_ISP 0x80 //系統(tǒng)工作時(shí)鐘<30MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
18 //#define ENABLE_ISP 0x81 //系統(tǒng)工作時(shí)鐘<24MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
19 #define ENABLE_ISP 0x82 //系統(tǒng)工作時(shí)鐘<20MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
20 //#define ENABLE_ISP 0x83 //系統(tǒng)工作時(shí)鐘<12MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
21 //#define ENABLE_ISP 0x84 //系統(tǒng)工作時(shí)鐘<6MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
22 //#define ENABLE_ISP 0x85 //系統(tǒng)工作時(shí)鐘<3MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
23 //#define ENABLE_ISP 0x86 //系統(tǒng)工作時(shí)鐘<2MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
24 //#define ENABLE_ISP 0x87 //系統(tǒng)工作時(shí)鐘<1MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
25
26 void IAP_Disable();
27
28 union union_temp16
29 {
30 INT16U un_temp16;
31 INT8U un_temp8[2];
32 }my_unTemp16;
33
34 //讀一字節(jié),調(diào)用前需打開(kāi)IAP 功能,入口:DPTR = 字節(jié)地址,返回:A = 讀出字節(jié)
35 INT8U byte_read(INT16U add)
36 {
37 1 IAP_DATA = 0x00;
38 1 IAP_CONTR = ENABLE_ISP; //打開(kāi)IAP 功能, 設(shè)置Flash 操作等待時(shí)間
39 1 IAP_CMD = 0x01; //IAP/ISP/EEPROM 字節(jié)讀命令
40 1
41 1 my_unTemp16.un_temp16 = add;
42 1 IAP_ADDRH = my_unTemp16.un_temp8[0]; //設(shè)置目標(biāo)單元地址的高8 位地址
43 1 IAP_ADDRL = my_unTemp16.un_temp8[1]; //設(shè)置目標(biāo)單元地址的低8 位地址
44 1
45 1 //EA = 0;
46 1 IAP_TRIG = 0x5A; //先送 5Ah,再送A5h 到ISP/IAP 觸發(fā)寄存器,每次都需如此
47 1 IAP_TRIG = 0xA5; //送完A5h 后,ISP/IAP 命令立即被觸發(fā)起動(dòng)
48 1 _nop_();
49 1 //EA = 1;
50 1 IAP_Disable(); //關(guān)閉IAP 功能, 清相關(guān)的特殊功能寄存器,使CPU 處于安全狀態(tài),
51 1 //一次連續(xù)的IAP 操作完成之后建議關(guān)閉IAP 功能,不需要每次都關(guān)
52 1 return (IAP_DATA);
53 1 }
54
C51 COMPILER V8.08 EEPROM58 02/04/2012 15:58:09 PAGE 2
55 //字節(jié)編程,調(diào)用前需打開(kāi)IAP 功能,入口:DPTR = 字節(jié)地址, A= 須編程字節(jié)的數(shù)據(jù)
56 void byte_program(INT16U add, INT8U ch)
57 {
58 1 IAP_CONTR = ENABLE_ISP; //打開(kāi) IAP 功能, 設(shè)置Flash 操作等待時(shí)間
59 1 IAP_CMD = 0x02; //IAP/ISP/EEPROM 字節(jié)編程命令
60 1
61 1 my_unTemp16.un_temp16 = add;
62 1 IAP_ADDRH = my_unTemp16.un_temp8[0]; //設(shè)置目標(biāo)單元地址的高8 位地址
63 1 IAP_ADDRL = my_unTemp16.un_temp8[1]; //設(shè)置目標(biāo)單元地址的低8 位地址
64 1
65 1 IAP_DATA = ch; //要編程的數(shù)據(jù)先送進(jìn)IAP_DATA 寄存器
66 1 //EA = 0;
67 1 IAP_TRIG = 0x5A; //先送 5Ah,再送A5h 到ISP/IAP 觸發(fā)寄存器,每次都需如此
68 1 IAP_TRIG = 0xA5; //送完A5h 后,ISP/IAP 命令立即被觸發(fā)起動(dòng)
69 1 _nop_();
70 1 //EA = 1;
71 1 IAP_Disable(); //關(guān)閉IAP 功能, 清相關(guān)的特殊功能寄存器,使CPU 處于安全狀態(tài),
72 1 //一次連續(xù)的IAP 操作完成之后建議關(guān)閉IAP 功能,不需要每次都關(guān)
73 1 }
74
75 //擦除扇區(qū), 入口:DPTR = 扇區(qū)地址
76 void sector_erase(INT16U add)
77 {
78 1 IAP_CONTR = ENABLE_ISP; //打開(kāi)IAP 功能, 設(shè)置Flash 操作等待時(shí)間
79 1 IAP_CMD = 0x03; //IAP/ISP/EEPROM 扇區(qū)擦除命令
80 1
81 1 my_unTemp16.un_temp16 = add;
82 1 IAP_ADDRH = my_unTemp16.un_temp8[0]; //設(shè)置目標(biāo)單元地址的高8 位地址
83 1 IAP_ADDRL = my_unTemp16.un_temp8[1]; //設(shè)置目標(biāo)單元地址的低8 位地址
84 1
85 1 //EA = 0;
86 1 IAP_TRIG = 0x5A; //先送 5Ah,再送A5h 到ISP/IAP 觸發(fā)寄存器,每次都需如此
87 1 IAP_TRIG = 0xA5; //送完A5h 后,ISP/IAP 命令立即被觸發(fā)起動(dòng)
88 1 _nop_();
89 1 //EA = 1;
90 1 IAP_Disable(); //關(guān)閉IAP 功能, 清相關(guān)的特殊功能寄存器,使CPU 處于安全狀態(tài),
91 1 //一次連續(xù)的IAP 操作完成之后建議關(guān)閉IAP 功能,不需要每次都關(guān)
92 1 }
93
94 void IAP_Disable()
95 {
96 1 //關(guān)閉IAP 功能, 清相關(guān)的特殊功能寄存器,使CPU 處于安全狀態(tài),
97 1 //一次連續(xù)的IAP 操作完成之后建議關(guān)閉IAP 功能,不需要每次都關(guān)
98 1 IAP_CONTR = 0; //關(guān)閉IAP 功能
99 1 IAP_CMD = 0; //清命令寄存器,使命令寄存器無(wú)命令,此句可不用
100 1 IAP_TRIG = 0; //清命令觸發(fā)寄存器,使命令觸發(fā)寄存器無(wú)觸發(fā),此句可不用
101 1 IAP_ADDRH = 0;
102 1 IAP_ADDRL = 0;
103 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 198 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 9 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -