📄 bujinmain.c
字号:
AUXR=mem_inn;
}
/***************************************************************************
* 功能: 工作面A计量处理
****************************************************************************/
void workajl(void)
{ if(update_worka)
{ update_worka=0;updatea=1;
if(jl1s>0)
{
while (jl1s>0)
{ gun1.pulse+=1;
jl1s--;
gun1.pulse_jsq++;
//if (gun1.pulse_jsq==120) { gun1.pulse_jsq=0;jsq1out=1;} //通知计数器
updatea=1;save_oka=1;idle_numa=0;
}
}
else
{
if(state1!=1 || !INT0) //if(state1==0 || !INT0) 2006-07-11
{
if(idle_numa<20)idle_numa++;
if(ration_a && (idle_numa>3)) //定量加油完毕
{ ration_a=0;
save_oka=1;idle_numa=20;
if(ration_mode_a)gun1.liter=ration_num_a;
else gun1.sale=ration_num_a;
disp_key_clear_a();
updatea=1;
}
//if(idle_numa==20 && save_oka){save_oka=0;sum_a();} //累計
}
else idle_numa=0;
}
}
}
/***************************************************************************
* 功能: 工作面B计量处理 [ok]
****************************************************************************/
void workaj2(void)
{ if(update_workb)
{ update_workb=0;updateb=1;
if(jl2s>0)
{
while (jl2s>0)
{ gun2.pulse+=1;
jl2s--;
gun2.pulse_jsq++;
//if (gun2.pulse_jsq==120) { gun2.pulse_jsq=0;jsq2out=1;} //通知计数器
updateb=1;save_okb=1;idle_numb=0;
}
}
else
{
if(state2!=1 || !INT0) //if(state2==0 || !INT0) 2006-07-11
{
if(idle_numb<20)idle_numb++;
if(ration_b && (idle_numb>3)) //定量加油完毕
{ ration_b=0;
save_okb=1;idle_numb=20;
if(ration_mode_b)gun2.liter=ration_num_b;
else gun2.sale=ration_num_b;
disp_key_clear_b();
updateb=1;
}
// if(idle_numb==20 && save_okb){save_okb=0;sum_b();} //累計
}
else idle_numb=0;
}
}
}
/***************************************************************************
* 功能:读出EEPROM保存数据
* JiangMaoZHou
***************************************************************************/
void read_eeprom(void)
{
void *pt;
pt=&gun1;
readbyteseq(0x01,pt,37); //读EEPROM
wdt=!wdt; //WDT
WDT_CONTR=0x34;
pt=&gun2;
readbyteseq(38,pt,37); //读EEPROM
pt=&(price_a);
readbyteseq(502,pt,2);//单价a
pt=&(price_b);
readbyteseq(504,pt,2);//单价b
oil_types_a=readbyte(78); //油品
oil_types_b=readbyte(79); //油品
residue_a=readbyte(87); //提前量
residue_b=readbyte(87+7); //提前量
close_num_a=readbyte(88); //提前关机量
close_num_b=readbyte(88+7); //提前关机量
gunadd_a=readbyte(89); //中控地址
gunadd_b=readbyte(89+7); //中控地址
decimal_a=readbyte(90); //读小数点a
decimal_b=readbyte(90+7); //读小数点b
increment_a=readbyte(91); //每秒增量1--3
increment_b=readbyte(91+7); //每秒增量1--3
printermode_a=readbyte(92); //打印机工作方式
printermode_b=readbyte(92+7); //打印机工作方式
pirnt_select_a=readbyte(93); //选择的打印机
pirnt_select_b=readbyte(93+7); //选择的打印机
}
/******************************************************
*功能:计算转速
*******************************************************/
void maths_c(void)
{ float m;
if(electromotor)
{
m=runf.x;
m=65536-m;
m=300000/m+0.5; //12M/6T为150000 24M/6T为:300000
rev=m;
}
else
{rev=0;} //转速
}
/***************************************************************************
* 功能:事件处理
* JiangMaoZHou
***************************************************************************/
void scout(void)
{ ulong nummm;
if(!cease_power)workajl(); //工作面A计量处理
if(!cease_power)workaj2(); //工作面B计量处理
if (scanfkey)
{
scanfkey=0;
if(!cease_power)read_key(); //扫描键盘
if(!cease_power)keya_solve();
if(!cease_power)keyb_solve();
//if(!cease_power)printstate=XBYTE[READPRINT]; //读打印机状态
}
//------------------------------------------------
if (updatea)
{ updatea=0;
if(!cease_power){maths_c();}
nummm=price_a*modehl_a;
if(!cease_power)disp_lcd1(nummm,0x04);
if(!cease_power)disp_dot1(5); //LCD1小数点
if(!cease_power)disp_lcd1(gun1.pulse,0x0a); //公升
if(!cease_power)disp_lcd1(price_a,0x0);
}
//-------------------------------------------------
if (updateb)
{ updateb=0;
//if(!cease_power){if(save_okb)maths_b();}
nummm=price_a*modehl_b;
if(!cease_power)disp_lcd2(nummm,0x04);
if(!cease_power)disp_dot2(5); //LCD2小数点
if(!cease_power)disp_lcd2(gun2.pulse,0x0a); //公升
if(!cease_power)disp_lcd2(rev,0x0);
}
//------------------------------------
dcespk_out(); //电磁阀及蜂鸣器输出
}
/***************************************************************************
* CMD16887加油机主控程序---步进电机测传感器
* 步进:细分2 每输入400个脉冲转动一圏
* 程序设计:JiangMaoZHou
* 创建:2006-04-01
* 修改:2006-09-14 VER: 2.0.1 晶振:24M
****************************************************************************/
void main(void)
{ while(!INT0)
{
wdt=!wdt; //WDT
WDT_CONTR=0x34; //WDT
}
messagesave_ok=0;
disp_floor_level_a=increment_a;
disp_floor_level_b=increment_b;
cease_power=0;
alarm=0x3f;
jsq1out=0;
jsq2out=0;
k1spk=1;
k2spk=1;
dropt_a=0;dropt_b=0;
//WDT_CONTR=0x34;
DCFD1=1;DCFX1=1;mc1=1;
DCFD2=1;DCFX2=1;mc2=1;
InitializeSystem(); //初始化
k1spk=1;
k2spk=1;
updatea=1;
updateb=1;
DCFD1=1;DCFX1=1;mc1=0;
DCFD2=1;DCFX2=1;mc2=0;
read_eeprom(); //读EEPROM
renew_sysdata(); //数据恢复
if(decimal_a>4 || decimal_b>4 || price_a==0 ||price_b==0 ||price_a>9999 || price_b>9999)
{
eeprom_ipl(); //EEPROM初始化程序
}
renew_printer_format();
cgq1s1old=cgq1s1;
cgq1s2old=cgq1s2;
cgq2s1old=cgq2s1;
cgq2s2old=cgq2s2;
//---------------------------------------------
k1spk_time=25; //启动短音
k2spk_time=25; //启动短音
//print_ipl(); //打印机初始化
disp_key_clear_a();
disp_key_clear_b();
//accumulative_total_list_a(); //累计转换至列表a
//accumulative_total_list_b(); //累计转换至列表b
mcstoptime_a=300;mcstoptime_b=300;
disp_lcd1(price_a,0x0);
table_buf[52] |=0x01; //通讯读单价
disp_lcd2(price_b,0x0);
table_buf[52+53] |=0x01; //通讯读单价
clear_worka();
clear_workb();
if(increment_a<200) increment_a=200;
if(increment_a>500) increment_a=500;
disp_rev();
//--------------------------------
while(1)
{ if(!cease_power)scout(); //事件处理
//if(!cease_power)pickup(); //提枪/挂枪检测
if(ration_mode_a) {ration_mode_a=0;disp_rev();}
wdt=!wdt; //WDT
WDT_CONTR=0x34; //WDT xxxxxxxxxxxxxxxxxxxxxxxxxxx
//if(state1==4 && menu1==4 && temp_mema==0){state1=0;disp_return_a();}
//if((k1key && (state1==3 || state1==7)) ||(!k1key && (state1==4 || state1==6)) && !locknooil_a) {if(save_ok){save_ok=0;backup_sysdata();}state1=0;disp_return_a();}
//if(!k1key && state1==0){ keya_num[0]=keynumdata[27];keya_num[3]=keynumdata[27];keya_num[1]=keynumdata[27];keya_num[2]=keynumdata[27];keya_num[4]=0x02;}
//else if(k1key && state1==0){if(keya_num[0]==keynumdata[27])disp_key_clear_a();}
//----------------------------
/*if(state2==4 && menu2==4 && temp_memb==0){state2=0;disp_return_b();}
if((k2key && (state2==3 || state2==7)) ||(!k2key && (state2==4 || state2==6)) && !locknooil_b) {if(save_ok){save_ok=0;backup_sysdata();}state2=0;disp_return_b();}
if(!k2key && state2==0){ keyb_num[0]=keynumdata[27];keyb_num[3]=keynumdata[27];keyb_num[1]=keynumdata[27];keyb_num[2]=keynumdata[27];keyb_num[4]=0x02;}
else if(k2key && state2==0){if(keyb_num[0]==keynumdata[27])disp_key_clear_b();}*/
//---------------------------
/*if((!INT0) )
{ void *pi;cease_power=0;
if(save_oka){save_oka=0;sum_a();} //累計
if(save_okb){save_okb=0;sum_b();} //累計
pi=&gun1;writebyteseq(0x01,pi,74);
while(1){;}
} */
//-----------------------------
//if(printformat_saveok)
//{
//printformat_saveok=0;
//backup_printer_format(); //备份打印格式
//}
//-----------------------------
//uart_command(); //通讯命令
//-----------------------------
/*if(state1==1){mcstoptime_a=300;table_buf[52] |=0x08;}
else table_buf[52] &=0x37;
if(state2==1){mcstoptime_b=300;table_buf[52+53] |=0x08;}
else table_buf[52+53] &=0x37;
if(locknooil_a)table_buf[52] |=0x10;
else table_buf[52] &=0x2f;
if(locknooil_b)table_buf[52+53] |=0x10;
else table_buf[52+53] &=0x2f;*/
//----------------------------------------------------------------
//if(messagesave_ok){messagesave_ok=0;disp_lcd1(price_a,0x0);disp_lcd2(price_b,0x0);backup_sysdata();} //因通讯改变要更新
//---------------------------
/*#if GUNJLMODE==1
if(state1!=1 && state2!=1) {mc1=1;mc2=1;}
#else
if(state1!=1) {mc1=1;}
if(state2!=1) {mc2=1;}
#endif*/
}
}
/***********************************************************
******************END---->END------->END*******************
***********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -