📄 89c58rd_flash.lst
字号:
C51 COMPILER V6.12 89C58RD_FLASH 04/20/2006 17:14:58 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 89C58RD_FLASH
OBJECT MODULE PLACED IN 89C58RD_flash.OBJ
COMPILER INVOKED BY: C:\c51\BIN\C51.EXE 89C58RD_flash.c DB OE SMALL ROM(LARGE)
stmt level source
1 #include <main.h>
2
3 void Isp_enable(void);
4 void Isp_disable(void);
5 byte SFR_RDB(byte A_H,byte A_L);
6 bit SFR_Erase(byte A_H,byte A_L);
7 bit SFR_WRB(byte A_H,byte A_L,byte Para);
8 bit SaveData_SFR(void);
9
10 //**********STC89C58RD+**************
11 void Isp_enable(void)
12 {
13 1 EA=0;
14 1 ISP_CONTR = ISP_CONTR & 0x18; //禁止ISP编程
15 1 ISP_CONTR = ISP_CONTR | 0x01; //等待时间
16 1 ISP_CONTR = ISP_CONTR | 0x80; //启动ISP编程
17 1 }
18
19 void Isp_disable(void)
20 {
21 1 ISP_CONTR = ISP_CONTR & 0x7f; //禁止ISP编程
22 1 ISP_TRIG = 0x00;
23 1 EA=1;
24 1 }
25
26 byte SFR_RDB(byte A_H,byte A_L)
27 {
28 1 ISP_ADDRH = A_H;
29 1 ISP_ADDRL = A_L;
30 1
31 1 ISP_CMD = ISP_CMD & 0xf8; //flash
32 1 ISP_CMD = ISP_CMD | 0x01; //flash
33 1 Isp_enable();
34 1
35 1 ISP_TRIG = 0x46;
36 1 ISP_TRIG = 0xb9;
37 1 _nop_();
38 1 Isp_disable();
39 1 return(ISP_DATA);
40 1
41 1 }
42
43 bit SFR_Erase(byte A_H,byte A_L)//错误return 1 正确return 0
44 {
45 1
46 1 ISP_ADDRH = A_H;
47 1 ISP_ADDRL = A_L;
48 1
49 1 ISP_CMD = ISP_CMD & 0xf8; //flash
50 1 ISP_CMD = ISP_CMD | 0x03; //flash
51 1
52 1 Isp_enable();
53 1 ISP_TRIG = 0x46;
54 1 ISP_TRIG = 0xb9;
55 1 _nop_();
C51 COMPILER V6.12 89C58RD_FLASH 04/20/2006 17:14:58 PAGE 2
56 1 Isp_disable();
57 1 return(0);
58 1 }
59
60 bit SFR_WRB(byte A_H,byte A_L,byte Para )//错误return 1 正确return 0
61 {
62 1 ISP_ADDRH = A_H;
63 1 ISP_ADDRL = A_L;
64 1
65 1 ISP_CMD = ISP_CMD & 0xf8;
66 1 ISP_CMD = ISP_CMD | 0x02;
67 1 ISP_DATA = Para;
68 1
69 1 Isp_enable();
70 1 ISP_TRIG = 0x46;
71 1 ISP_TRIG = 0xb9;
72 1 _nop_();
73 1
74 1 ISP_DATA = 0x00;
75 1 ISP_CMD = ISP_CMD & 0xf8;
76 1 ISP_CMD = ISP_CMD | 0x01;
77 1 ISP_TRIG = 0x46;
78 1 ISP_TRIG = 0xb9;
79 1 Isp_disable();
80 1 _nop_();
81 1
82 1 if(ISP_DATA == Para)
83 1 return(0);
84 1 else
85 1 return(1);
86 1
87 1 }
88
89 bit SaveData_SFR(void)//错误return 1 正确return 0
90 {
91 1 if (SFR_Erase(ADH,ADL))
92 1 {
93 2 return(1);
94 2 }
95 1 if (SFR_WRB(ADH,SFR_VA,vlm_main))//8000
96 1 {
97 2 return(1);
98 2 }
99 1 if (SFR_WRB(ADH,SFR_TA,treble_main))//8001
100 1 {
101 2 return(1);
102 2 }
103 1 if (SFR_WRB(ADH,SFR_BA,bass_main))//8002
104 1 {
105 2 return(1);
106 2 }
107 1 if (SFR_WRB(ADH,SFR_RADIO,prior_radio))//8003
108 1 {
109 2 return(1);
110 2 }
111 1 if (SFR_WRB(ADH,SFR_MIC,prior_mic))//8004
112 1 {
113 2 return(1);
114 2 }
115 1 if (SFR_WRB(ADH,SFR_MP3,prior_mp3))//8005
116 1 {
117 2 return(1);
C51 COMPILER V6.12 89C58RD_FLASH 04/20/2006 17:14:58 PAGE 3
118 2 }
119 1 if (SFR_WRB(ADH,SFR_LCD,prior_lcd))//8006
120 1 {
121 2 return(1);
122 2 }
123 1 if (SFR_WRB(ADH,SFR_FRONTGAIN,gain_front))//8007
124 1 {
125 2 return(1);
126 2 }
127 1 return(0);
128 1 }
129
130 void init_flash(void) //读高4k
131 {
132 1 vlm_main = SFR_RDB(ADH,SFR_VA);
133 1 treble_main = SFR_RDB(ADH,SFR_TA);
134 1 bass_main = SFR_RDB(ADH,SFR_BA);
135 1 gain_front = SFR_RDB(ADH,SFR_FRONTGAIN);
136 1 prior_radio = SFR_RDB(ADH,SFR_RADIO);
137 1 prior_mic = SFR_RDB(ADH,SFR_MIC);
138 1 prior_mp3 = SFR_RDB(ADH,SFR_MP3);
139 1 prior_lcd = SFR_RDB(ADH,SFR_LCD);
140 1 if((vlm_main == 0xff)&&(treble_main == 0xff)&&(bass_main == 0xff)&&(prior_radio == 0xff)&&(prior_mic == 0
-xff)&&(prior_mp3 == 0xff)&&(prior_lcd == 0xff)&&(gain_front == 0xff))
141 1 {
142 2 vlm_main = 0x28;
143 2 treble_main = 0x10;
144 2 bass_main = 0x10;
145 2 gain_front = 0x37 | 0x80;
146 2 prior_radio = 0x04;
147 2 prior_mic = 0x03;
148 2 prior_mp3 = 0x02;
149 2 prior_lcd = 0x01;
150 2 }
151 1
152 1 if(bass_main == 0xff)
153 1 {
154 2 bass_main = 0x10;
155 2 SaveData_SFR();
156 2 }
157 1 else if(bass_main > 0x1f)
158 1 {
159 2 bass_main = 0x10;
160 2 SaveData_SFR();
161 2 }
162 1 if(gain_front == 0xff)
163 1 {
164 2 gain_front = 0x37 | 0x80;
165 2 SaveData_SFR();
166 2 }
167 1 else if(gain_front > 0xbf || gain_front < 0xa1)
168 1 {
169 2 gain_front = 0x37 | 0x80;
170 2 SaveData_SFR();
171 2 }
172 1
173 1 if(treble_main == 0xff)
174 1 {
175 2 treble_main = 0x10;
176 2 SaveData_SFR();
177 2 }
178 1 else if(treble_main > 0x1f)
C51 COMPILER V6.12 89C58RD_FLASH 04/20/2006 17:14:58 PAGE 4
179 1 {
180 2 treble_main = 0x10;
181 2 SaveData_SFR();
182 2 }
183 1
184 1 if(vlm_main == 0xff)
185 1 {
186 2 vlm_main = 0x28;
187 2 SaveData_SFR();
188 2 }
189 1 else if(vlm_main > 0x28)
190 1 {
191 2 vlm_main = 0x28;
192 2 SaveData_SFR();
193 2 }
194 1
195 1 if(prior_radio == 0xff)
196 1 {
197 2 prior_radio = 0x04;
198 2 SaveData_SFR();
199 2 }
200 1 else if(prior_radio > 0x05 || prior_radio < 0x01)
201 1 {
202 2 prior_radio = 0x04;
203 2 SaveData_SFR();
204 2 }
205 1
206 1 if(prior_mic == 0xff)
207 1 {
208 2 prior_mic = 0x03;
209 2 SaveData_SFR();
210 2 }
211 1 else if(prior_mic > 0x05 || prior_mic < 0x01)
212 1 {
213 2 prior_mic = 0x03;
214 2 SaveData_SFR();
215 2 }
216 1
217 1 if(prior_mp3 == 0xff)
218 1 {
219 2 prior_mp3 = 0x02;
220 2 SaveData_SFR();
221 2 }
222 1 else if(prior_mp3 > 0x05 || prior_mp3 < 0x01)
223 1 {
224 2 prior_mp3 = 0x02;
225 2 SaveData_SFR();
226 2 }
227 1
228 1 if(prior_lcd == 0xff)
229 1 {
230 2 prior_lcd = 0x02;
231 2 SaveData_SFR();
232 2 }
233 1 else if(prior_lcd > 0x05 || prior_lcd < 0x01)
234 1 {
235 2 prior_lcd = 0x01;
236 2 SaveData_SFR();
237 2 }
238 1
239 1 }
240
C51 COMPILER V6.12 89C58RD_FLASH 04/20/2006 17:14:58 PAGE 5
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 600 ----
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 + -