专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
求助 pwm驱动led灯 按键可以步进 朋友们 谢谢了
2019-03-24 12:26
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
6415
4
1315
谢谢了 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
karaok
2019-03-25 06:17
#include <msp430g2231.h>
#define CPU_F ((double)1000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define PWM_P 0xFFFF
#define PWM_2 0xFFF
#define PWM_3 0xEFF
#define KEY1 BIT3
void SET0(void);//Standby
void SET30(void);//30% Dim
void SET100(void);//No Dim
void SET_FL(void);//Flash Mode
unsigned char STU1=0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset
DCOCTL|= MOD0+DCO0;// +DCO1+DCO2 //Set DCO Frequence select
BCSCTL1|=DIVA_0+RSEL0;// +RSEL1+RSEL2+RSEL3 // Set DCO Resistor
P1DIR &= ~BIT3; //P1.3 input
P1REN |=BIT3; // P1.3 pullup
P1IE |= BIT3; // P1.3 interrupt enabled
P1IES |= BIT3; // P1.3 Hi/lo edge
P1IFG &= ~BIT3; // P1.3 IFG cleared
STU1=0;
SET0();
_BIS_SR(LPM3_bits + GIE); // Enter LPM3
}
#pragma vector=PORT1_VECTOR
__interrupt void Port_1 (void)
{
if((P1IFG&KEY1)==KEY1) //KEY1 按下
{
delay_ms(20);
if((P1IN&KEY1)==0)
{
switch(STU1)
{
case 0:
SET100();
STU1=1;
break;
case 1:
SET30();
STU1=2;
break;
case 2:
SET_FL();
STU1=3;
break;
case 3:
STU1=0;
SET0();
break;
}
P1IFG &= ~BIT3; // P1.3 IFG cleared
}
}
}
void SET100(void)
{
P1DIR |= BIT6+BIT4+BIT0;// P1.2 and P1.3 output
P1SEL |=BIT4+BIT0;//
P1OUT |=BIT6+BIT4+BIT0;//
}
void SET30(void)
{
P1DIR |= BIT6+BIT4+BIT0;// // P1.2 and P1.3 output
P1SEL |= BIT6+BIT4+BIT0;// // P1.2 and P1.3 TA1/2 options
P1OUT |= BIT3;
CCR0 = PWM_P; // PWM Period
CCTL1 = OUTMOD_3; // CCR1 reset/set
CCR1 = PWM_3; // CCR1 PWM duty cycle
TACTL = TASSEL_2 + MC_1; // MCLK, up mode
}
void SET0(void)
{
P1OUT &= BIT6;
P1IFG &= ~BIT3;
//_BIS_SR(LPM4_bits + GIE);
}
void SET_FL(void) //Flash Mode
{
P1DIR |= BIT6; // P1.2 and P1.3 output
P1SEL |= BIT6; // P1.2 and P1.3 TA1/2 options
P1OUT |= BIT6;
CCR0 = PWM_P; // PWM Period
CCTL1 = OUTMOD_2; // CCR1 reset/set
CCR1 = PWM_3; // CCR1 PWM duty cycle
TACTL = TASSEL_1 + MC_1; // ACLK, up mode
}
加载中...
查看其它4个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#define CPU_F ((double)1000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define PWM_P 0xFFFF
#define PWM_2 0xFFF
#define PWM_3 0xEFF
#define KEY1 BIT3
void SET0(void);//Standby
void SET30(void);//30% Dim
void SET100(void);//No Dim
void SET_FL(void);//Flash Mode
unsigned char STU1=0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset
DCOCTL|= MOD0+DCO0;// +DCO1+DCO2 //Set DCO Frequence select
BCSCTL1|=DIVA_0+RSEL0;// +RSEL1+RSEL2+RSEL3 // Set DCO Resistor
P1DIR &= ~BIT3; //P1.3 input
P1REN |=BIT3; // P1.3 pullup
P1IE |= BIT3; // P1.3 interrupt enabled
P1IES |= BIT3; // P1.3 Hi/lo edge
P1IFG &= ~BIT3; // P1.3 IFG cleared
STU1=0;
SET0();
_BIS_SR(LPM3_bits + GIE); // Enter LPM3
}
#pragma vector=PORT1_VECTOR
__interrupt void Port_1 (void)
{
if((P1IFG&KEY1)==KEY1) //KEY1 按下
{
delay_ms(20);
if((P1IN&KEY1)==0)
{
switch(STU1)
{
case 0:
SET100();
STU1=1;
break;
case 1:
SET30();
STU1=2;
break;
case 2:
SET_FL();
STU1=3;
break;
case 3:
STU1=0;
SET0();
break;
}
P1IFG &= ~BIT3; // P1.3 IFG cleared
}
}
}
void SET100(void)
{
P1DIR |= BIT6+BIT4+BIT0;// P1.2 and P1.3 output
P1SEL |=BIT4+BIT0;//
P1OUT |=BIT6+BIT4+BIT0;//
}
void SET30(void)
{
P1DIR |= BIT6+BIT4+BIT0;// // P1.2 and P1.3 output
P1SEL |= BIT6+BIT4+BIT0;// // P1.2 and P1.3 TA1/2 options
P1OUT |= BIT3;
CCR0 = PWM_P; // PWM Period
CCTL1 = OUTMOD_3; // CCR1 reset/set
CCR1 = PWM_3; // CCR1 PWM duty cycle
TACTL = TASSEL_2 + MC_1; // MCLK, up mode
}
void SET0(void)
{
P1OUT &= BIT6;
P1IFG &= ~BIT3;
//_BIS_SR(LPM4_bits + GIE);
}
void SET_FL(void) //Flash Mode
{
P1DIR |= BIT6; // P1.2 and P1.3 output
P1SEL |= BIT6; // P1.2 and P1.3 TA1/2 options
P1OUT |= BIT6;
CCR0 = PWM_P; // PWM Period
CCTL1 = OUTMOD_2; // CCR1 reset/set
CCR1 = PWM_3; // CCR1 PWM duty cycle
TACTL = TASSEL_1 + MC_1; // ACLK, up mode
}
一周热门 更多>