機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
幾個(gè)中斷函數(shù)寫法的比較
幾個(gè)中斷函數(shù)寫法的比較
 更新時(shí)間:2008-7-27 16:00:45  點(diǎn)擊數(shù):4
【字體: 字體顏色
 
寫單片機(jī)程序,中斷是免不了的。我比較喜歡用C寫單片機(jī)程序,簡(jiǎn)單而且可讀性高,當(dāng)然程序效率沒有匯編的高。目前寫過51單片機(jī)跟AVR單片機(jī)的C程序,最近在看MSP430的書。用C寫不同的單片機(jī)程序其實(shí)都是大同小異,因此能對(duì)不熟悉的單片機(jī)也能很快上手寫程序。不過中斷函數(shù)的寫法,各個(gè)編譯器往往都會(huì)有些差別。
      最早寫的C程序是51單片機(jī)的,用的編譯器自然是大名鼎鼎的keil c了。Keil的功能還是非常強(qiáng)勁的,不僅能編譯,還有軟件仿真調(diào)試與硬件調(diào)試的功能。由于條件簡(jiǎn)陋,沒用過什么仿真器,一直都是靠軟件仿真調(diào)試程序的。Keil 中的中斷函數(shù)一般格式如下:
       void 函數(shù)名() interrupt n using n
       {
              …….
       }
       其中函數(shù)名可以任意取,關(guān)鍵字interrupt用來指明這是一個(gè)中斷服務(wù)函數(shù),后面的n表示中斷號(hào),關(guān)鍵字using加后面的n表示使用哪一組寄存器。
       后然接觸到AVR的單片機(jī),該單片機(jī)開發(fā)環(huán)境一般用ICC或者是GCC。由于ICC是商用軟件,而GCC是免費(fèi)的,因此我一般用GCC來寫AVR的C程序,F(xiàn)在版本的GCC for AVR有了一些改進(jìn),對(duì)于中斷函數(shù)支持兩種關(guān)鍵字ISR與SIGNAL,其格式如下:
       ISR(vect)
       {
              ………
       }
SIGNAL(vect)
{
       ……..
}
其中的vect就是中斷向量名,根據(jù)不同的型號(hào)的AVR單片機(jī)的不同的中斷源都會(huì)有相對(duì)應(yīng)的中斷向量名,比如外部中斷0對(duì)于ISR格式的中斷向量名為INT0_vect,對(duì)SIGNAL則為SIG_INTERRUPT0。
最近在看TI的MSP430系列單片機(jī)的資料,看到該單片機(jī)采用C430寫的中斷服務(wù)函數(shù)有點(diǎn)像前兩種的綜合,其格式如下:
interrupt [vect] void 函數(shù)名(void)
{
       …….
}
其中vect也是中斷向量名,函數(shù)名可以任取。
比較這幾種中斷函數(shù)寫法,本人更傾向于AVR的GCC的寫法。首先對(duì)于中斷函數(shù)來說即不能有輸入?yún)?shù)又沒有返回值,沒必要再給它加個(gè)“void 函數(shù)名(void)”的形式的函數(shù)。而且光看中斷向量名一般都能知道是哪個(gè)中斷源產(chǎn)生,再寫個(gè)中斷函數(shù)名作解釋似乎有點(diǎn)重復(fù)。對(duì)于keil c用中斷向量號(hào)的形式來表示中斷源,感覺有點(diǎn)麻煩,記住中斷源的中斷號(hào)比記中斷向量要難多了。不過可能標(biāo)準(zhǔn)51的中斷緣比較少,而且keil應(yīng)該出來的比較早,所以才會(huì)采用這種方式。
  • 上一篇: 240x128液晶T6963控制器驅(qū)動(dòng)程序(C51)
  • 下一篇: 關(guān)于C語言靜態(tài)變量static
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1