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

📄 gas1.c

📁 发动机点火提前角的一个程序
💻 C
📖 第 1 页 / 共 3 页
字号:
//		_asm CLRWDT _endasm
		SEND_DATA(LEDV5);
		UART_SEND(0xC6);

		SEND_DATA(LEDV4);
		UART_SEND(0xC7);

		SEND_DATA(LEDV3);
		UART_SEND(0xC8);

		SEND_DATA(LEDV2);
		UART_SEND(0xC9);

		SEND_DATA(LEDV1);
		UART_SEND(0xCA);
//		_asm CLRWDT _endasm

	
		SEND_DATA(ZKYL);
		UART_SEND(0x80);

		SEND_DATA(RQYL);
		UART_SEND(0x81);

		SEND_DATA(QYCG);
		UART_SEND(0x82);

		SEND_DATA(HYCG);
		UART_SEND(0x83);
//		_asm CLRWDT _endasm
		SEND_DATA(WATER_TEMP);
		UART_SEND(0x84);

		SEND_DATA(QLSR);
		UART_SEND(0x86);

		SEND_DATA(PYMK);
		UART_SEND(0x88);
//		_asm CLRWDT _endasm
		SEND_DATA(PZ_PERIOD);
		UART_SEND(0x8a);

		SEND_DATA(PZ_PERIOD>>8);
		UART_SEND(0x8b);

		SEND_DATA(SPEED_LEVEL);
		UART_SEND(0x8C);
//		_asm CLRWDT _endasm
		//SEND_DATA(PYMK_LEVEL);
		SEND_DATA(0x01);
		UART_SEND(0x8D);

		SEND_DATA(ZKYL_LEVEL);
		UART_SEND(0x8E);

		SEND_DATA(JYMK);
		UART_SEND(0x8F);
		TIMER_IF.onebit.STATUS_SEND_IF=0;
	}
}
void UART_SEND(unsigned char data)
{
	while (BusyUSART());
	WriteUSART(data);
}
void SEND_DATA(unsigned char data)
{
	UART_SEND((data & 0x0f) | 0x60);
	UART_SEND( ( (data >>4) & 0x0f) | 0x70);
}
// _________________________________________________________________________________________________ 
 unsigned char CODE_READ(unsigned long addr)
{
   	TBLPTRL = *((unsigned char *)&addr); 
//	TBLPTRL &=  0xfe;
   	TBLPTRH =*((unsigned char *)&addr+1);
   	TBLPTRU =*((unsigned char *)&addr+2);
	TableRead_PostInc();
	return 	TABLAT;
}//
void CODEwritePage (unsigned long addr,unsigned char data) 
{ 
	signed char    i,j; 
	unsigned char temp[64];

   	TBLPTRL =*((unsigned char *)&addr);
   	TBLPTRH =*((unsigned char *)&addr+1);
   	TBLPTRU =*((unsigned char *)&addr+2); 
   	TBLPTRL &= 0xC0;       
   	for (i=0;i<=63;i++) 
	{ 
       	TableRead_PostInc(); 
       	temp[i] = TABLAT; 
   	}

	temp[addr & 0x3f]=data;
	while (EECON1bits.WR) {};


	TBLPTRU = *((unsigned char *)&addr+2); 
	TBLPTRH = *((unsigned char *)&addr+1);
	TBLPTRL = *((unsigned char *)&addr);   
	TBLPTRL &= 0xC0;                      

	EECON1bits.EEPGD = 1;       
	EECON1bits.CFGS = 0;         
	EECON1bits.WREN = 1;         
	EECON1bits.FREE = 1;        

	INTCONbits.GIEL = 0;                   
	INTCONbits.GIEH = 0;                   
	EECON2 = 0x55;                         
	EECON2 = 0xAA;                         
	EECON1bits.WR = 1;                     
	Nop();                                 
	INTCONbits.GIEL = 1;                   
	INTCONbits.GIEH = 1; 

	TableRead_PostDec();                   

	FSR0H = ((((unsigned int)&temp[0])>>8)&0xFF); 
	FSR0L = (((unsigned int)&temp[0])&0xFF);       

	for(j=0;j<8;j++){
		for (i=0;i<8;i++) { 
   			TABLAT = (POSTINC0);                
   			TableWrite_PreInc();               
		} 
		EECON1bits.EEPGD = 1;                
		EECON1bits.CFGS = 0;                  
		EECON1bits.WREN = 1; 

		INTCONbits.GIEL = 0;                   
		INTCONbits.GIEH = 0;                 
		EECON2 = 0x55;                         
		EECON2 = 0xAA;                        
		EECON1bits.WR = 1;                    
		Nop();  
		INTCONbits.GIEL = 1;                   
		INTCONbits.GIEH = 1;							
	}       
	EECON1bits.WREN = 0;                                
} 
void 	PJ_TIMING(void)
{

}
//============================cal signed pqyc=====================================
void CAL_PQYC(void)
{


}
//=========================cal speed=================================================
void CAL_SPEED(void)
{

}
//==========================exe pz===================================
void EXE_PZ0(void)
{

	if(PZ_COME.onebit.PZ0){
		if(PERCENT_FLAG.onebit.sign){
			PQ_CUT.onebit.PZ0=1;
			PZ0_PQYC=PQYC;
		}
		else
			PQ_REG.onebit.PZ0=1;
	}

	if(PZ_OVER.onebit.PZ0){
		if(PERCENT_FLAG.onebit.sign){
			PQ_REG.onebit.PZ0=0;
		}
		else {
			PQ_REG.onebit.PZ0=1;		
			PQ_LAST.onebit.PZ0=1;	
			PZ0_PQYC=PQYC;				
		}
	}	
	if(PQ_LAST.onebit.PZ0)				
	{			
		if(PZ0_PQYC!=0x00)				
			PZ0_PQYC=PZ0_PQYC-1;
		else
		{
			PQ_LAST.onebit.PZ0	=0;
			PQ_REG.onebit.PZ0=0;
		}
	}
	if(PQ_CUT.onebit.PZ0)
		if(PZ0_PQYC==0)
		{
			PQ_CUT.onebit.PZ0=0;
			PQ_REG.onebit.PZ0=1;
		}	
		else
			PZ0_PQYC--;	
}
void EXE_PZ1(void)
{

	if(PZ_COME.onebit.PZ1){
		if(PERCENT_FLAG.onebit.sign){
			PQ_CUT.onebit.PZ1=1;
			PZ1_PQYC=PQYC;
		}
		else
			PQ_REG.onebit.PZ1=1;
	}

	if(PZ_OVER.onebit.PZ1){
		if(PERCENT_FLAG.onebit.sign){
			PQ_REG.onebit.PZ1=0;
		}
		else {
			PQ_REG.onebit.PZ1=1;		
			PQ_LAST.onebit.PZ1=1;	
			PZ1_PQYC=PQYC;				
		}
	}	
	if(PQ_LAST.onebit.PZ1)				
	{			
		if(PZ1_PQYC!=0x00)				
			PZ1_PQYC=PZ1_PQYC-1;
		else
		{
			PQ_LAST.onebit.PZ1	=0;
			PQ_REG.onebit.PZ1=0;
		}
	}
	if(PQ_CUT.onebit.PZ1)
		if(PZ1_PQYC==0)
		{
			PQ_CUT.onebit.PZ1=0;
			PQ_REG.onebit.PZ1=1;
		}	
		else
			PZ1_PQYC--;	
}
void EXE_PZ2(void)
{

	if(PZ_COME.onebit.PZ2){
		if(PERCENT_FLAG.onebit.sign){
			PQ_CUT.onebit.PZ2=1;
			PZ2_PQYC=PQYC;
		}
		else
			PQ_REG.onebit.PZ2=1;
	}

	if(PZ_OVER.onebit.PZ2){
		if(PERCENT_FLAG.onebit.sign){
			PQ_REG.onebit.PZ2=0;
		}
		else {
			PQ_REG.onebit.PZ2=1;		
			PQ_LAST.onebit.PZ2=1;	
			PZ2_PQYC=PQYC;				
		}
	}	
	if(PQ_LAST.onebit.PZ2)				
	{			
		if(PZ2_PQYC!=0x00)				
			PZ2_PQYC=PZ2_PQYC-1;
		else
		{
			PQ_LAST.onebit.PZ2	=0;
			PQ_REG.onebit.PZ2=0;
		}
	}
	if(PQ_CUT.onebit.PZ2)
		if(PZ2_PQYC==0)
		{
			PQ_CUT.onebit.PZ2=0;
			PQ_REG.onebit.PZ2=1;
		}	
		else
			PZ2_PQYC--;	
}
void EXE_PZ3(void)
{

	if(PZ_COME.onebit.PZ3){
		if(PERCENT_FLAG.onebit.sign){
			PQ_CUT.onebit.PZ3=1;
			PZ3_PQYC=PQYC;
		}
		else
			PQ_REG.onebit.PZ3=1;
	}

	if(PZ_OVER.onebit.PZ3){
		if(PERCENT_FLAG.onebit.sign){
			PQ_REG.onebit.PZ3=0;
		}
		else {
			PQ_REG.onebit.PZ3=1;		
			PQ_LAST.onebit.PZ3=1;	
			PZ3_PQYC=PQYC;				
		}
	}	
	if(PQ_LAST.onebit.PZ3)				
	{			
		if(PZ3_PQYC!=0x00)				
			PZ3_PQYC=PZ3_PQYC-1;
		else
		{
			PQ_LAST.onebit.PZ3	=0;
			PQ_REG.onebit.PZ3=0;
		}
	}
	if(PQ_CUT.onebit.PZ3)
		if(PZ3_PQYC==0)
		{
			PQ_CUT.onebit.PZ3=0;
			PQ_REG.onebit.PZ3=1;
		}	
		else
			PZ3_PQYC--;	
}
void EXE_PZ4(void)
{
	if(PZ_COME.onebit.PZ4){
		if(PERCENT_FLAG.onebit.sign){
			PQ_CUT.onebit.PZ4=1;
			PZ4_PQYC=PQYC;
		}
		else
			PQ_REG.onebit.PZ4=1;
	}

	if(PZ_OVER.onebit.PZ4){
		if(PERCENT_FLAG.onebit.sign){
			PQ_REG.onebit.PZ4=0;
		}
		else {
			PQ_REG.onebit.PZ4=1;		
			PQ_LAST.onebit.PZ4=1;	
			PZ4_PQYC=PQYC;				
		}
	}	
	if(PQ_LAST.onebit.PZ4)				
	{			
		if(PZ4_PQYC!=0x00)				
			PZ4_PQYC=PZ4_PQYC-1;
		else
		{
			PQ_LAST.onebit.PZ4	=0;
			PQ_REG.onebit.PZ4=0;
		}
	}
	if(PQ_CUT.onebit.PZ4)
		if(PZ4_PQYC==0)
		{
			PQ_CUT.onebit.PZ4=0;
			PQ_REG.onebit.PZ4=1;
		}	
		else
			PZ4_PQYC--;	
}
void EXE_PZ5(void)
{

	if(PZ_COME.onebit.PZ5){
		if(PERCENT_FLAG.onebit.sign){
			PQ_CUT.onebit.PZ5=1;
			PZ5_PQYC=PQYC;
		}
		else
			PQ_REG.onebit.PZ5=1;
	}

	if(PZ_OVER.onebit.PZ5){
		if(PERCENT_FLAG.onebit.sign){
			PQ_REG.onebit.PZ5=0;
		}
		else {
			PQ_REG.onebit.PZ5=1;		
			PQ_LAST.onebit.PZ5=1;	
			PZ5_PQYC=PQYC;				
		}
	}	
	if(PQ_LAST.onebit.PZ5)				
	{			
		if(PZ5_PQYC!=0x00)				
			PZ5_PQYC=PZ5_PQYC-1;
		else
		{
			PQ_LAST.onebit.PZ5	=0;
			PQ_REG.onebit.PZ5=0;
		}
	}
	if(PQ_CUT.onebit.PZ5)
		if(PZ5_PQYC==0)
		{
			PQ_CUT.onebit.PZ5=0;
			PQ_REG.onebit.PZ5=1;
		}	
		else
			PZ5_PQYC--;	
}

//===========================喷气脉宽看门狗=======================================
void EXE_PQ_TIMER(void)
{
	if(PQ_REG.onebit.PZ0)
		if(PQ0_TIMER>=350)
			PQ_REG.onebit.PZ0=0;
		else
			PQ0_TIMER++;
	else
		PQ0_TIMER=0;

	if(PQ_REG.onebit.PZ1)
		if(PQ1_TIMER>=350)
			PQ_REG.onebit.PZ1=0;
		else
			PQ1_TIMER++;
	else
		PQ1_TIMER=0;

	if(PQ_REG.onebit.PZ2)
		if(PQ2_TIMER>=350)
			PQ_REG.onebit.PZ2=0;
		else
			PQ2_TIMER++;
	else
		PQ2_TIMER=0;

	if(PQ_REG.onebit.PZ3)
		if(PQ3_TIMER>=350)
			PQ_REG.onebit.PZ3=0;
		else
			PQ3_TIMER++;
	else
		PQ3_TIMER=0;

	if(PQ_REG.onebit.PZ4)
		if(PQ4_TIMER>=350)
			PQ_REG.onebit.PZ4=0;
		else
			PQ4_TIMER++;
	else
		PQ4_TIMER=0;

	if(PQ_REG.onebit.PZ5)
		if(PQ5_TIMER>=350)
			PQ_REG.onebit.PZ5=0;
		else
			PQ5_TIMER++;
	else
		PQ5_TIMER=0;
}
//=============================喷油脉宽累加=============================================
void ACC_PYMK()
{
	if(PZ_OLD.onebit.PZ0)
	{
		if(PZ0_PYMK<0xFD)
			PZ0_PYMK++;
	}
	if(PZ_OVER.onebit.PZ0){
		PYMK=PZ0_PYMK;
		PZ0_PYMK=0;
	}

	if(PZ_OLD.onebit.PZ1)
	{
		if(PZ1_PYMK<0xFD)
			PZ1_PYMK++;
	}
	if(PZ_OLD.onebit.PZ2)	
	{
		if(PZ2_PYMK<0xFD)
			PZ2_PYMK++;
	}
	if(PZ_OLD.onebit.PZ3)
	{
		if(PZ3_PYMK<0xFD)
			PZ3_PYMK++;
	}
	if(PZ_OLD.onebit.PZ4)
	{
		if(PZ4_PYMK<0xFD)
			PZ4_PYMK++;
	}
	if(PZ_OLD.onebit.PZ5)
	{
		if(PZ5_PYMK<0xFD)
			PZ5_PYMK++;
	}
}
//===========================喷油状态====================================================
void CAL_PY_STATUS(void)
{

}

#pragma code

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -