Nghiên cứu Khoa học

HƯỚNG DẪN LẬP TRÌNH CÁC CHỨC NĂNG NGẮT CƠ BẢN CỦA MSP430

  • 25/02/2019
  • Nghiên cứu Khoa học

SAU ĐẦY LÀ VÍ DỤ LẬP TRÌNH CHO CÁC NGẮT CƠ BẢN CẦN CÓ CỦA CHIP MSP430.

ỨNG DỤNG ĐỂ BẬT/TẮT XUNG TẠI CÁC CHÂN CỦA CHIP MSP430

#include "msp430.h"
void main(void)
{
BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ;
BCSCTL2|=DIVS_3;
P1DIR|=BIT0+BIT1+BIT2;
P2DIR&=~(BIT0+BIT1+BIT2+BIT3);
P2REN|=BIT0+BIT1+BIT2+BIT3;
P2IE|=BIT0+BIT1+BIT2+BIT3;
P2IES|=BIT0+BIT1+BIT2+BIT3;
CCR0=62500;
CCR1=31250;
CCTL0=CCIE;
CCTL1=CCIE;
P2IFG=0;//XOA TAT CA CAC NGAT TRUOC KHI BAT DAU CT
_BIS_SR(GIE);
while(1)
{
}
}
#pragma vector=PORT2_VECTOR
__interrupt void ngat(void)
{//AN P2.0-P2.7
if((P2IFG&BIT3)==BIT3){
TACTL|=TASSEL_2+ID_3+MC_2+TAIE;
P2IFG&=~BIT3;
}
if((P2IFG&BIT0)==BIT0)
{
CCTL0&=~CCIE;
P2IFG&=~BIT0;// XOA YEU CAU NGAT P2.0
}
if((P2IFG&BIT1)==BIT1)
{
CCTL1&=~CCIE;
P2IFG&=~BIT1;// XOA YEU CAU NGAT P2.0
}
if((P2IFG&BIT2)==BIT2)
{
TACTL&=~TAIE;
P2IFG&=~BIT2;// XOA YEU CAU NGAT P2.0
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void ngatTA0(void)
{
CCR0+=62500;
P1OUT^=BIT0;
}
#pragma vector=TIMERA1_VECTOR
__interrupt void ngatTA1(void)
{
switch(TAIV){
case 0x02:
{
CCR1+=31250;
P1OUT^=BIT1;
break;
}
case 0x04:
{
break;
}
case 0x0a:
{
P1OUT^=BIT2;
break;
}
}
}

 

Các tin khác