1. PROTEUS7.6电路
2. IAR程序---MSP430比较模式
#include<msp430x23x.h>
#define uint unsigned int
#define uchar unsigned char
#define uint unsigned int
#define uchar unsigned char
uchar n;
/******************************************************************************
函数:void COMPARE_A(void)
功能:Timer0比较中断
******************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void COMPARE_A(void)
{
n++;
if(n==10)
{
P1OUT^=0x01;
n=0;
}
}
/******************************************************************************
函数:void TIMER0_COMPARE_INIT(void)
功能:TimerA比较中断初始化
****************************************************************************/
void TIMER0_COMPARE_INIT(void)
{
P1DIR |= 0x01; //P1^0为输出
CCTL0 = 0x0010; //比较模式,允许比较中断
CCR0 = 1000-1; //比较值
TACTL = 0x02e4; //时钟源-MCLK,8分频,连续计数,禁止中断
}
/******************************************************************************
函数:void main(void)
功能:主函数
******************************************************************************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
TIMER0_COMPARE_INIT();
_EINT(); //开总中断
while(1)
{
_NOP(); //短延时
}
}
函数:void COMPARE_A(void)
功能:Timer0比较中断
******************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void COMPARE_A(void)
{
n++;
if(n==10)
{
P1OUT^=0x01;
n=0;
}
}
/******************************************************************************
函数:void TIMER0_COMPARE_INIT(void)
功能:TimerA比较中断初始化
****************************************************************************/
void TIMER0_COMPARE_INIT(void)
{
P1DIR |= 0x01; //P1^0为输出
CCTL0 = 0x0010; //比较模式,允许比较中断
CCR0 = 1000-1; //比较值
TACTL = 0x02e4; //时钟源-MCLK,8分频,连续计数,禁止中断
}
/******************************************************************************
函数:void main(void)
功能:主函数
******************************************************************************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
TIMER0_COMPARE_INIT();
_EINT(); //开总中断
while(1)
{
_NOP(); //短延时
}
}