msp430F149调PWM

2020-03-17来源: eefocus关键字:msp430F149  调PWM  占空比

还说好好安下心调我的PID  结果又被某人喊调一个占空比为10%的PWM波


这不,直接上代码吧:


But first,还是要先解释一下端口:按键改变PWM的占空比 


按键IO口如下:

然后就是用P2。3和P2,4口输出两路PWM信号


#include

#define uchar unsigned char

#define uint unsigned int

#define keyin (P1IN & 0x0f)

uchar T[]={10,20,40,100,150,200};        //高电平持续

 

void delay(void)

{

    uint tmp;

    for(tmp = 12000;tmp > 0;tmp--);

}

void main( void )

{  

    WDTCTL = WDTPW + WDTHOLD;            //关闭看门狗

    uchar temp,keyval = 0;

    char i=0;

    TACTL = TASSEL0 + TACLR;             // ACLK, 清除 TAR

    CCR0 = 201-1;                        // PWM周期

    CCTL1 = OUTMOD_7;                     

    CCTL2 = OUTMOD_7;                     

    TACTL |= MC0;                        // Timer_A 增计数模式

    

    P2DIR |= 0x08;                       // P2.3 输出

      P2SEL |= 0x08;                     // P2。3 TA1

    P2DIR |= 0x10;                        // P2.4 输出

      P2SEL |= 0x10;                     // P2.4 TA2

    P2DIR |= 0x24;

      P2OUT &= (~BIT5) +(~BIT2);         //P2。2与P2。5点亮

 

    while(1)

    {

        if(keyin != 0x0f)                //如果有键被按下

         {

            delay();                     //延时消抖

            if(keyin != 0x0f)            //再次检测按键状态

            {

                temp=keyin;

                while(keyin != 0x0f);    //等待按键被放开

                switch(temp)             //转换键值    

                 {

                  case 0x0e:

                            keyval = 1;break;

                  case 0x0d:

                            keyval = 2;break;

                  default:

                            keyval = 0;break;

                 }            

                if(keyval==1)            //按键加

                 {

                   P2DIR |= 0x80;

                     P2OUT^=BIT7;        //按键指示

                   i++;

                   if(i>5)

                     i=0;

                 }

                if(keyval==2)            //按键减

                 {

                   if(i==0)

                     i=5;

                   else

                     i--;

                   P2DIR |= 0x80;

                   P2OUT^=BIT7;          //按键指示

                 }

             }

        }

       CCR1 = T[i];                      //占空比: T[i] / 200

       CCR2 = T[i];                      //占空比: T[i] / 200

    }

}

关键字:msp430F149  调PWM  占空比 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic491903.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430f149使用XT2的8M晶振输出PWM
下一篇:MSP430F149定时器TA总结

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430F149按键中断寄存器配置
P20~P23为LED,P11为按键。按下为低电平。使用中断函数按下一次按键则LED状态反转一次。#include "io430.h"#include "in430.h" void select_xt2(void){  unsigned char i; /*------选择系统主时钟为8MHz-------*/    BCSCTL1 &= ~XT2OFF;                      do{   
发表于 2020-03-17
MSP430F149学习之路——PWM信号
代码一: 1 /******************************* 2 程序功能:ACLK=32768Hz  3           PWM波 T=512/32768 占空比75% 4 *********************************/ 5  6 #include <msp430x14x.h> 7 void main() 8 { 9   WDTCTL = WDTPW + WDTHOLD;10 
发表于 2020-03-17
MSP430F149定时器TA总结
msp430的定时器主要是指基本定时器,看门狗定时器和TATB定时器,两种定时器从功能和用法的角度基本相似,TB功能更为强大,有7个CCR0寄存器,即可输出六路PWM,在做三相逆变的时候,需要六路每路相差60°的spwm波,就是用TB来发生的。定时器的PWM发生利用的是比较模式,即在CCR0中储存周期,CCR1中储存一个小于CCR0的数字,CCR1/CCR0的比值即为占空比,其原理如下图所示:在一个16位计数器TAR增加的过程中,当达到CCR1前输出高电平,达到CCR0值前输出低电平,达到CCR0后,重新置位。与TA相关的寄存器分为四类:1、TACCRx(CCRx)     //捕获/比较寄存器
发表于 2020-03-17
MSP430f149使用XT2的8M晶振输出PWM
输出PWM的方法,较之51单片机,msp430更加精准,更加稳定。感谢TI,下附程序:/**TA使用XT2高频晶振输出PWM**/void PWM(){    uchar i;    /*------选择系统主时钟为8MHz-------*/    BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器    do    {        IFG1 &= ~OFIFG; //清除晶振失败标志        for (i
发表于 2020-03-17
MSP430(f149)学习笔记——红外遥控发射
最近由于项目需求,研究了一下MSP430,总体感觉MSP430还是非常不错的单片机,不亏是TI的产品。项目中用MSP430实现了红外遥控功能,下面我们先来分析一下红外的发送原理。红外发送原理红外发送实际上是按照一定的时间间隔,断断续续的发送红外射线来进行数据传输,为了提高数据传输的准确定和降低功耗,红外一般是采用38K的红外调制信号,其中,38K允许上下浮动1K以内的误差。红外发送的开头需要一个引导位,引导位是发送9ms,然后停止4.5ms,如果发送完一个数据之后还需要再发数据的话还需要连发码,连发码是先发送9ms,然后停止4.5ms。引导码和连发码的波形如下:引导码和连发码之后是32位数据位,这32位数据位实际上是一个
发表于 2020-03-16
MSP430(f149)学习笔记——红外遥控发射
【MSP430】捕获模式测量信号占空比
代码来自2016北斗杯,用于测量空气pm2.5,该传感器通过测量信号的占空比估计颗粒浓度(1)TimerB设置,工作在捕获模式:void TimerB_Init(){  TBCCTL0&=~(CCIS1+CCIS0);            // 捕获源为P4.0,即CCI0A(也是CCI0B)   TBCCTL0|=CM_2+SCS+CAP;              //下降沿捕获,同步捕获,工作在捕获模式   TBCCTL0|=CCIE
发表于 2020-02-25
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 2689mr.com, Inc. All rights reserved
微信群算账机器人 博彩公司免费送彩金 澳客彩票 充值送彩金活动 什么平台送彩金的 送彩金的娱乐棋牌游戏 彩票大赢家 彩票大赢家 澳门银河官网送彩金 qq等级送彩金线上娱乐