📄 testprog.c
字号:
ET0 = CLEAR;
U_DRV = SET; //因为火花,关闭进一步的脉冲
m_br_fs = TRUE;
}
}
// m_vol2_old_12 = m_vol2_new;
return;
}
if(m_br_fs) return; //假如封锁,立即退出采样
//m_pulse_count == 1 时,取其电压
if(m_get_gzfs == 1 && m_pulse_count > 3) return;
//如果不是工作方式一,继续
//============================================================== 故意前移
if(m_ms_count == 9 || m_ms_count == 19 )
{
m_cur2_new = channel(151); //channel(2); //电流取样
if(m_cur2_new < 0x7f0 )
{
if( m_get_gzfs != 1 ||(m_get_gzfs ==1 && m_pulse_count ==2))// 1或者2暂时定为2
{
m_cur2 = ((m_tem_cur2 + m_cur2_new/2 )*m_detel_k)>>5; // /32 <1>二次电流
}
}
if(m_cur2 >= 0x7ff) m_cur2 = 0;
if(m_cur2 >= m_get_cur2 || m_cur2 >= m_cur2_climit)
{
if(m_tc > 200) m_tc -= 30;
con_speed = 1;
}
m_cur2_09 = m_cur2_new;
//-------------------------------------------------------判断是否出现火花//130
if( m_cur2 > m_get_cur2/3 && m_tc_max <3800) goto this_part;//68度
if( m_cur2 > m_cur2_div4_3 && m_tc_max <4200 ) goto this_part;//75度
if( m_cur2 > m_cur2_limit)
{
this_part:
TR0 = CLEAR; //关闭定时器0,
ET0 = CLEAR;
U_DRV = SET; //因为火花,关闭进一步的脉冲
m_br_fs = TRUE;
}
if(m_ms_count == 9 )
m_vol2_9 = channel(167);//channel(4);
}
if(m_ms_count == 13 )
{
m_vol2_compu = (m_vol2_5 + m_vol2_6 +m_vol2_7 + m_vol2_8 + m_vol2_9 + m_vol2_10 + m_vol2_11 + m_vol2_12)>>3;
if( m_get_gzfs != 1 || m_get_gzfs != 4 ||(m_get_gzfs ==1 && m_pulse_count ==3)||(m_get_gzfs ==4 && m_pulse_count ==2))
{
//-----------------------------------------------------------
if( m_br_open )
{
if(m_vol2_compu > 550) m_vol2 = m_vol2_compu/16+2;//18 //+3
else m_vol2 = m_vol2_compu/17;//19
}
else if(m_vol2_compu < 2000)
{
if(m_vol2_compu > 1170 )
m_vol2 = (m_vol2_compu- 1170)/3 + 60 ; //(13) 49 - Kv 35kv-50kv小4
else if(m_vol2_compu > 1117 )
m_vol2 = (m_vol2_compu - 1117)/10 + 55 ; //(13) 49 - Kv 35kv-50kv小4
else if(m_vol2_compu > 1046 )
m_vol2 = (m_vol2_compu- 1046)/14 + 50 ; //(13) 49 - Kv 35kv-50kv小4
else if(m_vol2_compu > 600 )
m_vol2 = ((m_vol2_compu- 600)<<1)/45 + 30 ; //(13) 49 - Kv
else
m_vol2 = m_vol2_compu/20 ; //0 - 21 Kv
}
}
if( m_vol2 >= m_get_vol2 && m_dtj > 35 )//
{
if(m_tc > 200) m_tc -= 30;
con_speed = 1;
if( m_br_open) m_count_open++;
}
// if( m_tc < 1650 && m_br_fs == FALSE )
// {
// m_tc = 1650;
// }
WDTCON |= 0x20; // Set RWDT, other bits unaffected
WDTCON &= ~0x20; // Clear RWDT—watchdog reset
}
if(m_ms_count == 5) //||m_ms_count == 15 //5ms 中间部分
{
m_temp_vol1 = channel(199)>>4;//channel(1)>>4; //一次电压
m_temp_tempura = channel(135)/11;
m_vol2_5 = channel(167);
return;
}
if(m_ms_count == 6)
{
m_vol2_6 = channel(167);
if(m_dtj > m_get_dtj )
m_dtj = m_get_dtj;
m_cur2_new = channel(151);//channel(2); //电流取样
if(m_cur2_new < 0x7f0)
m_tem_cur2_6 = m_cur2_new/2;
}
if(m_ms_count == 16)
{
m_cur2_new = channel(151);//channel(2); //电流取样
if(m_cur2_new < 0x7f0)
m_tem_cur2_6 = m_cur2_new/2;
}
if(m_ms_count == 7)
{
m_vol2_7 = channel(167);
m_cur2_new = channel(151);//channel(2); //电流取样
if(m_cur2_new < 0x7f0)
m_tem_cur2_7 = m_cur2_new/2 + m_tem_cur2_6;;
}
if(m_ms_count == 17)
{
m_cur2_new = channel(151);//channel(2); //电流取样
if(m_cur2_new < 0x7f0)
m_tem_cur2_7 = m_cur2_new/2 + m_tem_cur2_6;
}
if(m_ms_count == 8 ||m_ms_count == 18) //8
{
m_cur2_new = channel(151);//channel(2); //电流取样
if(m_cur2_new < 0x7f0)
m_tem_cur2 = m_cur2_new/2 + m_tem_cur2_7;
//---------------------------------- 采集一次电流值
if(m_ms_count == 8)
{
m_vol2_8 = channel(167) ;
m_tem_cur1 = channel(215)/4; //channel(3);
if(m_tem_cur1 < 0x1ff)
{
m_cur1 = (m_tem_cur1 * m_cur1_given_div4)/75;//91
//--------//<2>一次电流采样
if(m_cur1 >= m_cur1_given) //<2>一次电流采样
{
m_tc -= 30; //当数据小于40的时候,不能减小40
con_speed = 1;
}
}
}
return;
}
}
void main(void)
{
unsigned char xdata i,z;
unsigned char xdata * ptr;
unsigned char xdata * bufptr;
U_DRV = SET;
U_STA = SET; //-----正逻辑
U_STO = SET;//CLEAR;
CS_AD0 = SET;
init_sys();
U_BJ = CLEAR; //铃响,提示开机
shortdelay(1000);
U_BJ = SET;
shortdelay(800);
U_BJ = CLEAR; //铃响,提示开机
shortdelay(1000);
U_BJ = SET;
EX0 = CLEAR;
PX0 = SET;
IE0 = CLEAR;
ET0 = CLEAR;
ET1 = CLEAR;
PX0 = SET;
EAI = CLEAR;
EA = SET;
m_br_u2 = CLEAR;
m_br_fs = CLEAR;
icbase0 = 0; //all kinds of flags
icbase1 = 0;
icbase2 = 0;
m_dtj = 0; //dao tong jiao is zero at first
m_br_jkyk = TRUE; //初始化为遥控状态
i = 0;
fnLCMInit();
fnLCMInit();
fnLCMInit();
init:
EA = SET;
cls();
clszf();
cls();
clszf();
cls();
clszf();
fnLCMInit();
cls();
clszf();
if(RI_0)
{
i = SBUF0;
RI_0 = 0;
}
ES = CLEAR; //首先必须关闭通信功能
DE_S = CLEAR;
m_r_in = 0; //本字节,用于记录串行数据的接收
while(1)
{
U_DRV = SET;
U_STA = SET; //-----正逻辑
U_STO = SET;//CLEAR;
//==============================================================
if(m_get_ykfs == 2)
m_br_dcs = TRUE;
else if(m_get_ykfs == 1)
m_br_dcs = FALSE;
P2DDRH = 0x5f; //attention please! change later!
P2DDRL = 0xf5; //
P2 = 0x7f; //P2.5 = 1
//===============================================================
if(scan_jp(0,0)) break;
printf_hz(2, 4,"YGK-03电除");
printf_hz(12, 4,"尘高压电源控制器");
if(scan_jp(0,0)) break;
printf_hz(7, 6,"正");
printf_hz(9, 6,"耀");
printf_hz(3, 6,"浙江");
printf_hz(11, 6,"环保科技");
printf_hz(19, 6,"有限公司");
printf_hz(9, 2," ");
if(scan_jp(0,0)) break;
shortdelay(1000);
shortdelay(2000);
if(scan_jp(0,0)) break;
shortdelay(4000);
if(scan_jp(0,0)) break;
shortdelay(4000);
if(scan_jp(0,0)) break;
printf_hz(9, 2,"欢");
shortdelay(4000);
if(scan_jp(0,0)) break;
shortdelay(4000);
if(scan_jp(0,0)) break;
printf_hz(12, 2,"迎");
shortdelay(4000);
if(scan_jp(0,0)) break;
shortdelay(4000);
if(scan_jp(0,0)) break;
printf_hz(3, 6," ");
printf_hz(8, 6,"TEL:0573-6511147");
printf_hz(15, 2,"使");
shortdelay(4000);
if(scan_jp(0,0)) break;
shortdelay(4000);
if(scan_jp(0,0)) break;
printf_hz(18, 2,"用");
shortdelay(4000);
if(scan_jp(0,0)) break;
if(scan_jp(0,0)) break;
shortdelay(4000);
if(scan_jp(0,0)) break;
shortdelay(2000);
if(scan_jp(0,0)) break;
shortdelay(2000);
ES = CLEAR;
EX0 = SET;
ET0 = CLEAR;
ET1 = CLEAR;
m_br_u2 = SET;
m_br_fs = SET;
TR0 = CLEAR;
U_DRV = SET;
shortdelay(4000);
if(m_temp_data < 150) m_temp = 100;
if(m_temp_data > 150 && m_temp_data < 250 ) m_temp = 200;
if(m_temp_data > 250 && m_temp_data < 350 ) m_temp = 300;
if(m_temp_data > 350 && m_temp_data < 450 ) m_temp = 400;
if(m_temp_data > 450 && m_temp_data < 550 ) m_temp = 500;
if(m_temp_data > 550 && m_temp_data < 650 ) m_temp = 600;
if(m_temp_data > 650 && m_temp_data < 750 ) m_temp = 700;
if(m_temp_data > 750 && m_temp_data < 850 ) m_temp = 800;
if(m_temp_data > 850 && m_temp_data < 950 ) m_temp = 900;
if(m_temp_data > 950 && m_temp_data <1050 ) m_temp = 1000;
if(m_temp_data >1050 && m_temp_data <1150 ) m_temp = 1100;
if(m_temp_data >1150 && m_temp_data <1250 ) m_temp = 1200;
if(m_temp_data >1250 && m_temp_data <1350 ) m_temp = 1300;
if(m_temp_data >1350 && m_temp_data <1450 ) m_temp = 1400;
if(m_temp_data >1450 && m_temp_data <1550 ) m_temp = 1500;
if(m_temp_data >1550 && m_temp_data <1650 ) m_temp = 1600;
if(m_temp_data >1650 && m_temp_data <1750 ) m_temp = 1700;
if(m_temp_data >1750 && m_temp_data <1850 ) m_temp = 1800;
if(m_temp_data >1850 && m_temp_data <1950 ) m_temp = 1900;
if(m_temp_data >1950 ) m_temp = 2000;
EX0 = CLEAR;
m_br_u2 = CLEAR;
m_br_fs = CLEAR;
ET0 = CLEAR;
ET1 = CLEAR;
if(m_temp != m_get_cur2)
{
display_zf(22,4,3, m_temp,0);
display_zf(22,5,3, m_get_cur2,0);
cls();
clszf();
printf_hz(4, 2,"二次电流设置错误");
while(1){};
}
if( m_set_o36 > 40 || m_set_o72 > 40 || m_set_o109 > 40 )
{
cls();
clszf();
printf_hz(4, 2,"灵敏度设置错误");
while(1){};
}
// ES = SET;
goto begin_s;
};
while(1)
{
if(jp_code == 0x09 || jp_code == 0x0b ) goto later_use;
goto init;
later_use:
cls();
U_DRV = SET; //shut down the pwm pulse
if(jp_code == 0x09) //参数设置键
{
config:
cls();
clszf();
printf_hz(1, 0,"设置:");
printf_hz(6, 2,"1: 参 设置");
printf_hz(11, 2,"数");
printf_hz(6, 3,"2: 工作方式选择");
printf_hz(6, 4,"3: 二次电流设置 "); //22,6
printf_hz(6, 5,"4: 远控方式"); //22,6
printf_hz(6, 6,"5: 灵敏度设置");
printf_hz(6, 7,"6: 波特率设置");
cur_pos(8,1);
while(1) //
{
scan_jp(8,0);
if(jp_code == 0x31) break;
if(jp_code == 0x32) break;
if(jp_code == 0x33) break;
if(jp_code == 0x34) break;
if(jp_code == 0x35) break;
if(jp_code == 0x36) break;
if(jp_code == 0x08 || jp_code == 0x0D) goto init;
}
if(jp_code == 0x35)
{
cls();
printf_hz(0, 1,"灵敏度设置(1-30)"); //22,6
printf_hz(2, 3,"( 0 - 72) 1: ( 5-13)");
printf_hz(2, 4,"( 72 - 109) 2: ( 8-17)");
printf_hz(2, 5,"(109 - 160) 3: (10-19)");
display_zf(16,3,2,m_set_o36, 1);
display_zf(16,4,2,m_set_o72, 1);
display_zf(16,5,2,m_set_o109,1);
lmdsz:
fnPR12(LC_DIS_SW | 0x0f); // 显示开关设置
cur_pos(18,1);
while(1)
{
scan_jp(18,0);
if(jp_code>0x30 && jp_code <0x34) break;
if(jp_code == 0x08) break;
if(jp_code == 0x0d) break;
write_zf(18,0,0x20);
}
write_zf(18,0,0x20);
if(jp_code == 0x31)
{
cur_pos(16,7);
printf_hz(16,3," ");
serinput(16,3,tem_buf);
if(tem_buf[1] <0x30)
m_get_o36 = (tem_buf[0]-0x30);
else
m_get_o36 = (tem_buf[0]-0x30)*10+(tem_buf[1]-0x30); //get the input vol2 value
if(m_get_o36 !=0)
{
rmw(m_get_o36,0,0x48d,1);
}
}
else if(jp_code == 0x32)
{
cur_pos(16,9);
printf_hz(16,4," ");
serinput(16,4,tem_buf);
if(tem_buf[1] <0x30)
m_get_o72 = (tem_buf[0]-0x30);
else
m_get_o72 = (tem_buf[0]-0x30)*10+(tem_buf[1]-0x30); //get the input vol2 value
if(m_get_o72!=0)
{
//write down the modification
rmw(m_get_o72,0,0x48e,1);
}
}
else if(jp_code == 0x33)
{
cur_pos(16,11);
printf_hz(16,5," ");
serinput(16,5,tem_buf);
if(tem_buf[1] <0x30)
m_get_o109 = (tem_buf[0]-0x30);
else
m_get_o109 = (tem_buf[0]-0x30)*10+(tem_buf[1]-0x30); //get the input vol2 value
if(m_get_o109!=0)
{
//write down the modification
rmw(m_get_o109,0,0x48f,1);
}
}
else if(jp_code == 0x08||jp_code == 0x0d)
{
m_get_o36 = m_set_o36 * 20;
m_get_o72 = m_set_o72 * 20;
m_get_o109 = m_set_o109 * 20;
fnPR12(LC_DIS_SW | 0x0c); // 显示开关设置
goto config;
}
goto lmdsz;
}
if(jp_code == 0x36)
{
cls();
printf_hz(0,0,"波特率设置:");
printf_hz(10,1,"1: 2400");
printf_hz(10,2,"2: 4800");
printf_hz(10,3,"3: 9600");
printf_hz(10,4,"4: 19200");
printf_hz(10,5,"5: 38400");
printf_hz(10,6,"6: 57600");
printf_hz(4, 7,"当前波特率:");
m_get_btl = m_set_btl;
if(m_get_btl == 65224 )
printf_hz(16,7, "2400");
else if(m_get_btl == 65378 )
printf_hz(16,7, "4800");
else if(m_get_btl == 65458 )
printf_hz(16,7, "9600");
else if(m_get_btl == 65497 )
printf_hz(16,7, "19200");
else if(m_get_btl == 65517 )
printf_hz(16,7, "38400");
else if(m_get_btl == 65523 )
printf_hz(16,7, "57600");
cur_pos(13,3);
while(1)
{
scan_jp(13,0);
if(jp_code > 0x30&&jp_code<0x37) break;
if(jp_code == 0x08) goto config;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -