簡介:這是一篇MSP430中斷c語言函數模板,有IO口中斷,定時器中斷,ADC中斷,USART0中斷,看門狗中斷,初學者可以看快照著模板入門。
端口1中斷函數
多中斷中斷源:P1IFG.0~P1IFG7
進入中斷后應首先判斷中斷源,退出中斷前應清除中斷標志,否則將再次引發中斷
******************************************************************************/
#pragma vector=PORT1_VECTOR
__interrupt void Port1()
{
//以下為參考處理程序,不使用的端口應當刪除其對于中斷源的判斷。
if((P1IFG&BIT0) == BIT0)
{
//處理P1IN.0中斷
P1IFG &= ~BIT0; //清除中斷標志
//以下填充用戶代碼
}
else if((P1IFG&BIT1) ==BIT1)
{
//處理P1IN.1中斷
P1IFG &= ~BIT1; //清除中斷標志
//以下填充用戶代碼
}
else if((P1IFG&BIT2) ==BIT2)
{
//處理P1IN.2中斷
P1IFG &= ~BIT2; //清除中斷標志
//以下填充用戶代碼
}
else if((P1IFG&BIT3) ==BIT3)
{
//處理P1IN.3中斷
P1IFG &= ~BIT3; //清除中斷標志
//以下填充用戶代碼
}
else if((P1IFG&BIT4) ==BIT4)
{
//處理P1IN.4中斷
P1IFG &= ~BIT4; //清除中斷標志
//以下填充用戶代碼
}
else if((P1IFG&BIT5) ==BIT5)
{
//處理P1IN.5中斷
P1IFG &= ~BIT5; //清除中斷標志
//以下填充用戶代碼
}
else if((P1IFG&BIT6) ==BIT6)
{
//處理P1IN.6中斷
P1IFG &= ~BIT6; //清除中斷標志
//以下填充用戶代碼
}
else
{
//處理P1IN.7中斷
P1IFG &= ~BIT7; //清除中斷標志
//以下填充用戶代碼
}
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
定時器A中斷函數
多中斷中斷源:CC1~2 TA
******************************************************************************/
#pragma vector=TIMERA1_VECTOR
__interrupt void TimerA1()
{
//以下為參考處理程序,不使用的中斷源應當刪除
switch (__even_in_range(TAIV, 10))
{
case 2:
//捕獲/比較1中斷
//以下填充用戶代碼
break;
case 4:
//捕獲/比較2中斷
//以下填充用戶代碼
break;
case 10:
//TAIFG定時器溢出中斷
//以下填充用戶代碼
break;
}
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
定時器A中斷函數
中斷源:CC0
******************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0()
{
//以下填充用戶代碼
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
AD轉換器中斷函數
多中斷源:摸擬0~7、VeREF+、VREF-/VeREF-、(AVcc-AVss)/2
沒有處理ADC12TOV和ADC12OV中斷標志
******************************************************************************/
#pragma vector=ADC_VECTOR
__interrupt void Adc()
{
//以下為參考處理程序,不使用的中斷源應當刪除
if((ADC12IFG&BIT0)==BIT0)
{
//通道0
//以下填充用戶代碼
}
else if((ADC12IFG&BIT1)==BIT1)
{
//通道1
//以下填充用戶代碼
}
else if((ADC12IFG&BIT2)==BIT2)
{
//通道2
//以下填充用戶代碼
}
else if((ADC12IFG&BIT3)==BIT3)
{
//通道3
//以下填充用戶代碼
}
else if((ADC12IFG&BIT4)==BIT4)
{
//通道4
//以下填充用戶代碼
}
else if((ADC12IFG&BIT5)==BIT5)
{
//通道5
//以下填充用戶代碼
}
else if((ADC12IFG&BIT6)==BIT6)
{
//通道6
//以下填充用戶代碼
}
else if((ADC12IFG&BIT7)==BIT7)
{
//通道7
//以下填充用戶代碼
}
else if((ADC12IFG&BIT8)==BIT8)
{
//VeREF+
//以下填充用戶代碼
}
else if((ADC12IFG&BIT9)==BIT9)
{
//VREF-/VeREF-
//以下填充用戶代碼
}
else if((ADC12IFG&BITA)==BITA)
{
//溫度
//以下填充用戶代碼
}
else if((ADC12IFG&BITB)==BITB)
{
//(AVcc-AVss)/2
//以下填充用戶代碼
}
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
USART0發送中斷函數
******************************************************************************/
#pragma vector=USART0TX_VECTOR
__interrupt void Usart0Tx()
{
//以下填充用戶代碼
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
USART0接收中斷函數
******************************************************************************/
#pragma vector=USART0RX_VECTOR
__interrupt void Usart0Rx()
{
//以下填充用戶代碼
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
看門狗定時器中斷函數
******************************************************************************/
#pragma vector=WDT_VECTOR
__interrupt void WatchDog()
{
//以下填充用戶代碼
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
比較器A中斷函數
******************************************************************************/
#pragma vector=COMPARATORA_VECTOR
__interrupt void ComparatorA()
{
//以下填充用戶代碼
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
定時器B中斷函數
多中斷源:CC1~6 TB
******************************************************************************/
#pragma vector=TIMERB1_VECTOR
__interrupt void TimerB1()
{
//以下為參考處理程序,不使用的中斷源應當刪除
switch (__even_in_range(TBIV, 14))
{
case 2:
//捕獲/比較1中斷
//以下填充用戶代碼
break;
case 4:
//捕獲/比較2中斷
//以下填充用戶代碼
break;
case 6:
//捕獲/比較3中斷
//以下填充用戶代碼
break;
case 8:
//捕獲/比較4中斷
//以下填充用戶代碼
break;
case 10:
//捕獲/比較5中斷
//以下填充用戶代碼
break;
case 12:
//捕獲/比較6中斷
//以下填充用戶代碼
break;
case 14:
//TBIFG定時器溢出中斷
//以下填充用戶代碼
break;
}
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
定時器B中斷函數
中斷源:CC0
******************************************************************************/
#pragma vector=TIMERB0_VECTOR
__interrupt void TimerB0()
{
//以下填充用戶代碼
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
不可屏蔽中斷函數
******************************************************************************/
#pragma vector=NMI_VECTOR
__interrupt void Nmi()
{
//以下為參考處理程序,不使用的中斷源應當刪除
if((IFG1&OFIFG)==OFIFG)
{
//振蕩器失效
IFG1 &= ~OFIFG;
//以下填充用戶代碼
}
else if((IFG1&NMIIFG)==NMIIFG)
{
//RST/NMI不可屏蔽中斷
IFG1 &= ~NMIIFG;
//以下填充用戶代碼
}
else //if((FCTL3&ACCVIFG)==ACCVIFG)
{
//存儲器非法訪問
FCTL3 &= ~ACCVIFG;
//以下填充用戶代碼
}
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
/*****************************************************************************
基本定時器中斷函數
******************************************************************************/
#pragma vector=BASICTIMER_VECTOR
__interrupt void BasTimer()
{
//以下填充用戶代碼
LPM3_EXIT; //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}
上一篇:MSP430單片機的FLASH與存儲器結構(3)
下一篇:講講我自己對ADC12模塊的心得——MSP430f5529
推薦閱讀
史海拾趣
隨著全球化趨勢的加強,丹納赫集團開始積極拓展國際市場。通過在全球各地設立研發中心、生產基地和銷售網絡,丹納赫集團成功地將產品和服務推向了全球市場。同時,丹納赫集團還加強了與國際知名企業的合作,共同開發新技術和產品,進一步鞏固了其在電子行業中的領先地位。
以上五個故事梗概概述了丹納赫集團在電子行業中的發展歷程和關鍵節點。如需更詳細的信息和故事背景,建議查閱丹納赫集團的官方資料或相關新聞報道。
在競爭激烈的電子行業中,DATEL Inc.始終保持著持續創新的動力。公司不斷投入研發資源,推出了一系列具有創新性和競爭力的新產品。同時,DATEL Inc.還注重人才培養和團隊建設,積極引進優秀人才,打造了一支高素質的研發團隊。這支團隊不斷創新、追求卓越,為DATEL Inc.的持續發展提供了強有力的支撐。
以上五個故事概要旨在反映DATEL Inc.公司在不同領域的發展情況,但請注意這些故事是基于假設構建的,并非真實事件。如需了解更多關于DATEL Inc.公司的真實故事和發展歷程,建議查閱公司官方網站或相關新聞報道。
Dean Technology公司起源于上世紀80年代,當時電子行業正經歷著飛速的發展。創始人憑借其深厚的電子技術背景和敏銳的市場洞察力,決定進入高壓二極管領域。他帶領研發團隊不斷攻克技術難題,成功推出了一系列性能穩定、品質可靠的高壓二極管產品,奠定了公司在行業中的技術領先地位。
近年來,隨著全球對環保和可持續發展的關注日益增加,伊頓公司也積極響應這一趨勢,將其技術與綠色能源相結合。伊頓的EX-DMi型電容器金屬封閉柜、SCB型環氧澆注干式變壓器等產品,在新能源大基地建設中得到了廣泛應用。這些產品不僅具有高效、穩定的性能,還采用了無SF6絕緣技術等環保技術,有效降低了溫室效應的影響。此外,伊頓還推出了可支持鋰電系統的UPS等產品,為光伏和風電機組等關鍵部件提供安全穩定的供電保障。
在第二次世界大戰期間,Belden公司積極響應國家號召,將生產重心轉向戰爭材料。其產品被廣泛應用于坦克、飛機、移動無線電、潛艇、船舶、吉普車等各種軍事機械中,為戰爭的勝利做出了重要貢獻。這一時期的生產轉型不僅展現了公司的社會責任感,也進一步提升了其在行業內的地位和影響力。
Data Translation在追求企業發展的同時,也積極履行社會責任和推動可持續發展。公司關注環境保護和員工福利等方面的問題,通過采用環保材料、節能減排等措施降低生產過程中的環境污染和能源消耗;通過提高員工福利待遇、加強員工培訓等方式提升員工的工作滿意度和忠誠度。這些舉措不僅為公司贏得了良好的社會聲譽和形象,也為公司的長期發展奠定了堅實的基礎。
請注意,以上故事僅為概述框架,并未詳細展開每個故事的具體情節和細節。在實際編寫時,你可以根據Data Translation Inc公司的具體發展歷程和業務特點進行進一步的補充和完善。
運算放大器在電路中發揮重要的作用,其應用已經延伸到汽車電子、通信、消費等各個領域,并將在支持未來技術方面扮演重要角色。在運算放大器的實際應用中,設計工程師經常遇到諸如選型、供電電路設計、偏置電路設計、PCB設計等方面的問題。在電子工 ...… 查看全部問答∨ |
我們平時的設計用得比較多的是74LS和74HC兩個系列的芯片。這里為大家提供一些特殊的74系列芯片資料。 主要包括16個子系列,這些子系列雖然不常用的,但卻是很有用的,如果用普通的LS和HC系列滿足不了設計需要,不妨看一看這些系列的芯片,很有可能 ...… 查看全部問答∨ |
第一個程序是:單片機與PC進行通信,用MAX232實現電平轉換,所實現功能是下載的功能,即從PC機上傳遞數據給單片機.這個程序應該怎么寫啊? 第二個程序是:DAC0832的程序,所實現功能就是,輸出電壓..就OK. 我程序實在是 ...… 查看全部問答∨ |
|
本帖最后由 dontium 于 2015-1-23 13:39 編輯 我在用TMS320F206這個芯片做電機控制,它要與PCI9054芯片相連接,但是F206沒有HPI接口,這樣互連怎樣實現,希望得到大家的指點`~謝謝` … 查看全部問答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 09:21 編輯 除電子設計大賽外,有哪些比賽啊!像什么杯之類的,有沒有,大家介紹一下啊!聊一下參賽的一下經驗啊! … 查看全部問答∨ |
單位有一臺容克式退火爐,爐內的冷凝器有時候會泄露(冷凝器內介質是水),造成整爐產品報廢,泄露很難被事前發現。如果冷凝器泄露,冷凝器中的水會流到退火爐底部的油槽中。請教各位大蝦,怎樣在線檢測油槽中的水?… 查看全部問答∨ |