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.nvwayi.com/mcu/ic491903.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

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

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

推荐阅读

msp430f149通过蓝牙HC-05与手机通讯
前面一篇实现蓝牙HC-05、06与单片机的连接及与手机通信的总结中详细介绍了蓝牙与STC系列MCU的连接与配置,这次将msp430f149通过UART1与蓝牙HC-05连接,并实现与手机通信作简单总结。通信效果:发送一段字码,蓝牙接收到后自动返回。msp430f149是一款比较常用的16位单片机,拥有两个串口模块,UART0(RXD:P11,TXD:P22)和UART1(RXD:P37,TXD:P36)。通常UART0较为常用,可用作BSL下载,或用作串口(蓝牙)通信。最近试了下UART1,觉得将他用于蓝牙通信非常合适。1、端口连接端口连接依然是差分连接,如下图:2、HC-05基本配置这里不详细说明,可查阅前一篇。3、串口通信
发表于 2020-04-02
msp430f149通过蓝牙HC-05与手机通讯
MSP430F149学习之IO端口
一 ,IO端口MSP430F149,TI公司超低功耗16位单片机,具有6组独立IO口,每组8位,共48个IO口,64个引脚。二 ,IO口寄存器1.端口特点其中P0,P1口具有三种功能:I/O、中断功能、其他外设功能。其余端口就只有I/O、其他外设端口。2.IO口常用寄存器2.1端口控制寄存器PxDIR2.2 端口输入寄存器2.3 端口输出寄存器2.4 功能引脚选择位2.5 中断标志位寄存器2.6 中断允许寄存器2.7 中断触发方式寄存器time to update,,,,,,,,,,,,,
发表于 2020-04-02
MSP430F149学习之IO端口
msp430f5438定时器1s的程序
;                      // Clear fault flags  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag              }msp430f有两个中断向量,还是一Ti的一个例程来说
发表于 2020-04-02
MSP430 F5529的按钮控制led灯亮灭程序代码
#include <msp430.h>int main(void){ WDTCTL = WDTPW | WDTHOLD; //关闭看门狗    P8DIR |= BIT1;  //设置P8.1输出灯    P1DIR &=~ BIT2; //设置p1.2输入按钮    P1REN = BIT2;   //设置上拉电阻,让其更加稳定(还真是) P8OUT &=~ BIT1; //默认关上,P1.2设置不了初始值 for(;;) {     if(P1IN&BIT2)   
发表于 2020-04-01
MSP430F5438A+TM1650+DS3231模块时间显示
MSP430F5438A+TM1650+DS3231模块时间显示。MSP430F5438A实时读取DS3231的时间数据,并通过TM1650驱动数码管显示。DS3231的时间输出具有高精度,较低的功耗,较DS1302具有绝对的优势。ADS1110为16位ADC转换芯片,数字输出,只有6脚封装,极大的减小了PCB的占用面积。电路和程序如下。//////////////////////////主函数////////////////////////////////////void main(){  uint  i;  WDTCTL = WDTPW + WDTHOLD;     
发表于 2020-04-01
MSP430F5438A+TM1650+DS3231模块时间显示
msp430f149外中断问题
。)其次,并没有配置什么上拉下拉电阻。就是依照上面的3个寄存器配置的。可以用。(芯片是msp430f149)。硬件没有问题,就是要用软件来解决了:第一种方法:在外中断中关闭 外中断使能,然后在外部程序合适的地方再开启。第二种方法:在外中断中 加入消抖,就可以了。至于为什么,我也不清楚。。A3:这个问题我到现在也想不通,理不顺,如果有大神看到的话,请一定要留言告诉我。在师兄的帮助下整个系统算是完成了。更正一下上面的一些问题。对于外部输入到芯片的引脚,首先值得质疑一下:这个输入引脚的状态到底能不能用万用表来测量。我这里给出的答案是不可取的。(感觉可以用示波器查看,原理的话不是很清楚)所以在写完代码后测试的时候,不应该靠万用表的数值来看是
发表于 2020-03-30
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 nvwayi.com, Inc. All rights reserved
彩票大赢家 易迅彩票送彩金 彩票大赢家 送彩金的棋牌app糖果派对 qq等级送彩金线上娱乐 足彩送彩金 彩票网送彩金存款 皇家赌场送彩金 送彩金棋牌10可提现 棋牌正版送彩金