98国产精品综合一区二区三区,国产福利视频,男人添女人囗交做爰视频,日本免费一区二区三区视频观看

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術(shù)中心 >> 單片機入門 >> 單片機中斷應用的C語言編程

單片機中斷應用的C語言編程

作者:admin 來源:不詳 發(fā)布時間:2018-05-08  瀏覽:24

C51編譯器支持在C源程序中直接開發(fā)中斷程序,從而減輕了采用匯編語言編寫中斷服務程序的繁瑣程度。為了滿足在C語言源程序中直接編寫中斷服務程序的需要,C51編譯器對函數(shù)的定義進行了擴展,增加了一個擴展關(guān)鍵詞interrupt。他是函數(shù)定義式的一個選項,加上這個選項即可以將一個函數(shù)定義成中斷服務函數(shù)。定義中斷服務函數(shù)的語法格式如下:

返回值類型 函數(shù)名(  )interrupt m [using n]<?XML:NAMESPACE PREFIX = O /> 
         { 
                            函數(shù)體 
         }

關(guān)鍵詞interrupt后面的m是中斷號,m的取值為0~31的正整數(shù),編譯器從8m+3處產(chǎn)生中斷向量,具體的中斷號m和中斷向量取決于80C51,80C51中斷源編號見表。80C51單片機可以在片內(nèi)RAM中使用4個不同的工作寄存器組,每個寄存器組中包含8個寄存器(R0~R7)。C51編譯器擴展了一個關(guān)鍵字using,專門用來選擇不同的工作寄存器組。using

表 80C51單片機中斷源編號

編號

中斷源

入口地址

編號

中斷源

入口地址

0

外部中斷0

0003H

3

定時/計數(shù)器1

001BH

1

定時/計數(shù)器0

000BH

4

串行口中斷

0023H

2

外部中斷1

0013H

 

 

 

后面的n是一個0~3的常整數(shù),分別選中4個不同的工作寄存器組。在定義一個函數(shù)時,using是一個選項,如果不用該選項,則由編譯器自動選擇一個寄存器組訪問。需要注意的是,關(guān)鍵字using和interrupt的后面都不允許跟帶運算符的表達式。

關(guān)鍵字using對函數(shù)目標代碼的影響如下:

在函數(shù)的入口處將當前工作寄存器組保護到堆棧中,指定的工作寄存器內(nèi)容不會改變;函數(shù)退出之前將被保護的工作寄存器組從堆棧中恢復。

使用關(guān)鍵字using在函數(shù)中確定一個工作寄存器組時必須小心,要保證任何寄存器組的切換都在控制之下,否則將產(chǎn)生不確定的函數(shù)結(jié)果。另外還要注意,帶using屬性的函數(shù)原則上不能返回bit類型的值,并且關(guān)鍵字using不允許用于外部函數(shù)。

關(guān)鍵字interrupt也不允許用于外部函數(shù),它對中斷函數(shù)目標代碼的影響如下:

在進入中斷函數(shù)時,特殊功能寄存器ACC、B、DPH、DPL、PSW將被保存入棧,如果不使用using進行工作寄存器組的切換,則將中斷函數(shù)中所用到的全部工作寄存器都入棧保護,在函數(shù)退出之前恢復,中斷函數(shù)由RETI指令結(jié)束。

編寫80C51單片機中斷函數(shù)時應遵循以下原則:

①中斷函數(shù)不能進行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明,都將導致編譯出錯。

②中斷函數(shù)沒有返回值,如果企圖定義一個返回值,將得到不正確的結(jié)果。因此建議在定義中斷函數(shù)時將其定義為void類型,以明確說明沒有返回值。

③在任何情況下,都不能直接調(diào)用中斷函數(shù),否則會產(chǎn)生編譯錯誤。因為中斷函數(shù)的退出是由80C51單片機指令RETI完成的,RETI指令影響80C51單片機硬件中斷系統(tǒng)。如果在沒有實際中斷請求的情況下直接調(diào)用中斷函數(shù),則RETI指令的操作結(jié)果會產(chǎn)生一個致命的錯誤。

④如果在中斷函數(shù)中調(diào)用了其他函數(shù),則被調(diào)用函數(shù)所使用的寄存器組必須與中斷函數(shù)相同。用戶必須保證按要求使用相同的寄存器組,否則會產(chǎn)生不正確的結(jié)果,這一點必須注意。如果定義中斷函數(shù)時沒有使用using選項,則由編譯器自動選擇一個寄存器組。另外,由于中斷的產(chǎn)生不可預測,中斷函數(shù)對其他函數(shù)的調(diào)用可能形成遞歸調(diào)用,需要時可將被中斷函數(shù)所調(diào)用的其他函數(shù)定義成再入函數(shù)。

⑤C51編譯器從絕對地址8m+3處產(chǎn)生一個中斷向量,其中m為中斷號。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。

下面給出一個中斷編程實例。

例 用C語言編寫例6-4的程序

分析:假設中斷源A、B、C、D都沒有中斷,皆為高電平;若有一個產(chǎn)生中斷,通過四或門在INT1引腳產(chǎn)生低電平,因為在主程序中已開放了中斷,所以就會執(zhí)行中斷服務程序把flag設置為1,主程序判斷flag=1,就會根據(jù)P1的低位來判斷哪一位為低,即哪一個中斷源產(chǎn)生中斷。

C51參考程序如下:

編輯:admin  最后修改時間:2018-05-08

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2025 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

亚洲精品区无码欧美日韩| 成人亚洲a片v一区二区三区蜜月| 欧美喷潮久久久xxxxx| 国产乱妇无码大片在线观看| 久久精品人妻少妇一区二区三区| 一本加勒比hezyo东京热高清| 边做边爱mp3在线播放免费观看| 娇妻被交换粗又大又硬无| 亚洲国产精品久久久久爰色欲| 国产偷国产偷亚洲高清app| 梦精爱2| 国产精品99无码一区二区| 国内精品卡一卡二卡三| 欧美激情性做爰免费视频| 丰满多毛的大隂户乱| 国产精品成人第一区二区三区| 凹凸国产熟女精品视频国语| 极品少妇被猛得白浆直流草莓视频| 色妞ww精品视频7777| 亚洲精品无码国产| 免费真人视频网站直播下载| 老师在办公室里给我开除了| 按摩男让我高潮做了3次正常吗| 偷窥美女洗澡一区二区三区| 琪琪婷婷五月色综合久久| 久久久96人妻无码精品蜜桃| 久激情内射婷内射蜜桃| japan高清日本乱xxxxx| 女女互磨互喷水高潮les呻吟| 校花不着寸缕的跪趴在地下视频| 无人区一码二码三码四码区| 熟女大屁股白浆一区二区| 农村熟女xxxxhd做受| 两个男用舌头到我的蕊花| 免费a级毛片在线播放不收费| 男宠被强制灌水锁精憋尿| 男人添女人下部高潮全视频| 亚洲成a人片在线观看| 亚洲 欧美 激情 小说 另类| 去男朋友宿舍被室友4p| 日本理论片|