2022|4

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助 pwm驱动led灯 按键可以步进 朋友们 谢谢了 [复制链接]

谢谢了

最新回复

#include   #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 }  详情 回复 发表于 2013-7-15 11:14

点评

楼主可以先写程序,遇到问题请大家帮忙  详情 回复 发表于 2013-7-9 10:30
 
点赞 关注

回复
举报

2万

帖子

71

TA的资源

管理员

沙发
 

回复 楼主侯成斌1988126 的帖子

楼主可以先写程序,遇到问题请大家帮忙
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

嗯 谢谢你  详情 回复 发表于 2013-7-9 12:04
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发soso 的帖子

嗯   谢谢你
 
 
 

回复

119

帖子

0

TA的资源

一粒金砂(高级)

4
 
这样简单的问题,还要大家帮助?
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

5
 
#include  

#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
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表