当前位置:首页 > 单片机 > 单片机
[导读] 这个程序主要是利用定时器的比较输出功能来产生PWM波控制LED,定时器A的比较输出对应P2.3 P2.4,因此在程序的一开始需要设置比较匹配的工作模式,需要说明的是头文件中已经对各种模式给了详细的定义,不

这个程序主要是利用定时器的比较输出功能来产生PWM波控制LED,定时器A的比较输出对应P2.3 P2.4,因此在程序的一开始需要设置比较匹配的工作模式,需要说明的是头文件中已经对各种模式给了详细的定义,不需要在去配置寄存器,程序较为简单,稍微扩展一下去控制舵机也很容易,大家自己分析。

  1. /*******************************************************

  2. 程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁

  3. -------------------------------------------------------

  4. 拨码开关设置:将LED位拨至ON,其余拨至OFF

  5. 测试说明:观察LED的亮灭的时间长短

  6. *******************************************************/

  7. #include

  8. voidmain(void)

  9. {

  10. /*下面六行程序关闭所有的IO口*/

  11. P1DIR=0XFF;P1OUT=0XFF;

  12. P2DIR=0XFF;P2OUT=0XFF;

  13. P3DIR=0XFF;P3OUT=0XFF;

  14. P4DIR=0XFF;P4OUT=0XFF;

  15. P5DIR=0XFF;P5OUT=0XFF;

  16. P6DIR=0XFF;P6OUT=0XFF;

  17. WDTCTL=WDTPW+WDTHOLD;//关狗

  18. P6DIR|=BIT2;P6OUT|=BIT2;//关闭电平转换

  19. P2DIR=0xff;//P2端口设置为输出

  20. P2OUT=0xff;//关闭其他LED

  21. P2SEL|=BIT3+BIT4;//P2.3和P2.4连接内部模块,使用的是第二功能作为TimerA的比较输出。

  22. CCR0=4096-1;//PWM周期为1S

  23. CCTL1=OUTMOD_7;//捕捉比较寄存器的配置,工作在方式7,计数值等于比较值时输出置位

  24. CCR1=4000;//输出1的比较值

  25. CCTL2=OUTMOD_7;//CCR2reset/set

  26. CCR2=500;//输出2的比较值改变此值即可以改变输出的pwm波的占空比

  27. TACTL=TASSEL_1+ID_3+MC_1;//ACLK/8,upmode

  28. //_BIS_SR(LPM3_bits);//EnterLPM3

  29. LPM3;

  30. }



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭