⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bujinmain.c

📁 用于测试步进电机
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -