下面这段程序想实现:周期为1分钟,一分钟内出现一秒的高电平,也就是在输出加个发光二极管,一分钟闪一下,怎么都搞不定,真诚的希望各位高手帮忙。
#include <msp430x12x2.h>
;------------------------------------------------------------------------------
ORG 0E000h ; Program Start
;------------------------------------------------------------------------------
RESET mov.w #300h,SP ; Initialize stackpointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupP1 bis.b #004h,&P1DIR ; P1.2 and P1.3 outputs
bis.b #004h,&P1SEL ; P1.2 and P1.3 TA1/2 option
bis.b #DIVA1+DIVA0,&BCSCTL1 ;设定8分频
mov.w #TASSEL0+ID1+ID0,&TACTL ;使用ACLK作定时器时钟并且8分频源
SetupC0 mov.w #0EA60h,&CCR0 ; PWM Period
SetupC1 mov.w #OUTMOD_7,&CCTL1 ; CCR1 reset/set
mov.w #0400h,&CCR1 ; CCR1 PWM Duty Cycle
SetupC2 mov.w #OUTMOD_7,&CCTL2 ; CCR2 reset/set
mov.w #128,&CCR2 ; CCR2 PWM duty cycle
SetupTA mov.w #TASSEL_1+MC_1,&TACTL ; ACLK, upmode
;
Mainloop bis.w #LPM3,SR ; Remain in LPM3
nop ; Required only for debugger
;
;------------------------------------------------------------------------------
; Interrupt Vectors
;------------------------------------------------------------------------------
ORG 0FFFEh ; MSP430 RESET Vector
DW 0E00h ;
END
1。P1.2 and P1.3 outputs:改为 bis.b #00Ch,&P1DIR ; bis.b #00Ch,&P1SEL ;
2。SetupC0 mov.w #0EA60h,&CCR0 ; CCR0设置的周期及占空比太小
3。根本多余"mov.w #TASSEL0+ID1+ID0,&TACTL ;使用ACLK作定时器时钟并且8分频源"
斑竹你好:
多谢你的指点,但是我改过后还是不行,led也不闪了.麻烦你再看看吧,急盼你的指教!
要用示波器观察,LED闪烁时间太短是观察不出来的。
但是一分钟一次和15s一次还是能看出来啊。整个课题都被这一点耽误了,真的不知道怎么办阿,楼主。
PWM输出怎么会有"1分钟""15秒"概念呢???
要想控制LED,还是用定时器吧。PWM波程序按照我提示的修改后,没有任何问题,你用示波器完全看到波形的。
我想实现的功能是:周期为一分钟,59s为低,1s为高。这个程序怎么能实现呢。我以前就用过51,对430不太熟悉。
我们课题马上要结了,老板一直在催,急啊!楼主能不能把qq留给我,不胜感激阿
直接用定时器实现。起始:P1.0 |= BIT0(LED亮);,1s(到)-->P1.0 &=~ BIT0; 60s(到)-->P1.0 |= BIT0;循环即可!