📄 test.c
字号:
if(!PQ_OVFL.onebit.PZ3)
if(PQ_REG.onebit.PZ3)
if(PQ3_TIMER<0xFF)
PQ3_TIMER++;
else
PQ_OVFL.onebit.PZ3=1;
else
{
PQ3_TIMER=0;
PQ_OVFL.onebit.PZ3=0;
}
if(!PQ_OVFL.onebit.PZ4)
if(PQ_REG.onebit.PZ4)
if(PQ4_TIMER<0xFF)
PQ4_TIMER++;
else
PQ_OVFL.onebit.PZ4=1;
else
{
PQ4_TIMER=0;
PQ_OVFL.onebit.PZ4=0;
}
if(!PQ_OVFL.onebit.PZ5)
if(PQ_REG.onebit.PZ5)
if(PQ5_TIMER<0xFF)
PQ5_TIMER++;
else
PQ_OVFL.onebit.PZ5=1;
else
{
PQ5_TIMER=0;
PQ_OVFL.onebit.PZ5=0;
}
//=============================================================
// PORTD=PORTD & 0xc1;
//=============================================================
PZ_COME.AllBits=0;
PZ_OVER.AllBits=0;
//========================================================================
TMR0A--;
// INTCONbits.TMR0IF=0;
/*
*/
if(TMR0A==0)
{ static unsigned char temp;
//20MS
if(fire_cnt>=119)
fire_cnt=0;
else
fire_cnt=fire_cnt+1;
if(fire_cnt<=3){
PORTDbits.RD1=0;
}
else{
if(fire_cnt & 0x01)
PORTDbits.RD1=0x00;
else
PORTDbits.RD1=0x01;
}
if(fire_cnt==118)
PORTDbits.RD0=0;
else
PORTDbits.RD0=1 ;
TMR0A=5;//0xC8;
//=====================FILTER_SW()===============================;
temp=(SW_OLD.AllBits ^ PORTB) & 0x02;
if(temp)
{
if(SW_FILTER==0x00){
SW_OLD.AllBits=~SW_OLD.AllBits;
SW_FILTER=0x05;
}
else
SW_FILTER--;
}
else
{
SW_FILTER=0x05;
}
//=====================SET_LED_BIT()================================;
if(TIMER_IF.onebit.LED_IF)
{
// TIMER_IF.onebit.LED_IF=0x00;
if(QLXS_VALUE & 0x80)
LED_WIDTH=0x32;
else
LED_WIDTH=0xA0;
REC_FLAG.onebit.LED_EN=1;
QL_BIT_CNT--;
if(QL_BIT_CNT==0x00)
TIMER_IF.onebit.LED_IF=0x00;
QLXS_VALUE=QLXS_VALUE<<0x01;
}
//====================速度滤波器,滤波0.5秒========================
if(SPEED_LEVEL==TEMP_SPEED_LEVEL)
SPEED_LEVEL_FILTER=0;
else
SPEED_LEVEL_FILTER++;
if(SPEED_LEVEL_FILTER>=25)SPEED_LEVEL=TEMP_SPEED_LEVEL;
//====================================================================
TMR0B--;
if(TMR0B==0)
{ //200MS
TMR0B=0x0A;
TIMER_IF.onebit.SAMPLE_IF=0x01;
TIMER_IF.onebit.STATUS_SEND_IF=0x01;
TIMER_IF.onebit.SPEED_OK_IF=0x01;
TIMER_IF.onebit.LED_IF=0x01;
TIMER_IF.onebit.FLASH_IF=0x01;
QL_BIT_CNT=0x08;
QLXS_VALUE=LED_TEMP;
TMR0C--;
if(TMR0C==0)
{
TMR0C=0x05;
if(!MONITOR_FLAG.onebit.POWER_ON_OK)
{
if(POWER_ON_TIMER--==0x00)
MONITOR_FLAG.onebit.POWER_ON_OK=0x01;
}
if(PULSE_DOG_CNT==0x00)
MONITOR_FLAG.onebit.PULSE_EXIST=0x00;
else
PULSE_DOG_CNT--;
}
}
}
}
// return;
}
void main(void)
{
INI_PORT();
INI_DATA();
INI_TIMER0();
INI_UART();
INTCONbits.GIEL = 1;
INTCONbits.GIEH = 1;
UART_SEND(0xAA);
UART_SEND(0x55);
while(1)
{
ClrWdt();
AD_SAMPLE();
ClrWdt();
SEND_STATUS();
ClrWdt();
PROCESS_UART();
ClrWdt();
LED_DISPLAY();
ClrWdt();
TURN_TO_GAS();
ClrWdt();
// SAVE_PYMK();
}
}
void ACC_PYMK_ZKYL(void)
{
}
void SAVE_PYMK(void){
if(REC_FLAG.onebit.REC_BUSY)
{
unsigned char temp_zkyl_level,temp_jymk,diff;
unsigned long JymkAddr;
ZKYL_ACC=ZKYL_ACC/0x10;
if(ZKYL_ACC>0xFD)
ZKYL_ACC=0xFD;
PYMK_ACC=(PYMK_ACC/0x10);
temp_zkyl_level=ZKYL_LEVEL_TABLE[ZKYL];
if(ZKYL_LEVEL>0x18)
ZKYL_LEVEL=0x18;
JymkAddr=SPEED_LEVEL;
JymkAddr=JymkAddr * 0x20 + temp_zkyl_level +0x02+0x2800;
temp_jymk=CODE_READ(JymkAddr);
if(PYMK_ACC>0xFD)
PYMK_ACC=0xFD;
if(PYMK_ACC>JYMK)
diff=PYMK_ACC-JYMK;
else
diff=JYMK-PYMK_ACC;
if(diff>0x10){
CODEwritePage(JymkAddr,PYMK_ACC);
SEND_DATA(temp_zkyl_level);
UART_SEND(0x8E);
UART_SEND((PYMK_ACC & 0x0F)|0x30);
UART_SEND(((PYMK_ACC>>4) & 0x0F)|0x40);
UART_SEND(0x93);
}
REC_EN_CNT=0;
PYMK_ACC=0;
ZKYL_ACC=0;
REC_FLAG.onebit.REC_BUSY=0x00;
}
}
void LED_DISPLAY(void)
{
if(QLSR>=LEDV5)
LED_VALUE.AllBits=(LED_VALUE.AllBits & 0xC0) | 0x1F;
else if(QLSR>=LEDV4)
LED_VALUE.AllBits=(LED_VALUE.AllBits & 0xC0) |0x0F;
else if(QLSR>=LEDV3)
LED_VALUE.AllBits=(LED_VALUE.AllBits & 0xC0) |0x07;
else if(QLSR>=LEDV2)
LED_VALUE.AllBits=(LED_VALUE.AllBits & 0xC0) |0x03;
else
LED_VALUE.AllBits=(LED_VALUE.AllBits & 0xC0) |0x01;
if(SW_OLD.onebit.SW_SIG)
{
if( MONITOR_FLAG.onebit.POWER_ON_OK
&& MONITOR_FLAG.onebit.PULSE_EXIST
&& GAS_FLAG.onebit.SPEED_OK
)
{
LED_VALUE.onebit.GAS_LED=0x01;
LED_VALUE.onebit.PETROL_LED=0x00;
}
else
{
LED_VALUE.onebit.PETROL_LED=0x01;
if(TIMER_IF.onebit.FLASH_IF==0x1)
{
TIMER_IF.onebit.FLASH_IF=0x00;
LED_VALUE.onebit.GAS_LED=~LED_VALUE.onebit.GAS_LED;
}
}
}
else
{
LED_VALUE.onebit.GAS_LED=0x00;
LED_VALUE.onebit.PETROL_LED=0x01;
}
LED_TEMP=LED_VALUE.AllBits;
}
void LED_BIT_OUT(void)
{
if(REC_FLAG.onebit.LED_EN)
{
// PORTBbits.QLXS=0x00;
LED_WIDTH--;
if(LED_WIDTH==0x00)
{
REC_FLAG.onebit.LED_EN=0x00;
//PORTBbits.QLXS=0x01;
}
}
else
//PORTBbits.QLXS=0x01;
Nop();
}
void SET_LED_BIT(void)
{
if(TIMER_IF.onebit.LED_IF)
{
// TIMER_IF.onebit.LED_IF=0x00;
if(QLXS_VALUE & 0x80)
LED_WIDTH=0x32;
else
LED_WIDTH=0xA0;
REC_FLAG.onebit.LED_EN=1;
QL_BIT_CNT--;
if(QL_BIT_CNT==0x00)
TIMER_IF.onebit.LED_IF=0x00;
QLXS_VALUE=QLXS_VALUE<<0x01;
}
}
void FILTER_SW(void)
{
unsigned char temp;
temp=(SW_OLD.AllBits ^ PORTB) & 0x02;
if(temp)
{
if(SW_FILTER==0x00){
SW_OLD.AllBits=~SW_OLD.AllBits;
SW_FILTER=0x05;
}
else
SW_FILTER--;
}
else
{
SW_FILTER=0x05;
}
}
void TURN_TO_GAS(void)
{
if( MONITOR_FLAG.onebit.POWER_ON_OK
&& MONITOR_FLAG.onebit.PULSE_EXIST
&& SW_OLD.onebit.SW_SIG
&&(QLSR>=LEDV1)
)
{
if(WATER_TEMP>GAS_ON_TEMP)
GAS_FLAG.onebit.TEMP_OK=0x01;
}
else
GAS_FLAG.onebit.TEMP_OK=0x00;
if(WATER_TEMP<GAS_OFF_TEMP)
{
GAS_FLAG.onebit.TEMP_OK=0x00;
}
if(GAS_FLAG.onebit.TEMP_OK)
{
if(!GAS_FLAG.onebit.SPEED_OK)
{
if(PERIOD_ADDR<TURN_SPEED)
{
if(TIMER_IF.onebit.SPEED_OK_IF)
{
TIMER_IF.onebit.SPEED_OK_IF=0x00;
SPEED_OK_FILTER--;
if(SPEED_OK_FILTER==0x00){
GAS_FLAG.onebit.SPEED_OK=0x01;
}
}
}
else
{
GAS_FLAG.onebit.SPEED_OK=0x00;
SPEED_OK_FILTER=0x03;
}
}
else
{
SPEED_OK_FILTER=0x03;
}
}
else
{
SPEED_OK_FILTER=0x03;
GAS_FLAG.onebit.SPEED_OK=0x00;
}
/*
if(GAS_FLAG.onebit.SPEED_OK)
PORTD=PORTD | 0xC0;
else
PORTD=0x00;*/
}
void PROCESS_UART(void)
{
if(!REC_FLAG.onebit.PROG_BUSY)
{
if((UART_DATA[9]==0x91)&&REC_FLAG.onebit.RD_EN)
{
unsigned long int addr,temp;
unsigned char data;
UART_DATA[9]=0x00;
temp=UART_DATA[0] & 0x0f;
addr=temp;
temp=UART_DATA[1] & 0x0f;
addr=addr | (temp<<4);
temp=UART_DATA[2] & 0x0f;
addr=addr | (temp<<8);
addr=addr+0x2000;
data=CODE_READ(addr);
UART_SEND((data & 0x0f)| 0x30);
UART_SEND(((data>>4) & 0x0f)| 0x40);
UART_SEND(0x91);
}
if((UART_DATA[9]==0x92)&& REC_FLAG.onebit.WR_EN)
{
unsigned long int addr,temp;
unsigned char data;
UART_DATA[9]=0x00;
temp=UART_DATA[0] & 0x0f;
addr=temp;
temp=UART_DATA[1] & 0x0f;
addr=addr | (temp<<4);
temp=UART_DATA[2] & 0x0f;
addr=addr | (temp<<8);
addr=addr+0x2000;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -