標(biāo)題:
關(guān)于MSP430的中斷和查詢(xún)方式
[打印本頁(yè)]
作者:
seatlesue
時(shí)間:
2017-4-6 00:09
標(biāo)題:
關(guān)于MSP430的中斷和查詢(xún)方式
MSP430F5529的芯片
使用按鍵S2,以查詢(xún)方式控制LED1:按下S2,LED1開(kāi)始以1Hz的頻率開(kāi)始閃爍,再次按下S2,LED1熄滅;同時(shí),使用按鍵S1以中斷方式,控制LED1的閃爍或熄滅。這個(gè)可以用選擇語(yǔ)句吧 但是 我就不知道中斷函數(shù)下面又有聲明 我想用switch語(yǔ)句 但是現(xiàn)在只能寫(xiě)成這個(gè)樣子了 接下來(lái)應(yīng)該怎么辦呢 拜托各位大神了
#include<msp430.h>
#define OSC 1000000
#define u8 unsignedchar
#define u16 unsignedshort
#define S1 (P1IN&BIT7)
#define S2 (P2IN&BIT2)
u8 led_flash;
void GPIO_init(void);
void delay_ms(u16 time);
/*
* main.c
*/
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
GPIO_init();
_BIS_SR(GIE);
P1OUT |= BIT0;
while(1)
{
if(!S2)
{
delay_ms(10);
if(!S2)
{
while(!S2);
delay_ms(10);
led_flash=1;
}
if(!S2)
{
led_flash=2;
}
switch(led_flash)
{case 1:
P8OUT|=BIT1;
P1OUT|=BIT0;
delay_ms(500);
P8OUT&=~BIT1;
P1OUT&=~BIT0;
delay_ms(500);
break;
case 2:
P1OUT^= BIT0;
break;
case 3:
break;
default: ;
}
}
}
}
void GPIO_init(void)
{
P1DIR|=BIT0;//LED1
P1DIR&=~ BIT7;
P1OUT|=BIT7;
P1REN|=BIT7;
P1IFG= 0x00;
P1IES|= BIT7;
P1IE|= BIT7;
P1DIR|=BIT0;//LED1
P2DIR&=~ BIT2;
P2OUT|=BIT2;
P2REN|=BIT2;
}
void delay_ms(u16 time)
{
while(time--)
__delay_cycles(OSC/1000);
}
#pragma vector=PORT1_VECTOR
__interrupt void Port1_ISR(void)
{
if(P1IFG & BIT7)
{
delay_ms(10);
while (!S1)
delay_ms(10);
P1IFG&=~ BIT7;
P1OUT^= BIT0;
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1