📄 main.c
字号:
//驻波表 UV段
#include "msp430x13x.h"
#include "hz.c"
#include "show.c"
unsigned int l,r,curr,pre,swr,power_z,power_f; //驻波比,功率
unsigned char fun_sel; //功能选择:1->测频 0->测驻波
const unsigned char power_preset[]={8 ,13,16,18,20,22,24,25,27,28,30};
const unsigned char power_bl[]= {13,14,17,20,20,23,24,27,29,32,35}; // *10
unsigned char getpowerbl(unsigned int l)
{
char i,lr;
lr=l/10;
if(lr<=power_preset[0])
{
return (power_bl[0]);
}
for(i=1;i<=9;i++)
{
if(lr<power_preset[i])
{
return(power_bl[i]);
}
}
return(power_bl[10]); // >=5.0
}
void delay(unsigned int t) /* 延时 */
{
unsigned int i;
unsigned char j;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
//interrupt[WDT_VECTOR] void watchdog_timer (void)
{
unsigned char bl;
if(l<10) //正向功率不足,退出
{
swr=0;
power_z=0;
power_f=0;
return;
}
curr=(int)(r*50/l);
if((curr==pre))
{
bl=getpowerbl(l);
// bl=10;
power_z=l*bl/100;
bl=getpowerbl(r/2);
// bl=10;
power_f=r*bl/200;
if(power_z<=power_f) power_f=power_z-1;
swr=(power_z+power_f)*100/(power_z-power_f);
}
else
{
pre=curr;
}
l=0;
r=0;
}
#pragma vector=PORT1_VECTOR
__interrupt void p1_in (void)
//interrupt[PORT1_VECTOR] void p1_in (void)
{
if(P1IFG&BIT7) //功能选择0->测驻波 1->测频
{
if(fun_sel==0) //由测驻波改为测频,开1.4中断,关1.2,1.3中断,关 WDT 中断
{
fun_sel=1;
P1IE|=BIT4;
P1IE&=~BIT2;
P1IE&=~BIT3;
IE1&=~WDTIE; // Enable WDT interrupt
}
else
{
fun_sel=0;
show_face0();
P1IE&=~BIT4;
P1IE|=BIT2;
P1IE|=BIT3;
IE1|=WDTIE; // Enable WDT interrupt
}
delay(5000);
P1IFG &=~BIT7;
}
if(P1IFG&BIT2) // L in 正向
{
l++;
P1IFG &=~BIT2;
}
if(P1IFG&BIT3) // R in 反向
{
r++;
P1IFG &=~BIT3;
}
if(P1IFG&BIT4) //测频,2Hz信号入
{
if(fun_sel==1)
{
unsigned long vol,pl,pl1,pl2,p3;
unsigned char p1;
delay(1);
P1IFG &=~BIT4;
vol=(long)TAR;
p1=P1IN;
if((p1&=BIT0)!=0X00) vol--;
TAR=0;
p3=P3IN;
pl=(vol*256+p3)*4*256/1000; //*4*256/100
// pl=(vol*256+p3)*1024/100;
pl1=pl/10000;
pl2=pl%10000;
show_vol3(pl1,pl2);
P1OUT|=BIT5;
delay(3);
P1OUT&=~BIT5;
}
P1IFG &=~BIT4;
}
}
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR = 0x62; // 0110,0010
P1SEL|=BIT0;
P1IES=0XFF; //下降沿有效
P1OUT&=~BIT5;
P2DIR = 0xff;
P3DIR = 0x00;
P4DIR = 0xff;
P5DIR = 0xff;
P6DIR = 0xff;
TACTL = TACLR+MC0; // clear TARS,tart Timer_A in continuous mode
CCR0=65535;
init_lcd();
clear_lcd();
show_cm();
delay(20000);
l=0;
r=0;
WDTCTL = WDT_ADLY_1000;
P1IE|=BIT7;
fun_sel=0;
show_face0();
P1IE&=~BIT4;
P1IE|=BIT2;
P1IE|=BIT3;
IE1|=WDTIE; // Enable WDT interrupt
P1IFG=0X00;
_EINT();
while(1)
{
if(fun_sel==0)
{
show_vol0(swr);
show_vol21(power_z);
show_vol22(power_f);
}
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -