📄 eerom.lst
字号:
C51 COMPILER V9.00 EEROM 03/08/2012 22:00:15 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE EEROM
OBJECT MODULE PLACED IN eerom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE eerom.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:EEPROM应用程序
5 使用芯片:STC15F104E
6 晶振:12MHZ
7 编译环境:Keil
8 作者:zhangxinchunleo
9 网站:www.ourhc.cn
10 淘宝店:汇诚科技 http://shop36330473.taobao.com
11 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
12
13 *********************************************************************/
14 /********************************************************************/
15 #include "reg52.h"
16 #include <intrins.H>
17 #define uchar unsigned char //宏定义字符型变量
18 #define uint unsigned int //宏定义整型变量
19 /********************************************************************
20 寄存器设置
21 *********************************************************************/
22 sfr IAP_DATA =0xc2; //数据寄存器
23 sfr IAP_ADDRH =0xc3; //地址寄存器
24 sfr IAP_ADDRL =0xc4; //地址寄存器
25 sfr IAP_CMD =0xc5; //命令寄存器
26 sfr IAP_TRIG =0xc6; //触发寄存器
27 sfr IAP_CONTR =0xc7; //擦除寄存器
28 /********************************************************************
29 命令定义
30 *********************************************************************/
31 #define CMD_IDLE 0 //EEPROM无操作
32 #define CMD_READ 1 //读取字节
33 #define CMD_PROGRAM 2 //写入字节
34 #define CMD_ERASE 3 //擦除字节
35 /********************************************************************
36 编程周期由晶振决定
37 *********************************************************************/
38 //#define ENABLE_IAP 0X80 //编程周期由晶振决定(如果<30MHZ选用此项)
39 //#define ENABLE_IAP 0X81 //编程周期由晶振决定(如果<24MHZ选用此项)
40 //#define ENABLE_IAP 0X82 //编程周期由晶振决定(如果<20MHZ选用此项)
41 #define ENABLE_IAP 0X83 //编程周期由晶振决定(如果<12MHZ选用此项)
42 //#define ENABLE_IAP 0X84 //编程周期由晶振决定(如果<6MHZ选用此项)
43 //#define ENABLE_IAP 0X85 //编程周期由晶振决定(如果<3MHZ选用此项)
44 //#define ENABLE_IAP 0X86 //编程周期由晶振决定(如果<2MHZ选用此项)
45 //#define ENABLE_IAP 0X87 //编程周期由晶振决定(如果<1MHZ选用此项)
46
47 #define IAP_ADDRESS 0X0000 //内部EEPROM地址
48 /********************************************************************
49 函数初始化
50 *********************************************************************/
51 void IapIdle(); //操作函数
52 uchar IapReadByte(uint addr); //读取函数
53 void IapProgramByte(uint addr,uchar dat); //写入函数
54 void IapEraseSector(uint addr); //擦除函数
55
C51 COMPILER V9.00 EEROM 03/08/2012 22:00:15 PAGE 2
56 /********************************************************************
57 操作函数
58 *********************************************************************/
59 void IapIdle()
60 {
61 1 IAP_CONTR=0;
62 1 IAP_CMD=0;
63 1 IAP_TRIG=0;
64 1 IAP_ADDRH=0X80;
65 1 IAP_ADDRL=0;
66 1 }
67
68 /********************************************************************
69 读取一个字节函数
70 *********************************************************************/
71 uchar IapReadByte(uint addr)
72 {
73 1 uchar dat;
74 1 IAP_CONTR=ENABLE_IAP;
75 1 IAP_CMD=CMD_READ;
76 1 IAP_ADDRL=addr;
77 1 IAP_ADDRH=addr>>8;
78 1 IAP_TRIG=0X5A;
79 1 IAP_TRIG=0XA5;
80 1 _nop_();
81 1 _nop_();
82 1 _nop_();
83 1 dat=IAP_DATA;
84 1 IapIdle();
85 1 return dat;
86 1 }
87
88 /********************************************************************
89 写入一个字节函数
90 *********************************************************************/
91 void IapProgramByte(uint addr,uchar dat)
92 {
93 1
94 1 IAP_CONTR=ENABLE_IAP;
95 1 IAP_CMD=CMD_PROGRAM;
96 1 IAP_ADDRL=addr;
97 1 IAP_ADDRH=addr>>8;
98 1 IAP_DATA=dat;
99 1 IAP_TRIG=0X5A;
100 1 IAP_TRIG=0XA5;
101 1 _nop_();
102 1 _nop_();
103 1 _nop_();
104 1 IapIdle();
105 1 }
106 /********************************************************************
107 擦除一个字节函数
108 *********************************************************************/
109 void IapEraseSector(uint addr)
110 {
111 1 IAP_CONTR=ENABLE_IAP;
112 1 IAP_CMD=CMD_ERASE;
113 1 IAP_ADDRL=addr;
114 1 IAP_ADDRH=addr>>8;
115 1 IAP_TRIG=0X5A;
116 1 IAP_TRIG=0XA5;
117 1 _nop_();
C51 COMPILER V9.00 EEROM 03/08/2012 22:00:15 PAGE 3
118 1 _nop_();
119 1 _nop_();
120 1 IapIdle();
121 1 }
122
123 /********************************************************************
124 结束
125 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 84 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -