📄 fk.lst
字号:
C51 COMPILER V7.50 FK 12/26/2006 10:15:54 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE FK
OBJECT MODULE PLACED IN F:\无级灯光\分控\FK.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE F:\无级灯光\分控\FK.C DB SB OE
line level source
1 #include<reg51.h>
2 #include <intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define nop _nop_();
6 sbit pwm1=P1^1;
7 sbit pwm2=P1^2;
8 sbit r485=P1^3;/*0接收,1发送*/
9 sbit pl_km=P1^4;/*旁路接触器*/
10 sbit ud_km=P1^5;/*正负补偿*/
11 sbit sc_b=P1^6;
12 sbit sc_c=P1^7;
13 sbit adc_cs=P3^2;
14 sbit adc_v=P3^3;
15 sbit adc_a=P3^4;
16 sbit adc_clk=P3^5;
17 sbit bx_jd=P3^7;
18 uchar tj_v,xw,in_v,in_a;
19 uchar v_av,a_av,v_avl,a_avl,v_gd,i_gd,i_kz,t_add,t_sub,obj_v,gz_bz,v_add,v_sub,t_w,ol_t,
20 ol_lj,ol_num,a_bl,bc_bt,bc_t,sr_num,sr_com,sr_pro;
21 uchar sr_dat[13];
22 uint t0_lj,a_zs,sr_data,st_data,second,t_run;
23 bit ud_pwm,t0_int,sr_int,st_int,on_off,bc_zf,bc_ds,gy_gz,sr_zt,sr_ov,t0bit,kz_off;
24 void delay1(uchar x)
25 { uchar temp;
26 1 for (temp=x;temp>0;temp--)
27 1 {nop;}
28 1 }
29 bit jy_ch()
30 {bit tempbit=0;
31 1 uchar temp;
32 1 uint tempint1=0,tempint2=0;
33 1 if((xw==sr_dat[1])||(sr_dat[1]==0))
34 1 {
35 2 for(temp=7;temp>0;temp--)tempint1+=sr_dat[temp];
36 2 tempint2=sr_dat[8]<<12;
37 2 tempint2|=sr_dat[9]<<8;
38 2 tempint2|=sr_dat[10]<<4;
39 2 tempint2|=sr_dat[11];
40 2 if(tempint2==tempint1)
41 2 { tempbit=1;
42 3 sr_com=sr_dat[2];
43 3 sr_pro=sr_dat[3];
44 3 sr_data=sr_dat[4]<<12;
45 3 sr_data|=sr_dat[5]<<8;
46 3 sr_data|=sr_dat[6]<<4;
47 3 sr_data|=sr_dat[7];
48 3 }
49 2 }
50 1 return(tempbit);
51 1 }
52 r_exe()
53 {
54 1 uint tempint;
55 1 uchar temp;
C51 COMPILER V7.50 FK 12/26/2006 10:15:54 PAGE 2
56 1 sr_dat[0]=0xa5;
57 1 sr_dat[12]=0xe7;
58 1 switch(sr_dat[2])
59 1 {
60 2 case 0:
61 2 switch(sr_dat[3])
62 2 {
63 3 case 0:sr_dat[4]=sr_dat[5]=0;
64 3 sr_dat[6]=v_av>>4; sr_dat[7]=v_av&0xf;
65 3 break;
66 3 case 1: temp=a_zs>>8;
67 3 sr_dat[4]=temp>>4;
68 3 sr_dat[5]=temp&0xf;
69 3 temp=a_zs&0xff;
70 3 sr_dat[6]=temp>>4;
71 3 sr_dat[7]=temp&0xf;
72 3 break;
73 3 case 2: temp=tj_v/16;
74 3 if(bc_zf)tempint=temp+v_av;
75 3 else tempint=v_av-temp;
76 3 if(tempint>255)tempint=255;
77 3 sr_dat[4]=sr_dat[5]=0;
78 3 sr_dat[6]=tempint>>4; sr_dat[7]=tempint&0xf;
79 3 }
80 2 break;
81 2 case 1:
82 2 switch(sr_dat[3])
83 2 {
84 3 case 0:v_gd=sr_dat[6]<<4;v_gd|=sr_dat[7];
85 3 break;
86 3 case 1:i_gd=sr_dat[6]<<4;i_gd|=sr_dat[7];
87 3 break;
88 3 case 2:t_run=sr_dat[4]<<12;t_run|=(sr_dat[5]<<8);
89 3 t_run|=(sr_dat[6]<<4);t_run|=sr_dat[7];
90 3 break;
91 3 case 3:v_add=sr_dat[6]<<4;v_add|=sr_dat[7];
92 3 break;
93 3 case 4:v_sub=sr_dat[6]<<4;v_sub|=sr_dat[7];
94 3 break;
95 3 case 5:i_kz=sr_dat[6]<<4;i_kz|=sr_dat[7];
96 3 break;
97 3 case 6:ol_t=sr_dat[6]<<4;ol_t|=sr_dat[7];
98 3 break;
99 3 case 7:a_bl=sr_dat[6]<<4;a_bl|=sr_dat[7];
100 3 break;
101 3 case 8:bc_bt=sr_dat[6]<<4;bc_bt|=sr_dat[7];
102 3 break;
103 3 case 9:gy_gz=sr_dat[7];
104 3 break;
105 3 case 10:bc_ds=sr_dat[7];
106 3 break;
107 3 case 11:kz_off=sr_dat[7];
108 3 }
109 2 break;
110 2 case 2:
111 2 switch(sr_dat[3])
112 2 {
113 3 case 0:gz_bz=7;on_off=0;/*强迫关机*/
114 3 break;
115 3 case 1:if((gz_bz==0)||(gz_bz==7)){gz_bz=0;on_off=1;}
116 3 break;
117 3 case 2:gz_bz=0;
C51 COMPILER V7.50 FK 12/26/2006 10:15:54 PAGE 3
118 3 }
119 2 }
120 1 if(gz_bz!=0){sr_dat[2]=3;sr_dat[3]=gz_bz;}
121 1 else
122 1 {if(!on_off)sr_dat[2]=0;
123 2 else
124 2 {if(bc_zf)sr_dat[2]=1;
125 3 else sr_dat[2]=2;
126 3 }
127 2 }
128 1 tempint=0;
129 1 for(temp=7;temp>0;temp--)
130 1 {
131 2 tempint+=sr_dat[temp];
132 2 }
133 1 temp=tempint>>8;
134 1 sr_dat[8]=temp>>4;
135 1 sr_dat[9]=temp&0xf;
136 1 temp=tempint&0xff;
137 1 sr_dat[10]=temp>>4;
138 1 sr_dat[11]=temp&0xf;
139 1 }
140 main()
141 {
142 1 bit tempbit;
143 1 uint tempint;
144 1 uchar temp,ch1,ch2;
145 1 /*初始化*/
146 1 bx_jd=1;
147 1 pwm1=0;
148 1 nop
149 1 nop
150 1 pwm2=1;
151 1 pl_km=1;
152 1 ud_km=1;
153 1 r485=0;
154 1 TMOD=0x22;
155 1 SCON=0X40;
156 1 PCON=0;
157 1 TH1=0XFD;/*9600 *波特*/
158 1 TH0=0;
159 1 TR1=1;
160 1 TR0=1;
161 1 ET0=1;
162 1 ES=1;
163 1 EA=1;
164 1 t_run=0;
165 1 second=0;
166 1 t_run=255;
167 1 t_add=0;
168 1 t_sub=0;
169 1 v_gd=210;
170 1 on_off=0;
171 1 ol_lj=0;
172 1 ol_num=0;
173 1 sr_num=0;
174 1 REN=1;
175 1 RI=0;
176 1 sr_zt=0;
177 1 bx_jd=0;
178 1 /*工作区*/
179 1 while(1)
C51 COMPILER V7.50 FK 12/26/2006 10:15:54 PAGE 4
180 1 {
181 2 /*电压读取*电流读取**/
182 2 ch1=ch2=0;
183 2 adc_cs=0;
184 2 for(temp=9;temp>0;temp--)
185 2 { adc_clk=1;delay1(2);
186 3 adc_clk=0;delay1(2);
187 3 ch1=(ch1<<1)|adc_v;
188 3 ch2=(ch2<<1)|adc_a;
189 3 }
190 2 adc_cs=1;
191 2 tempint=v_av<<8;
192 2 tempint+=v_avl;
193 2 tempint-=v_av;
194 2 tempint+=ch1;
195 2 v_avl=tempint&0xff;
196 2 v_av=tempint>>8;
197 2 tempint=a_av<<8;
198 2 tempint+=a_avl;
199 2 tempint-=a_av;
200 2 tempint+=ch2;
201 2 a_avl=tempint&0xff;
202 2 a_av=tempint>>8;
203 2 /*计算、保护及动作*/
204 2 a_zs=a_av*a_bl;
205 2 if(kz_off)
206 2 {if(a_zs<i_kz)
207 3 {gz_bz=6;
208 4 on_off=0;
209 4 tj_v=0;
210 4 }
211 3 else if(gz_bz==6)gz_bz=0;
212 3 }
213 2 else if(gz_bz==6)gz_bz=0;
214 2 if(a_zs<=i_gd)
215 2 {
216 3 ol_num=0;
217 3 ol_lj=0;
218 3 }
219 2 else
220 2 {tempint=i_gd<<1;
221 3 tempint+=i_gd;
222 3 if(a_zs>tempint)
223 3 {gz_bz=4;
224 4 on_off=0;
225 4 pl_km=1;
226 4 tj_v=0;
227 4 }
228 3 else
229 3 {tempint=a_zs-i_gd;
230 4 if(tempint<255)ol_num=tempint;
231 4 else ol_num=255;
232 4 }
233 3 }
234 2 if(ol_lj>ol_t)
235 2 {if(!gz_bz)gz_bz=3;
236 3 on_off=0;
237 3 pl_km=1;
238 3 tj_v=0;
239 3 }
240 2 if(v_av<v_gd)
241 2 {if(!bc_zf)bc_t=0;
C51 COMPILER V7.50 FK 12/26/2006 10:15:54 PAGE 5
242 3 if(bc_t>bc_bt){bc_zf=1;ud_km=0;}
243 3 if(bc_ds&&bc_zf)
244 3 {temp=v_gd-v_av;
245 4 if(temp<40)
246 4 {obj_v=temp*6;
247 5 if(gz_bz<3)gz_bz=0;
248 5 }
249 4 else
250 4 {if((!gz_bz)&&(!bc_zf))gz_bz=1;
251 5 if(!bc_ds)on_off=0;
252 5 pl_km=1;
253 5 tj_v=0;
254 5 }
255 4 }
256 3 else
257 3 {if(!gz_bz&&!bc_ds)gz_bz=1;
258 4 on_off=0;
259 4 pl_km=1;
260 4 tj_v=0;
261 4 }
262 3 }
263 2 else
264 2 if(v_av>v_gd)
265 2 {if(bc_zf)bc_t=0;
266 3 if(bc_t>bc_bt){bc_zf=0;ud_km=1;}
267 3 if(!bc_zf)
268 3 {temp=v_av-v_gd;
269 4 if(temp<40)
270 4 {obj_v=temp*6;
271 5 if(gz_bz<3)gz_bz=0;
272 5 }
273 4 else
274 4 {
275 5 if(gy_gz)
276 5 {
277 6 if(!gz_bz)gz_bz=2;
278 6 on_off=0;
279 6 pl_km=1;
280 6 tj_v=0;
281 6 }
282 5 else {if(gz_bz<3)gz_bz=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -