📄 main_new_5_test.c
字号:
// }
}
if(func ==1)
{
OUT1 =1;
while(--i);
OUT1 = 0;
}
else if(func ==2)
{
OUT2 =1;
while(--i);
OUT2 = 0;
}
}
if((COUNT[type] <=high)&&(COUNT[type] >high/2)) //脉冲后半段
{
if(COUNT[type]%temp == 0)
{
//if(intense<10)
// i = intense;
//else
// {
// i=(intense -(intense/5)*(COUNT[type]/temp));
// }
}
if(func ==1)
{
OUT1 =1;
while(--i);
OUT1 = 0;
}
else if(func ==2)
{
OUT2 =1;
while(--i);
OUT2 = 0;
}
}
if((COUNT[type] <=t)&&(COUNT[type] >high)) // 低电平
{
if(func ==1)
OUT1 = 0;
else if(func ==2)
OUT2 = 0;
}
}
*/
/***************************************************************************************
定时器1中断处理
作用:每20ms发生一次中断,在中断中输出各种波形
****************************************************************************************/
void Timer1Interrupt() interrupt 3
{
unchar i,j,k;
// unint k;
EA = 0;
ET1 = 0;
TH1 = (65536-20000)/256; //20ms中断一次(38hz)
TL1 = (65536-20000)%256;
//COUNT1 ++;
if((DISP_INTENSE_1 != 0)&&SET_MINUTE)
{
//强度调整
INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
switch(WAVE_TYPE_1) //第一路输出
{
//**********************************************************************************************************
// 波形1_1
// 间隔脉冲,间隔一秒,然后是2s的脉冲,脉冲的频率是38hz,脉冲宽度可调
//**********************************************************************************************************
case 1:
//强度调整
//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
COUNT1++;
COUNT1= COUNT1%150;
i =INTENSE_1;
if(COUNT1 <100) //2s的脉冲
{
OUT1 =1;
while(--i); //宽度可调的高电平
OUT1 =0;
}
if((COUNT1 >=100)&&(COUNT1 <=150)) //1s 的低电平
{
OUT1 = 0;
}
break;
//**********************************************************************************************************
// 波形1_2
//间隔脉冲,间隔40ms,输出20ms的脉冲,最大脉冲频率是3.6khz,脉冲频率可调
//**********************************************************************************************************
case 2:
//强度调整
//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
COUNT2++;
COUNT2 = COUNT2 %5;
//TH1 = (65536-12000)/256; //26ms中断一次(38hz)
//TL1 = (65536-12000)%256;
if(COUNT2 != 0) //12ms低电平
{
FLAG2 = 0;
}
if(COUNT2 == 0) //24ms脉冲
{
FLAG2 = 1;
}
if(FLAG2 ==0)
OUT1 = 0;
if(FLAG2 ==1)
{
i = INTENSE_1;
OUT1 =1;
while(--i);
OUT1 =0;
}
break ;
//**********************************************************************************************************
// 波形1_3
//间隔脉冲,间隔2s,输出3秒的脉冲,在3秒内,输出脉冲的频率为38hz,在一个输出脉冲周期内,
//脉冲的宽度先逐渐增加到最宽,然后减小到最小
//**********************************************************************************************************
/*
COUNT3++;
COUNT3=COUNT3%250; //5秒为一周期
//i =INTENSE_1;
//TH1 = (65536-25000)/256; //25ms中断一次(38hz)
//TL1 = (65536-25000)%256;
if(COUNT3 < 75) //前1.5s,波形渐宽:分为5段,每段250ms
{
if(COUNT3%15 == 0)
{
if(INTENSE_1<5)
INTENSE_1 = 5;
else
{
i = (INTENSE_1/5)*(COUNT3/15)*2;
}
}
OUT1 =1;
while(--i);
OUT1 = 0;
}
if((COUNT3 < 150)&&(COUNT3 >75)) //后1.5s,波形渐窄:分为5段,每段250ms
{
if(COUNT3%15 == 0)
{
if(INTENSE_1<5)
INTENSE_1 = 5;
else
i=(INTENSE_1 - (INTENSE_1/5)*(COUNT3/15))*2;
}
OUT1 =1;
while(--i); //宽度可调的高电平
OUT1 = 0;
}
if((COUNT3 < 250)&&(COUNT3 >150)) // 后2s低电平
{
OUT1 = 0;
}
break;
*/
case 3:
//强度调整
//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
COUNT1_3++;
COUNT1_3 %=200;
if(COUNT1_3 == 25)
{
GATE1 = !GATE1;
if(GATE1 == 1)
GATE2 = 0;
else
GATE2 = 1;
}
//INTENSE_2 = INTENSE_2 +3;
//i=20;
if(COUNT1_3<100)
{
//if(COUNT2_5%2) //脉冲前半段
// {
if(INTENSE_1==1)
j = 1;
//else
else
// j = 0;
// TEMP2_5=j++;
j =( COUNT1_3 %INTENSE_1) + 4;
// else
// j = COUNT2_5-INTENSE_2 ;
//if(intense<10)
// i = intense;
// else
// {
// i = (intense/5)*(COUNT[type]/temp);
// }
OUT1 =1;
while(--j);
OUT1= 0;
// }
}
if((COUNT1_3>150)&&(COUNT1_3<199)) // 低电平
{
OUT1 = 0;
}
break;
//**********************************************************************************************************
// 波形1_4
//间隔脉冲,整个波形周期9s,前8s是间隔1s的,强度增加,脉宽增加
//**********************************************************************************************************
case 4:
//TH1 = (65536-40000)/256; //40ms中断一次
//TL1 = (65536-40000)%256;
//强度调整
//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
COUNT4 ++;
COUNT4= COUNT4 % 450;
i = INTENSE_1;
if(COUNT4 <400)
{
if(COUNT4 % 50 ==0) //1S为一段
FLAG4 = !FLAG4;
if(FLAG4 ==1 )
OUT1 = 0;
else if(FLAG4 ==0)
{
OUT1 =1;
while(--i); //宽度可调的高电平
OUT1 = 0;
}
}
if((COUNT4 >=400)&&(COUNT4 <450))
OUT1 = 0;
break;
//**********************************************************************************************************
// 波形1_5
//间隔脉冲,间隔20ms,输出20ms的脉冲,最大脉冲频率是3.6khz,脉冲频率可调
//**********************************************************************************************************
case 5:
//TH1 = (65536-12000)/256; //12ms中断一次
// TL1 = (65536-12000)%256;
//FLAG5 = !FLAG5;
//强度调整
// INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
COUNT1_5 ++;
//if( COUNT2_9 % (12 - INTENSE_2/10)==0)
if( COUNT1_5 % 8==0)
{
for(i=0;i<INTENSE_1/3+1;i++)
{
k = INTENSE_1;
OUT1 =1;
while(--k);
OUT1 = 0;
k = INTENSE_1*2;
while(--k);
k = INTENSE_1*2;
while(--k);
k = INTENSE_1*2;
while(--k);
k = INTENSE_1*2;
while(--k);
}
}
break;
//**********************************************************************************************************
// 波形1_6
//类似波形3,但是脉冲是连续输出,脉冲的宽度先逐渐增加到最宽,然后减小到最小。
//**********************************************************************************************************
case 6:
//强度调整
// INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
COUNT3++;
i = COUNT3;
//i =INTENSE_1;
//TH1 = (65536-50000)/256; //50ms中断一次(38hz)
// TL1 = (65536-50000)%256;
if((i<=INTENSE_1)&&(i!=0))
{
OUT1 =1;
while(--i);
OUT1 = 0;
}
else
{
i = (INTENSE_1 - i%(INTENSE_1))+1;
OUT1 =1;
while(--i); //宽度可调的高电平
OUT1 = 0;
}
break;
}
}
//第二路输出
if((DISP_INTENSE_2 != 0)&&SET_MINUTE)
{
//强度调整
INTENSE_2 =(DISP_INTENSE_2*3)/4+1;
switch(WAVE_TYPE_2) //
{
//**********************************************************************************************************
// 波形2_1
// T=5s。前4秒为连续脉冲,脉冲频率为38HZ,
//脉冲的宽度随强度的增加而增加,最后1秒为低电平。脉冲宽度与强度之间的关系如下表格:
//**********************************************************************************************************
case 1:
// GATE1 = 1;
// GATE2 = 1;
wave2_1();
break;
//**********************************************************************************************************
// 波形2_9
// T=5s。前4秒为连续脉冲,脉冲频率为38HZ,
//脉冲的宽度随强度的增加而增加,最后1秒为低电平。脉冲宽度与强度之间的关系如下表格:
//**********************************************************************************************************
case 9:
//强度调整
//INTENSE_2 =(DISP_INTENSE_2*3)/4+1;
i = INTENSE_2+3;
COUNT2_4++;
COUNT2_4 = COUNT2_4%100;
if(COUNT2_4 <50)
{
GATE1 = !GATE1;
if(GATE1 == 1)
{
GATE2 = 0;
}
else
{
GATE2 = 1;
}
OUT2 =1;
while(--i);
OUT2 = 0;
}
if((COUNT2_4>=50)&&(COUNT2_4 <100))
{
OUT2=0;
}
break;
//**********************************************************************************************************
// 波形2_7
// T=5s。前4秒为连续脉冲,脉冲频率为38HZ,
//脉冲的宽度随强度的增加而增加,最后1秒为低电平。脉冲宽度与强度之间的关系如下表格:
//**********************************************************************************************************
case 7:
// GATE1 = 1;
// GATE2 = 0;
wave2_1();
break;
//**********************************************************************************************************
// 波形2_4
// 连续脉冲,脉冲频率38HZ,脉冲宽度随强度增加而增加。
//**********************************************************************************************************
case 4:
//强度调整
// INTENSE_2 =(DISP_INTENSE_2*3)/4+1;
i = INTENSE_2+3;
COUNT2_4++;
COUNT2_4 = COUNT2_4%100;
if(COUNT2_4 <50)
{
GATE1 = !GATE1;
if(GATE1 == 1)
{
GATE2 = 0;
}
else
{
GATE2 = 1;
}
OUT2 =1;
while(--i);
OUT2 = 0;
}
if((COUNT2_4>=50)&&(COUNT2_4 <100))
{
OUT2=0;
}
break;
//**********************************************************************************************************
// 波形2_5
// T=6s。 前4秒,脉冲宽度先增加然后再逐渐减小,
//后两妙为低电平。脉冲频率为60HZ。
//**********************************************************************************************************
case 5: //放在循环中外执行
//强度调整
//INTENSE_2 =(DISP_INTENSE_2*3)/4+1;
COUNT2_5++;
COUNT2_5 %=200;
// if(INTENSE_2<4)
// INTENSE_2 = INTENSE_2 +3;
//i=20;
if(COUNT2_5<100)
{
//if(COUNT2_5%2) //脉冲前半段
// {
if(INTENSE_2==1)
j = 1;
//else
else
// j = 0;
// TEMP2_5=j++;
j =( COUNT2_5 %INTENSE_2) + 4;
// else
// j = COUNT2_5-INTENSE_2 ;
//if(intense<10)
// i = intense;
// else
// {
// i = (intense/5)*(COUNT[type]/temp);
// }
OUT2 =1;
while(--j);
OUT2 = 0;
// }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -