📄 other.lst
字号:
C51 COMPILER V7.00 OTHER 09/14/2006 16:35:49 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE OTHER
OBJECT MODULE PLACED IN OTHER.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE OTHER.C OPTIMIZE(9,SIZE) BROWSE ORDER DEBUG OBJECTEXTEND
stmt level source
1 /*****************************************
2 * 文件名:OTHER.C
3 *****************************************/
4 #include <REG51STC.H>
5 #include "CMD16887.H"
6 #include "externxy.h"
7 /******************************************
8 * 功能:金额取整加油
9 *******************************************/
10 void oil_intmoney(uchar gunidid) //金额取整加油
11 { ulong mm;
12 1 uint aa,bb,cc;
13 1
14 1 if(gunidid==0){mm=gun1.sale;ration_mode_a=0;bbyte=dotmode[decimal_a];}
15 1 else {mm=gun2.sale;ration_mode_b=0;bbyte=dotmode[decimal_b];}
16 1
17 1 //小数点
18 1
19 1 if(a5)aa=100; //单价小数点
20 1 else if(a2)aa=1000;
21 1 else aa=1;
22 1
23 1 if(a3){bb=100;cc=mm%100;mm=mm+100-cc;cc=100-cc;} //金额小数点
24 1 else if(a0){bb=10;cc=mm%100;mm=mm+10-cc;cc=10-cc;}
25 1 else {bb=1;cc=0;mm+=50;}
26 1
27 1 if(gunidid==0)
28 1 { ration_num_a=mm;
29 2 mm=mm*120*aa/bb/price_a-gun1.pulse-jl1s;
30 2 ration_pulse_a=mm; //定量脉冲
31 2 }
32 1 else
33 1 { ration_num_b=mm;
34 2 mm=mm*120*aa/bb/price_b-gun2.pulse-jl2s;
35 2 ration_pulse_b=mm; //定量脉冲
36 2 }
37 1
38 1 }
39 /**********************************************************
40 * 功能:取消加油时,按退出键后清原来加油数据
41 **********************************************************/
42 void clr_exitdata_a(void)
43 {
44 1 //gun1.liter=0;
45 1 //gun1.sale=0;
46 1 //gun1.pulse=0;
47 1 updatea=1; //通知更新
48 1 }
49 /**********************************************************
50 * 功能:取消加油时,按退出键后清原来加油数据
51 **********************************************************/
52 void clr_exitdata_b(void)
53 {
54 1 //gun2.liter=0;
55 1 //gun2.sale=0;
C51 COMPILER V7.00 OTHER 09/14/2006 16:35:49 PAGE 2
56 1 //gun2.pulse=0;
57 1 updateb=1; //通知更新
58 1 }
59 /**********************************************************
60 * 功能:检查锁机密码a/b
61 ***********************************************************/
62 bit pass_check(uchar gunidid)
63 { void *pt;
64 1 uint add;
65 1 union{
66 1 uchar c[4];
67 1 ulong x;
68 1 }temp;
69 1 add=PASSSTARTADD;
70 1 pt=&temp.c[0];
71 1 if(gunidid==0)
72 1 {
73 2 readbyteseq(add,pt,4);
74 2 if(menu1==2 ||(menu1==4 && temp_mema==1))
75 2 {
76 3 if(temp.x==ration_num_a && multiple_a==10000) return(1); //密码验证
77 3 if(ration_num_a==0x5e4 && multiple_a==10000 && (menu1==4 || locknooil_a)) return(1); //修改戓被锁住时
-有用
78 3 else return(0);
79 3 }
80 2 else if(menu1==4 && temp_mema==3)
81 2 {
82 3 if(ration_pulse_a==ration_num_a && multiple_a==10000) return(1); //两次密码必须一致
83 3 else return(0);
84 3 }
85 2 }
86 1 else // gunidid==1 //
87 1 { add+=4;
88 2 readbyteseq(add,pt,4);
89 2 if(menu2==2 ||(menu2==4 && temp_memb==1))
90 2 {
91 3 if(temp.x==ration_num_b && multiple_b==10000) return(1); //密码验证
92 3 if(ration_num_b==0x5e4 && multiple_b==10000 && (menu2==4 || locknooil_b)) return(1); //修改戓被锁住时
-有用
93 3 else return(0);
94 3 }
95 2 else if(menu2==4 && temp_memb==3)
96 2 {
97 3 if(ration_pulse_b==ration_num_b && multiple_b==10000) return(1); //两次密码必须一致
98 3 else return(0);
99 3 }
100 2 }
101 1 }
102 /**********************************************************
103 * 功能:计算定量脉冲数 number为金额限量,gunidid为工作面序号
104 **********************************************************/
105 void calculate_ration(uchar gunidid)
106 { uint aa,bb,cc;
107 1 float mm,fb;
108 1 ulong nn;
109 1 if(gunidid==0)
110 1 {
111 2 bbyte=dotmode[decimal_a]; //小数点
112 2 if(a5)aa=100; //单价小数点
113 2 else if(a2)aa=1000;
114 2 else aa=1;
115 2
C51 COMPILER V7.00 OTHER 09/14/2006 16:35:49 PAGE 3
116 2 if(a3){bb=100;} //金额小数点
117 2 else if(a0){bb=10;}
118 2 else {bb=1;}
119 2
120 2 if(a4)cc=100;
121 2 else cc=1000;
122 2 if(!ration_mode_a)
123 2 { //定元
124 3 mm=ration_num_a;
125 3 mm=mm*aa/bb/price_a+0.005;
126 3 fb=999999.0/cc;
127 3 if(mm>fb)
128 3 { ration_num_a=999999;
129 4 mm=999999.0/cc+0.005;
130 4 //fb=999999.0*bb*price_a/aa/cc;
131 4 //ration_num_a=fb;
132 4 ration_mode_a=1; //定升
133 4 vip_mode_a=ration_mode_a;
134 4 multiple_a=0;
135 4 if(state1==2)k1spk_time=110;
136 4 }
137 3 mm=mm*120.0;
138 3 nn=mm;
139 3 //if(nn<120) nn=0;
140 3 ration_pulse_a=nn;
141 3 }
142 2 else
143 2 { //定升
144 3 mm=ration_num_a;
145 3 mm=mm/cc+0.005;
146 3 fb=999999.0*aa/bb/price_a;
147 3 if(mm>fb)
148 3 {
149 4 ration_num_a=999999;
150 4 mm=999999.0*aa/bb/price_a+0.005;
151 4 //fb=999999.0*cc*aa/bb/price_a;
152 4 //ration_num_a=fb;
153 4 ration_mode_a=0; //定元
154 4 vip_mode_a=ration_mode_a;
155 4 multiple_a=0;
156 4 if(state1==2)k1spk_time=110;
157 4 }
158 3 mm=mm*120.0;
159 3 nn=mm;
160 3 //if(nn<120) nn=0;
161 3 ration_pulse_a=nn;
162 3 }
163 2 }
164 1 //--------------------------
165 1 else
166 1 {
167 2 bbyte=dotmode[decimal_b]; //小数点
168 2 if(a5)aa=100; //单价小数点
169 2 else if(a2)aa=1000;
170 2 else aa=1;
171 2
172 2 if(a3){bb=100;} //金额小数点
173 2 else if(a0){bb=10;}
174 2 else {bb=1;}
175 2
176 2 if(a4)cc=100;
177 2 else cc=1000;
C51 COMPILER V7.00 OTHER 09/14/2006 16:35:49 PAGE 4
178 2 if(!ration_mode_b)
179 2 { //定元
180 3 mm=ration_num_b;
181 3 mm=mm*aa/bb/price_b+0.005;
182 3 fb=999999.0/cc;
183 3 if(mm>fb)
184 3 { ration_num_b=999999;
185 4 mm=999999.0/cc+0.005;
186 4 //fb=999999.0*bb*price_b/aa/cc;
187 4 //ration_num_b=fb;
188 4 ration_mode_b=1; //定升
189 4 vip_mode_b=ration_mode_b;
190 4 multiple_b=0;
191 4 if(state2==2)k2spk_time=110;
192 4 }
193 3 mm=mm*120.0;
194 3 nn=mm;
195 3 //if(nn<120) nn=0;
196 3 ration_pulse_b=nn;
197 3 }
198 2 else
199 2 { //定升
200 3 mm=ration_num_b;
201 3 mm=mm/cc+0.005;
202 3 fb=999999.0*aa/bb/price_b;
203 3 if(mm>fb)
204 3 {
205 4 ration_num_b=999999;
206 4 mm=999999.0*aa/bb/price_b+0.005;
207 4 //fb=999999.0*cc*aa/bb/price_b;
208 4 //ration_num_b=fb;
209 4 ration_mode_b=0; //定元
210 4 vip_mode_b=ration_mode_b;
211 4 multiple_b=0;
212 4 if(state2==2)k2spk_time=110;
213 4 }
214 3 mm=mm*120.0;
215 3 nn=mm;
216 3 //if(nn<120) nn=0;
217 3 ration_pulse_b=nn;
218 3 }
219 2 }
220 1 }
221 /***********************************************
222 *功能:启动步进电机
223 ***********************************************/
224 void startup(uint number)
225 {
226 1 if(!electromotor && state1==0)
227 1 { clear_worka(); clear_workb();
228 2 if(increment_a<200) increment_a=200;
229 2 if(increment_a>500) increment_a=500;
230 2 calrev(); //根据转速计算定时器值
231 2 if(increment_b>=63036)runf.x=63036; //12M时为64286
232 2 else runf.x=increment_b;
233 2 RCAP2L=runf.x%256;
234 2 RCAP2H=runf.x/256;
235 2 runsum=400;
236 2 cmdstop=0;
237 2 if(increment_a>235)price_b=number-2; //12M时为:235
238 2 else price_b=number-1;
239 2 hlow=0;
C51 COMPILER V7.00 OTHER 09/14/2006 16:35:49 PAGE 5
240 2 startbujin=1;
241 2 electromotor=1;
242 2 modehl_a=60;modehl_b=60;
243 2 }
244 1 }
245 /**************************************************
246 *功能:设置转速0-9
247 **************************************************/
248 void setb_rev(uchar number)
249 {
250 1 if(state1==3)
251 1 {if(ration_num_a<3){save_ok=1;increment_a=increment_a*10+number;ration_num_a++;disp_rev();}}
252 1 else
253 1 { if(number==0)number=10;
254 2 startup(number*10);
255 2 }
256 1 }
257 /************************************************
258 *功能:根据转速计算定时器值
259 * 步进:细分2 每输入400个脉冲转动一圏
260 *************************************************/
261 void calrev(void)
262 {
263 1 increment_b=300000/increment_a; //increment_a为转速 r/min 12M/6T为150000 24M/6T为:300000
264 1 increment_b=65536-increment_b;
265 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2124 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 41
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 + -