/*首先将WDT设为定时器功能。而中断服务子程序则是把WDT改为看门狗功能。这样就通过中断控制的周期性的重启程序,实现了LED闪烁*/
/*注意,这里默认的时钟源不是32KHZ,而是内部的DCO-SMCLK(之后会讲到)1.045MHZ。所以前面WDTIS定义的时间大约都要缩小1045/32=32倍*/
#include <msp430.h>
void main(void)
{
/*清零-设定为计数器-时间设定为010模式,即256S/32=8S*/
WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS1
__enable_interrupt()//开总中断
SFRIE1|=WDTIE //开看门狗定时器中断
P1DIR=0xff
int i,j
P1OUT=0xff
for(i=0i<30000i++)
for(j=0j<50j++) //延时约8S
P1OUT=0x00
while(1)
}
/*中断服务程序*/
#pragma vector=WDT_VECTOR
__interrupt void WatchTimer(void)
{
WDTCTL=WDTPW+WDTCNTCL+WDTIS1 //看门狗模式,时间设定约为8S
}
void USCIA0_Init(void){
P3SEL |= BIT3+BIT4 // P3.3,4 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST // **Put state machine in reset**
UCA0CTL1 |= UCSSEL__ACLK// ACLK
UCA0BR0 = 34 // 4MHz 115200
UCA0BR1 = 0 // 4MHz 115200
UCA0MCTL |= UCBRS_6 + UCBRF_0 // Modulation UCBRSx=1, UCBRFx=0
UCA0CTL1 &= ~UCSWRST// **Initialize USCI state machine**
//IE2 |= UCA0RXIE + UCA0TXIE // Enable USCI_A0 TX/RX interrupt
//IE2 |= UCA0RXIE// Enable USCI_A0 RX interrupt
//__bis_SR_register(GIE) // Enter LPM3 w/ interrupts enabled
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)