📄 pwmtest.c
字号:
#include<msp430x16x.h>
#include"pwm_timer_b.h"
#include"setclock.h"
#include"7290.h"
#include"lcd.h"
//使用MCLOCK时钟8MHz产生可调频率和站空比的方波,
//频率:8M/f
//占空比:c/f
void pwm();
unsigned char which=0; //判断模式
unsigned char go;//判断结束
unsigned int f=20000;
unsigned int c=10000;
char temp1=0;
char temp2=0;
unsigned long display_frq;
unsigned char ReadBuf[3];
unsigned char display1[]="";
unsigned char display2[]="";
unsigned char display_f[]="";
unsigned char display_scal[]="";
unsigned char display_Hz[]="";
unsigned char display_KHz[]="";
int main() {
which=1;
pwm();
return 1;
}
void pwm(){
WDTCTL=WDTPW+WDTHOLD;
open_XT2(); //7290需要MCLK
BCSCTL2 =SELM_2+SELS;
_EINT ( );
ini_7290();
TimerBInit();
LCD_LcmInit();
LCD_LcmClearTXT();
LCD_PutStr(0,0,display1);
LCD_PutStr(1,0,display2);
while(0==GoPwm(100,c,f));
LCD_PutNum(0,3,8000/f);
LCD_PutStr(0,6,display_KHz);
LCD_PutNum(0,4,c*100/f);
LCD_PutStr(0,6,display_scal);
go=1;
while(go) {
//LPM3; //若PWM用ACLK,可进入低功耗
//LMP0; //若PWM用SMCLK,可进入低功耗
if(temp1!=temp2) { //只有进入中断函数重新设置c,f后才更新输出,否则由于不断更新会使波形混乱
if(f>100) {
LCD_LcmClearTXT();
LCD_PutStr(0,0,display1);
LCD_PutStr(1,0,display2);
display_frq=8000000/f;
LCD_PutNum(0,3,display_frq);
LCD_PutStr(0,6,display_Hz);
LCD_PutNum(0,4,(unsigned int)c*100/f);
LCD_PutStr(0,6,display_scal);
}
else {
LCD_LcmClearTXT();
LCD_PutStr(0,0,display1);
LCD_PutStr(1,0,display2);
display_frq=8000/f;
LCD_PutNum(0,3,display_frq);
LCD_PutStr(0,6,display_KHz);
LCD_PutNum(0,4,(unsigned int)c*100/f);
LCD_PutStr(0,6,display_scal);
}
while(0==GoPwm(100,c,f));
temp1=temp2;
}
}
while((0==GoPwm(0,c,f))); //关闭PWM
}
#pragma vector = PORT2_VECTOR
__interrupt void l7289do () {
uchar key_num;
IRcvStr(0x70,0x01,(uchar*)ReadBuf,3);
key_num=ReadBuf[0] ;
if(which==1) {
if(ReadBuf[1]==0) { //禁止连按
switch (key_num) {
case 6: if((f>1)&&(c>1)) {
f=f/2;
c=c/2;
}
break;
case 14: if(f<=0xef) {
f=f*2;
c=c*2;
}
break;
case 13: if(c>1) c=c/2;
break;
case 15: if(c<f/2) c=c*2;
break;
case 7: go=0; break;
default :break;
}
temp2=~temp2;
}
}
P2IFG&=~0X10;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -