女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]  C51的中斷函數(shù)的格式為:  voidFuncIr(void)interruptx[usingy]  以下是夢游的一些分析:  一、中斷函數(shù)是一個特殊的函數(shù),沒有參數(shù),也沒有返回值;但是程序中允不允許使用return呢?答案是允許的,不過只

  C51的中斷函數(shù)的格式為:

  voidFuncIr(void)interruptx[usingy]

  以下是夢游的一些分析:

  一、中斷函數(shù)是一個特殊的函數(shù),沒有參數(shù),也沒有返回值;但是程序中允不允許使用return呢?答案是允許的,不過只能用"return;",不能用"return(z);";用在一些需要快速返回的地方,對應(yīng)的匯編會有多個ret語句,相對效率會高一些。

  二、using的用法,using可以修飾任何函數(shù),不過個人建議只用來修飾中斷函數(shù);簡單的說,“using”會指定工作寄存器組,由于中斷函數(shù)一般都是比較緊急的事情,有時一條語句都會斤斤計較,所以使用using切換寄存器組可以省去一些壓棧的動作,由于51只有兩級中斷,同級中斷不能被打斷,因此,我們可以同級中斷設(shè)成同樣的寄存器組,從某種意義上來說,有一組寄存器是多余的。同時個人建議中斷函數(shù)應(yīng)該使用using這個關(guān)鍵字。

  三、中斷中調(diào)用函數(shù),首先要討論中斷函數(shù)中調(diào)用函數(shù)的必要性,前天在論壇上我和別人爭論過這個問題,現(xiàn)在我還是這個觀點:有些情況中斷中調(diào)用函數(shù)還是必要的,這個時候是不是該調(diào)用函數(shù),其實和普通函數(shù)差不多,首先是這個函數(shù)如果調(diào)用多次,或者要帶一些參數(shù)什么的就更加必要的;前天有人跟我叫勁,說假如只調(diào)用一次且無參數(shù)無返回的函數(shù)要直接寫,因為如果用函數(shù),至少會增加CALL和RET兩條語句,我不敢茍同,我是實際調(diào)試發(fā)現(xiàn)的,當(dāng)你程序比較復(fù)雜時,你將那部分單獨拉出來做成函數(shù),可能代碼和時間都會更好。

  四、中斷中調(diào)用的函數(shù)最好不要被中斷外的其它函數(shù)調(diào)用,因為會出現(xiàn)“重復(fù)調(diào)用”的警告,有時這種調(diào)用是很致命的,有人說這個函數(shù)可以用reentrant來修飾,是的,的確可以這樣解決,不過個人不建議這么做,也許這樣會跟你減少很多堆??臻g,并且整個程序的優(yōu)化要差很多,個人建議出現(xiàn)這種情況就把這個函數(shù)寫兩遍,分成兩個函數(shù)分別調(diào)用。


  五,中斷調(diào)用了函數(shù),會出現(xiàn)一些莫名其妙的問題,一些數(shù)據(jù)不對。其實一般是因為匯編中使用了絕對寄存器引起的,有人說中斷函數(shù)使用那個寄存器組,被中斷調(diào)用的

函數(shù)就使用哪個寄存器組,我認(rèn)為這樣不好, 這樣會增加額外的消耗,使用using會增加一下語句:
  PUSH PSW
  MOV PSW, #XX
  ....
  POP PSW
  更重要的是,使用using的函數(shù)不能有返回值,這是致命傷

  個人推薦的方法有兩種:
  1、使用“#pragma NOAREGS”禁止使用絕對寄存器
  2、使用“#pragme RB(x)”來指定本文件的工作寄存器組
  六、一般說來,要求中斷函數(shù)盡可能的短,但也有特殊情況,有些前/后臺的系統(tǒng)中,就會把很多相對重要的事情放到定時中斷(這個定時中斷類似實時操作系統(tǒng)中的時鐘節(jié)拍)去做,而且程序很長。我單獨提出來這點是想告訴大家,中斷函數(shù)也是一個函數(shù)而已,只要系統(tǒng)有必要,可以做一些看似不合理的事情,該出手時就出手,就像goto語句一樣。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

今天要學(xué)習(xí)的是獨立看門狗,看門狗電路的應(yīng)用,使單片機可以在無人狀態(tài)下實現(xiàn)連續(xù)工作,其 工作原理是:看門狗芯片和單片機的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的 這個引腳上送入高電平(或低電平),這一...

關(guān)鍵字: 看門狗 中斷函數(shù) 單片機

單片機內(nèi)部有很多的特殊功能寄存器,每個寄存器在單片機內(nèi)部都分配有唯一的地址,一般我們會根據(jù)寄存器功能的不同給寄存器賦予各自的名稱,當(dāng)我們需要在程序中操作這些特殊功能寄存器時,必須要在程序的最前面將這些名稱加以聲明,聲明的...

關(guān)鍵字: C51 數(shù)據(jù)類型 擴充定義

數(shù)據(jù)元(Data Element),也稱為數(shù)據(jù)元素,是用一組屬性描述其定義、標(biāo)識、表示和允許值的數(shù)據(jù)單元,在一定語境下,通常用于構(gòu)建一個語義正確、獨立且無歧義的特定概念語義的信息單元。數(shù)據(jù)元可以理解為數(shù)據(jù)的基本單元,將若...

關(guān)鍵字: C51 數(shù)據(jù)類型

▼點擊下方名片,關(guān)注公眾號▼歡迎關(guān)注【玩轉(zhuǎn)單片機與嵌入式】公眾號,回復(fù)關(guān)鍵字獲取更多免費資料?;貜?fù)【加群】,限時免費進入知識共享群;回復(fù)【3D封裝庫】,常用元器件的3D封裝庫;回復(fù)【電容】,獲取電容、元器件選型相關(guān)的內(nèi)容...

關(guān)鍵字: C51 MDK RealView

在Keil C51軟件中51單片機的中斷服務(wù)和外設(shè)驅(qū)動程序的開發(fā)

關(guān)鍵字: keil5 編譯 C51

Intel公司1980年推出了MCS-51系列單片機:集成 8位CPU、4K字節(jié)ROM、128字節(jié)RAM、4個8位并口、1個全雙工串行口、2個16位定時/計數(shù)器。尋址范圍64K,并有控制功能較強的布爾處理器。 80C5...

關(guān)鍵字: C51 KEIL 編程

c上標(biāo)3下標(biāo)5怎么算用計算機,c上標(biāo)3下標(biāo)5怎么算

關(guān)鍵字: C51 KEIL

▼點擊下方名片,關(guān)注公眾號▼大家好,很高興和各位一起分享我的第16篇原創(chuàng)文章,喜歡和支持我的工程師,一定記得給我點贊、收藏、分享。加微信[xyzn3333]與作者溝通交流,免費獲取更多單片機與嵌入式的海量電子資料。很多初...

關(guān)鍵字: 51單片機 C51

??匆姵鯇W(xué)者要求使用_at_,這是一種謬誤,把C當(dāng)作ASM看待了。在C中變量的定位是編譯器的事情,初學(xué)者只要定義變量和變量的作 用域,編譯器就把一個固定地址給這個變量。

關(guān)鍵字: C51 單片機 誤區(qū) 注意事項

簡介:編程首要是要考慮程序的可行性,然后是可讀性、可移植性、健壯性以及可測試性。這是總則。但是很多人忽略了可讀性、可移植性和健壯性(可調(diào)試的方法可能歌不相同),這是不對的。

關(guān)鍵字: C51 編程規(guī)范 文件配置
關(guān)閉