Nghiên cứu Khoa học

LẬP TRÌNH TỔNG HỢP CÁC NGẮT CỦA MSP430

  • 08/06/2020
  • Nghiên cứu Khoa học

//HIEN THI 00-99 LEN 2 LED 7 DOAN. SAU 1 S GIÁ TRI TANG LEN 1
//YEU CAU DUNG TIMER. an nut p2.0 chay lai tu dau.
#include "msp430.h"
void main( void )
{ // Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; DCOCTL=CALDCO_1MHZ;
BCSCTL1=CALBC1_1MHZ; BCSCTL2|=SELM_0+DIVM_2;//CHON F=DCO VA DIVIDE 4
P1SEL&=~(BIT0+BIT1+BIT2);
P1DIR|=BIT0+BIT1+BIT2;
P2SEL&=~(BIT0+BIT1+BIT2+BIT3);
P2DIR&=~(BIT0+BIT1+BIT2+BIT3);
P2REN|=BIT0+BIT1+BIT2+BIT3;
P2IE|=BIT0+BIT1+BIT2;//NGAT NGOAI CHO P2.0-P2.2
P2IES|=BIT0+BIT1+BIT2;
CCTL1|=CCIE;
CCTL2|=CCIE;
CCR1=62500;
CCR2=31250;
P2IFG=0;
_BIS_SR(GIE);
while(1){
if((P2IN&BIT3)==0)
TACTL|=TASSEL_2+MC_2+ID_3+TAIE;
}
}
#pragma vector=TIMERA1_VECTOR
__interrupt void ngat1(void)
{
switch(TAIV)
{
case 0x02:
{
P1OUT^=BIT0;
CCR1+=62500;
break;
}
case 0x4:
{
P1OUT^=BIT1;
CCR2+=31250;
break;
}
case 0xa:
{
P1OUT^=BIT2;
break;
}
}
}
#pragma vector=PORT2_VECTOR//tat ca cac ngat p2.0-p2.7 deu vao PORT2_VECTOR
__interrupt void ngat(void)
{
if((P2IFG&BIT0)==BIT0)
CCTL1&=~CCIE;
if((P2IFG&BIT1)==BIT1)
CCTL2&=~CCIE;
if((P2IFG&BIT2)==BIT2)
TACTL&=~TAIE;
P2IFG=0;
}

 

 

Các tin khác