📄 ini_ram.lst
字号:
C51 COMPILER V7.06 INI_RAM 05/25/2006 16:31:10 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE INI_RAM
OBJECT MODULE PLACED IN D:\NEWMACHINE\060123\INI_RAM\INI_RAM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\NEWMACHINE\060123\INI_RAM\INI_RAM.C DB SB OE
stmt level source
1 #include <ini_ram.h>
2
3 bit writeEEP,save_PRG;
4 unsigned char PRG;
5 unsigned int mainDDR,nums,delt,nums1;
6 unsigned char COMM,SLA,FF,GET,times;
7 unsigned int *point;
8 bit readEEPpage;
9
10 void start_i2a()
11 {
12 1 P1_6=1; //SCL
13 1 P1_7=1; //SDA
14 1 S1CON=0x47; //ENS1=1 STA=0 STO=0 SI=0 AA=1
15 1 PS1=1;
16 1 EA=1;
17 1 ES1=1;
18 1 STA=1;
19 1 }
20
21 void delay(int num)
22 {
23 1 data unsigned int i,ii;
24 1 for(i=0;i<num;i++)
25 1 {
26 2 for(ii=0;ii<255;ii++);
27 2 }
28 1 }
29
30 void get_SLA1()
31 {
32 1 unsigned char temp_PRG;
33 1 if(PRG<50)
34 1 {
35 2 SLA=0XA0;
36 2 temp_PRG=PRG;
37 2 }
38 1 else
39 1 {
40 2 if(PRG<100)
41 2 {
42 3 SLA=0XA2;
43 3 temp_PRG=PRG-50;
44 3 }
45 2 else
46 2 {
47 3 if(PRG<150)
48 3 {
49 4 SLA=0XA4;
50 4 temp_PRG=PRG-100;
51 4 }
52 3 else
53 3 {
54 4 SLA=0XA6;
55 4 temp_PRG=PRG-150;
C51 COMPILER V7.06 INI_RAM 05/25/2006 16:31:10 PAGE 2
56 4 }
57 3 }
58 2 }
59 1 mainDDR=temp_PRG*768;
60 1 }
61
62 void writeEEP_word()
63 {
64 1 nums=0;
65 1 writeEEP=1;
66 1 SLA=0XA0;
67 1 COMM=0XFF;
68 1 start_i2a();
69 1 while(writeEEP==1);
70 1 }
71
72 void writeEEP_page(unsigned char t) //将指定专家参数复制到目的程序号下
73 {
74 1 nums=0;
75 1 delt=2;
76 1 writeEEP=1;
77 1 get_SLA1();
78 1 COMM=(mainDDR+t*128)/256;
79 1 start_i2a();
80 1 while(writeEEP==1);
81 1 }
82
83 void S1_INT (void) interrupt 5 //I2C
84 {
85 1 ES1=0;
86 1 if(S1STA==0x00)
87 1 {
88 2 FF=1;
89 2 S1CON=0xD5;//STA=0 STO=1 SI=0 AA=1
90 2 }
91 1 if(S1STA==0X08)
92 1 {
93 2 S1DAT=SLA;
94 2 S1CON=0xC5;//STA=0 STO=0 SI=0 AA=1
95 2 }
96 1 if(S1STA==0X10)
97 1 {
98 2 S1DAT=SLA;
99 2 S1CON=0xC5;//STA=0 STO=0 SI=0 AA=1
100 2 }
101 1 if(S1STA==0X18)
102 1 {
103 2 S1DAT=COMM;
104 2 S1CON=0xC5;//STA=0 STO=0 SI=0 AA=1
105 2 }
106 1 if(S1STA==0X20)
107 1 {
108 2 FF=1;
109 2 S1CON=0xD5;//STA=0 STO=1 SI=0 AA=1
110 2 }
111 1 if(S1STA==0X28)
112 1 {
113 2 nums++;
114 2 if(readEEPpage==1)
115 2 {
116 3 if(times<6&&nums<130)
117 3 {
C51 COMPILER V7.06 INI_RAM 05/25/2006 16:31:10 PAGE 3
118 4 if(nums==1)
119 4 {
120 5 COMM=(mainDDR+times*128)%256;
121 5 S1DAT=COMM;
122 5 S1CON=0xC5;//STA=0 STO=0 SI=0 AA=1
123 5 }
124 4 if(nums==2)
125 4 {
126 5 SLA=SLA+1;
127 5 S1CON=0XE5;
128 5 }
129 4 }
130 3 }
131 2 else
132 2 {
133 3 if(save_PRG==1)
134 3 {
135 4 if(nums<3)
136 4 {
137 5 if(nums==1)
138 5 COMM=0X00;
139 5 else
140 5 COMM=PRG;
141 5 S1DAT=COMM;
142 5 S1CON=0xC5;//STA=0 STO=0 SI=0 AA=1
143 5 }
144 4 else
145 4 {
146 5 S1CON=0xD5;
147 5 writeEEP=0;
148 5 }
149 4 }
150 3 else
151 3 {
152 4 if(times<6&&nums<130)
153 4 {
154 5 if(nums==1)
155 5 COMM=(mainDDR+times*128)%256;
156 5 else
157 5 {
158 6
159 6 if(times==5&&nums>=114)
160 6 COMM=0xFF;
161 6 else
162 6 {
163 7 if(nums%2==0)
164 7 {
165 8 COMM=*(point+(times*64+nums-delt))/256;
166 8 delt++;
167 8 }
168 7 else
169 7 COMM=*(point+(times*64+nums-delt))%256;
170 7 }
171 6
172 6 }
173 5 S1DAT=COMM;
174 5 S1CON=0xC5;//STA=0 STO=0 SI=0 AA=1
175 5 }
176 4 else
177 4 {
178 5 S1CON=0xD5;
179 5 writeEEP=0;
C51 COMPILER V7.06 INI_RAM 05/25/2006 16:31:10 PAGE 4
180 5 }
181 4 }
182 3 }
183 2 }
184 1 if(S1STA==0x30)
185 1 {
186 2 FF=1;
187 2 S1CON=0xD5;//STA=0 STO=1 SI=0 AA=1
188 2 }
189 1 if(S1STA==0x38)
190 1 S1CON=0xE5;//STA=1 STO=0 SI=0 AA=1
191 1 if(S1STA==40)
192 1 S1CON=0xC5;//STA=0 STO=0 SI=0 AA=1
193 1 if(S1STA==0x48)
194 1 {
195 2 FF=1;
196 2 S1CON=0xD5;//STA=0 STO=1 SI=0 AA=1
197 2 }
198 1 if(S1STA==0x50)
199 1 {
200 2 // j++;
201 2 GET=S1DAT;
202 2 // if(j%2==1)
203 2 // temp_GET=(int)(GET*256);
204 2 // else
205 2 // {
206 2 // jj++;
207 2 // temp_GET=temp_GET+GET;
208 2 // *(point+j-jj)=temp_GET;
209 2 // }
210 2 // if(j<numbers)
211 2 S1CON=0XC5;
212 2 // else
213 2 // S1CON=0XC1;
214 2 }
215 1 if(S1STA==0x58)
216 1 {
217 2 GET=S1DAT;
218 2 // temp_GET=temp_GET+GET;
219 2 // if(getPRG==1) //获取上次使用的程序号
220 2 // {
221 2 // PRG=temp_GET; //当前程序号
222 2 // lastPRG=temp_GET; //上次使用的程序号
223 2 // readEEPword=0;
224 2 S1CON=0xD5;//STA=0 STO=1 SI=0 AA=1
225 2 // }
226 2 // else
227 2 // {
228 2 // if(readEEPpage==1) //按页读取EEPROM
229 2 {
230 3 // *(point+j-jj)=temp_GET;
231 3 FF=1;
232 3 // readEEPpage=0;
233 3 S1CON=0xD5;//STA=0 STO=1 SI=0 AA=1
234 3 }
235 2 // }
236 2 }
237 1 ES1=1;
238 1 }
239
240 main()
241 {
C51 COMPILER V7.06 INI_RAM 05/25/2006 16:31:10 PAGE 5
242 1 unsigned char m,n;
243 1 save_PRG=0;
244 1
245 1 pp.t01=20;
246 1 pp.t02=50;
247 1 pp.gas2=OFF;
248 1 pp.t03=20;
249 1 pp.t04=50;
250 1 pp.k1=PDC;
251 1 pp.ignit=HF;
252 1 pp.i11=200;
253 1 pp.t12=20;
254 1 pp.i12=400;
255 1 pp.t13=2;
256 1 pp.t13_sd=0;
257 1 pp.t14=20;
258 1 pp.i14=1000;
259 1 pp.t15=20;
260 1 pp.i15=400;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -