📄 driver0425.lst
字号:
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DRIVER0425
OBJECT MODULE PLACED IN D:\程序05~1\DRIVE\DRIVER0425.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\程序05~1\DRIVE\DRIVER0425.C DB SB OE
stmt level source
1 //#pragma la
2 #include <driver.h>
*** WARNING C317 IN LINE 230 OF driver.h: attempt to redefine macro 'M_OA'
3
4 xdata unsigned char rbuffer[55],sbuffer[6],p_sec;
5 unsigned char S_ANSW,POINTER0,POINTER1,work,RSUM,SSUM,c_t1,
6 nonce_sector,cross_machine,c_decrease,osc_add,osc_dec,SENS,temp_c,
7 share,byte_nums,nonce_sec,c_t0,v51,c_t42,c_t42_l,c_t42_r,c_sample,
8 err,osc_start_vh,osc_start_vl,osc_adjudge;
9 unsigned int *point;
10 unsigned int adl,adh,ad,vc1,vc2,vc3,vc4,vc5,vc6,const0,c_lift,delt_a41,U51;
11 xdata unsigned long AD1,AD2,AD3,AD4,AD5,da,c_avc,out0,out1,out2,const1,last_out1;
12 unsigned char COMM,SLA,FF,GET;
13 bit t_edge,osc_ok,decrease,decreased,stop_osc,osc_change,osc,sector,excursion_dir,
14 center_excursion,ad_finish,first_center,pulse_base,sample_avc,new_circle,
15 called,avc,lift,avc_ok,judge_ok,avc_dir,ergent_stop,pgj,in_sector,start,
16 lift_complete,K4,over_i1,over_i2,resend,send,overtime,osc_l,osc_r,avc_up,
17 avc_down,motor_stop,receive_p_out,receive_p_in,demand,start_osc,start_avc,
18 stop_avc,ans,to_begin,decrease_ok,need_para,ask_lift_ok,lift_ok,edge_start;
19 #define start_v41 200
20 #define start_v51 46
21
22 void start_i2()
23 {
24 1 data unsigned int time;
25 1 P1_6=1; //SCL
26 1 P1_7=1; //SDA
27 1 S1CON=0x47; //ENS1=1 STA=0 STO=0 SI=0 AA=1
28 1 PS1=1;FF=0;
29 1 EA=1;
30 1 ES1=1;
31 1 STA=1;
32 1 time=0;
33 1 do
34 1 {
35 2 time++;
36 2 if(time>10000)
37 2 {
38 3 FF=1;
39 3 }
40 2 }while(FF==0);
41 1 FF=0;
42 1 ES1=0;
43 1 }
44
45 void start_t2()
46 {
47 1 TM2CON=0x81; //16位溢出,分频系数1,f/12
48 1 EA=1;
49 1 TM2IR=0;
50 1 }
51
52 void ini_sbuf(unsigned char a,b,c,d,e,f)
53 {
54 1 sbuffer[0]=a;
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 2
55 1 sbuffer[1]=b;
56 1 sbuffer[2]=c;
57 1 sbuffer[3]=d;
58 1 sbuffer[4]=e;
59 1 sbuffer[5]=f;
60 1 }
61
62 unsigned char get_byte_nums(unsigned char type)
63 {
64 1 unsigned char numbers;
65 1 switch(type)
66 1 {
67 2 case infor_sec:
68 2 case command:
69 2 case program:
70 2 case answer: numbers=4;
71 2 break;
72 2 case err_infor:
73 2 case parameter1: numbers=5;
74 2 break;
75 2 case parameter:
76 2 case infor: numbers=6;
77 2 break;
78 2 case parameter2: numbers=7;
79 2 break;
80 2 case call_result: numbers=8;
81 2 break;
82 2 case p_out_sec: numbers=55;
83 2 break;
84 2 case p_in_sec: numbers=24;
85 2 break;
86 2 case edit_sec: numbers=64;
87 2 break;
88 2 default: break;
89 2 }
90 1 return numbers;
91 1 }
92
93 void TR_noans()
94 {
95 1 POINTER0=0;
96 1 SSUM=0;
97 1 send=1;
98 1 c_t1=0;
99 1 P1_5=1; //开发送使能
100 1 TR1=1;
101 1 while(POINTER0<byte_nums);
102 1 TR1=0;
103 1 P1_5=0; //关发送使能
104 1 }
105
106 void err_operate()
107 {
108 1 ini_sbuf(M_ALL,err_infor,0,0,0,0);
109 1 switch(err)
110 1 {
111 2 case 1: //发送超时
112 2 case 2: //接收超时
113 2 case 3: sbuffer[1]=commuFail;break; //三次校验和错误 //通讯出错
114 2 case 4: sbuffer[1]=IgnitFail;break; //引弧失败
115 2 case 5: sbuffer[1]=systemErr;break; //电源出错
116 2 case 6: sbuffer[1]=overTemp;break; //过温
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 3
117 2 case 7: sbuffer[1]=lackWater;break; //缺水
118 2 case 8: sbuffer[1]=lackGas1;break; //缺气1
119 2 case 9: sbuffer[1]=lackGas2;break; //缺气2
120 2 }
121 1 byte_nums=get_byte_nums(err_infor);
122 1 TR_noans();
123 1 ergent_stop=1;
124 1 }
125
126 void TR_ans()
127 {
128 1 ans=1;
129 1 REN=0;
130 1 POINTER1=0;
131 1 RSUM=0;
132 1 TB8=1;
133 1 POINTER0=0;
134 1 SSUM=0;
135 1 send=1;
136 1 c_t1=0;
137 1 P1_5=1; //开发送使能
138 1 TR1=1;
139 1 while(POINTER0<byte_nums);
140 1 TR1=0;
141 1 P1_5=0; //关发送使能
142 1
143 1 REN=1;
144 1 send=0;
145 1 c_t1=0;
146 1 TR1=1;
147 1 while(POINTER1<byte_nums);
148 1 TR1=0;
149 1 if(overtime==1)
150 1 {
151 2 err=3;
152 2 err_operate();
153 2 overtime=0;
154 2 }
155 1 ans=0;
156 1 }
157
158 void delay(int num)
159 {
160 1 data unsigned char i,j;
161 1 for(i=0;i<num;i++)
162 1 {
163 2 for(j=0;j<255;j++);
164 2 }
165 1 }
166
167 void read_8574 () //过流1或过流2
168 {
169 1 unsigned char temp_GET;
170 1 SLA=0x43;
171 1 start_i2();
172 1 temp_GET=GET;
173 1 temp_GET=temp_GET&0X01;
174 1 if(temp_GET==0)
175 1 over_i1=1;
176 1 temp_GET=GET;
177 1 temp_GET=temp_GET&0X02;
178 1 if(temp_GET==0)
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 4
179 1 over_i2=1;
180 1 }
181
182 void write_8574(unsigned char col) //出错显示
183 {
184 1 SLA=0x42;
185 1 COMM=col;
186 1 start_i2();
187 1 }
188
189 void cross_type() //十字划架型号
190 {
191 1 SLA=0x41;
192 1 start_i2();
193 1 delay(3);
194 1 cross_machine=GET&0X0F;
195 1 }
196
197 void get_vc()
198 {
199 1 if(pp.k1==PDC)
200 1 {
201 2 switch(pp.avc_type)
202 2 {
203 3 case SP: {
204 4 vc5=(pp.u51_p-2);
205 4 vc6=(pp.u51_p+2);
206 4 }break;
207 3 case SB: {
208 4 vc5=(pp.u51_b-2);
209 4 vc6=(pp.u51_b+2);
210 4 }break;
211 3 case SPB: {
212 4 vc1=(pp.u51_p-2);
213 4 vc2=(pp.u51_p+2);
214 4 vc3=(pp.u51_b-2);
215 4 vc4=(pp.u51_b+2);
216 4 }break;
217 3 default:break;
218 3 }
219 2 }
220 1 else
221 1 {
222 2 vc5=(pp.u51_p-2);
223 2 vc6=(pp.u51_p+2);
224 2 }
225 1 }
226
227 void get_SENS()
228 {
229 1 switch(pp.sens)
230 1 {
231 2 case 1: {
232 3 v51=start_v51; //500
233 3 SENS=2; //0.0075mm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -