📄 e2prom.lst
字号:
C51 COMPILER V7.06 E2PROM 03/01/2007 08:05:40 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE E2PROM
OBJECT MODULE PLACED IN E2PROM.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\E2PROM.C BROWSE INCDIR(Z:\CB\T112项目\原始资料\AV总备份\1.8\include\
-) DEBUG OBJECTEXTEND PRINT(.\E2PROM.lst) OBJECT(E2PROM.obj)
stmt level source
1 #include "reg51.h"
2 #include "DEF.H"
3 #include "system.h"
4
5
6 #define ISP_READ 1 ///字节读命令
7 #define ISP_RAM 2 ///字节编程命令 前提是该字节是空(0FFH)
8 #define ISP_ERASE 3 ///扇区擦除命令 要某字节为空,要擦移扇区
9 #define ISP_TIME 0 ///等待时间 30MHZ以下为0,24MHZ以下为1,20MHZ以下为2,12MHZ以下为3,6MH
-Z以下为4,3MHZ以下为5,2MHZ以下为6,1MHZ以下为7
10
11 extern uchar bright ;
12 extern uchar comp ;
13 extern uchar color ;
14 extern uchar Pauto ;
15 extern uchar row_num ;
16 /************************************************
17 内部E2PROM的操作
18 ************************************************/
19
20 void Delay(uWORD wLoops)
21 {
22 1 uWORD wTemp ;
23 1 while (wLoops--)
24 1 {
25 2 wTemp = 1000/6 ; // one loop below takes about 11 us
26 2 while (wTemp--) ;
27 2 }
28 1 }
29
30 /************************************************
31 打开 ISP,IAP 功能
32 ************************************************/
33
34 void ISP_IAP_enable(void)
35 {
36 1 EA = 0 ; // 关中断
37 1 ISP_CONTR = ISP_CONTR & 0x18 ; // 0001,1000
38 1 ISP_CONTR = ISP_CONTR | ISP_TIME ; // 写入硬件延时
39 1 ISP_CONTR = ISP_CONTR | 0x80 ; // ISPEN=1
40 1 }
41
42 /************************************************
43 关闭 ISP,IAP 功能
44 ************************************************/
45
46 void ISP_IAP_disable(void)
47 {
48 1 ISP_CONTR = ISP_CONTR & 0x7f ; // ISPEN = 0
49 1 ISP_TRIG = 0x00 ;
50 1 EA = 1 ; // 开中断
51 1 }
52
53 /************************************************
C51 COMPILER V7.06 E2PROM 03/01/2007 08:05:40 PAGE 2
54 公用的触发代码
55 ************************************************/
56
57 void ISPgoon(void)
58 {
59 1 ISP_IAP_enable() ; // 打开 ISP,IAP 功能
60 1 ISP_TRIG = 0x46 ; // 触发ISP_IAP命令字节1
61 1 ISP_TRIG = 0xb9 ; // 触发ISP_IAP命令字节2
62 1 }
63
64 /************************************************
65 字节读
66 ************************************************/
67
68 uchar byte_read(uint byte_addr)
69 {
70 1 ISP_ADDRH = (uchar)(byte_addr >> 8) ; // 地址赋值
71 1 ISP_ADDRL = (uchar)(byte_addr & 0x00ff) ;
72 1 ISP_CMD = ISP_CMD & 0xf8 ; // 清除低3位
73 1 ISP_CMD = ISP_CMD | ISP_READ ; // 写入读命令
74 1 ISPgoon() ; // 触发执行
75 1 ISP_IAP_disable() ; // 关闭ISP,IAP功能
76 1 return (ISP_DATA) ; // 返回读到的数据
77 1 }
78
79 /************************************************
80 扇区擦除
81 ************************************************/
82
83 void SectorErase(uint sector_addr)
84 {
85 1 uint iSectorAddr ;
86 1 iSectorAddr = (sector_addr & 0xfe00) ; // 取扇区地址
87 1 ISP_ADDRH = (uchar)(iSectorAddr >> 8) ;
88 1 ISP_ADDRL = 0x00 ;
89 1 ISP_CMD = ISP_CMD & 0xf8 ; // 清空低3位
90 1 ISP_CMD = ISP_CMD | ISP_ERASE ; // 擦除命令3
91 1 ISPgoon() ; // 触发执行
92 1 ISP_IAP_disable() ; // 关闭ISP,IAP功能
93 1 }
94
95 /************************************************
96 字节写
97 ************************************************/
98
99 void byte_write(uint byte_addr, uchar w_data)
100 {
101 1 ISP_ADDRH =(uchar)(byte_addr >> 8) ; // 取地址
102 1 ISP_ADDRL =(uchar)(byte_addr & 0x00ff) ;
103 1 ISP_CMD = ISP_CMD & 0xf8 ; // 清低3位
104 1 ISP_CMD = ISP_CMD | ISP_RAM ; // 写命令2
105 1 ISP_DATA = w_data ; // 写入数据准备
106 1 ISPgoon() ; // 触发执行
107 1 ISP_IAP_disable() ; // 关闭IAP功能
108 1 }
109
110 /**************************************************
111 把要记忆的参数写入E2PROM
112 **************************************************/
113
114 void write_set(void)
115 {
C51 COMPILER V7.06 E2PROM 03/01/2007 08:05:40 PAGE 3
116 1 SectorErase(0x8000) ;
117 1 byte_write(0x8000,color) ;
118 1 byte_write(0x8001,bright) ;
119 1 byte_write(0x8002,comp) ;
120 1 byte_write(0x8003,Pauto) ;
121 1 byte_write(0x8004,row_num) ;
122 1 Delay(10) ;
123 1 ISP_IAP_disable() ; // 关闭IAP功能
124 1 }
125
126 /**************************************************
127 把所设定的参数读出E2PROM28
128 **************************************************/
129
130 void read_set(void)
131 {
132 1 byte_read(0x8000) ;
133 1 color = ISP_DATA ;
134 1 byte_read(0x8001) ;
135 1 bright = ISP_DATA ;
136 1 byte_read(0x8002) ;
137 1 comp = ISP_DATA ;
138 1 byte_read(0x8003) ;
139 1 Pauto = ISP_DATA ;
140 1 byte_read(0x8004) ;
141 1 row_num = ISP_DATA ;
142 1 Delay(10) ;
143 1 ISP_IAP_disable() ; // 关闭IAP功能
144 1 }
145
146
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 226 ----
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 + -