久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2312|回復: 13
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機中斷的深入探索

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:825202 發(fā)表于 2023-10-24 17:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在看關(guān)于中斷的相關(guān)基礎知識點,想請教一下各位大神,關(guān)于中斷在應用,原理上的一些相對深入一些的重點知識
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:195496 發(fā)表于 2023-10-24 17:39 | 只看該作者
暫時中斷循環(huán)操作,執(zhí)行相應的中斷請求,再返回大循環(huán)程序中
回復

使用道具 舉報

板凳
ID:883242 發(fā)表于 2023-10-24 17:51 | 只看該作者
用就行了,不需要探索,事實上你也探索不出來什么。
回復

使用道具 舉報

地板
ID:57657 發(fā)表于 2023-10-24 20:39 | 只看該作者
常用中斷有定時器中斷、外部中斷、串口中斷,還有硬件SPI中斷、ADC、LVD、I2C等中斷。
回復

使用道具 舉報

5#
ID:332444 發(fā)表于 2023-10-25 07:55 | 只看該作者
這是回復題主的代碼,目的是觀察各中斷及返回用的,可以借鑒理解中斷的作用,我實踐是不會這樣寫的.
  1. #include <REG52.H>
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. bit K1=0,K2=0;//標記邏輯組合可以替代中斷優(yōu)先
  5. void Delay(unsigned int i)//延時函數(shù)                                       
  6. {      
  7.   unsigned int j;
  8.         for(;i>0;i--)               
  9.         for(j=0;j<125;j++)               
  10.         {;}//空函數(shù)                                                                       
  11. }
  12. void main()//主函數(shù)https://ask.csdn.net/questions/8011758
  13. {
  14.         unsigned char display [9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水燈顯示數(shù)據(jù)數(shù)組
  15.         unsigned char a;
  16.         EA=1;//總中斷允許
  17.         EX0=1;//允許外部中斷0中斷
  18.         EX1=1;//允許外部中斷1中斷
  19.         IT0=1;//選擇外部中斷0為跳沿觸發(fā)方式
  20.         IT1=1;//選擇外部中斷1為跳沿觸發(fā)方式
  21.         PX0=0;//外部中斷0為低優(yōu)先級
  22.         PX1=1;//外部中斷1為高優(yōu)先級  
  23.         for(;;)               
  24.         {     
  25.                 for(a=0;a<9;a++)               
  26.                 {                                               
  27.                         Delay(400);//延時,切換會延時阻塞設定時間
  28.                         P1=display[a];//已定義的流水燈顯示數(shù)據(jù)送到P1口
  29.                 }
  30.         }
  31. }
  32. void int0_isr() interrupt 0      //刪除using 0否則無法返回主函數(shù)外中斷0的中斷服務函數(shù)
  33. {
  34.         unsigned char m=0;
  35.   for(m=0;m<10;m++)//標號為偶數(shù)的LED和奇數(shù)LED交替閃爍10次
  36.   {
  37.     P1=0x55;//標號為偶數(shù)的LED燈點亮
  38.     Delay(500);//延時
  39.         P1=0xaa;//標號為奇數(shù)的LED燈點亮
  40.         Delay(500);//延時
  41.   }
  42. }
  43. void int1_isr() interrupt 2      //using 1外中斷1的中斷服務函數(shù),體現(xiàn)了中斷優(yōu)先和返回
  44. {
  45.     unsigned char n=0;
  46.   for(n=0;n<5;n++)//8位LED全亮全滅5次
  47.   {
  48.     P1=0;//8位LED全亮
  49.         Delay(500);//延時
  50.         P1=0xff;//8位LED全滅
  51.         Delay(500);//延時
  52.   }
  53. }
復制代碼



回復

使用道具 舉報

6#
ID:155507 發(fā)表于 2023-10-25 16:17 | 只看該作者
有免費教學視頻

免費教學視頻《STC USB型 真1T 8051 單片機原理及應用-STC8H8K64U》

第十三集 中斷原理及工作機制一

第十四集 中斷原理及工作機制二
回復

使用道具 舉報

7#
ID:397054 發(fā)表于 2023-10-25 16:31 | 只看該作者
xianfajushi 發(fā)表于 2023-10-25 07:55
這是回復題主的代碼,目的是觀察各中斷及返回用的,可以借鑒理解中斷的作用,我實踐是不會這樣寫的.

【刪除using 0否則無法返回主函數(shù)外中斷0的中斷服務函數(shù)】
——實際上不必刪除,只要不使用0且不使用另外一個using號就行,即兩個中斷都不能using 0,且不能相同,原理是明了的,main肯定使用的是0區(qū),中斷函數(shù)再使用0區(qū)肯定破壞了現(xiàn)場,返回是反回了,但現(xiàn)場變了。兩個中斷函數(shù)using號相同時只要不嵌套,運行是正常的,一嵌套也不行,原理相同。所以using確實是不必要的,可以都刪除。
回復

使用道具 舉報

8#
ID:624769 發(fā)表于 2023-10-26 20:09 | 只看該作者
鵜鶘 發(fā)表于 2023-10-25 16:31
【刪除using 0否則無法返回主函數(shù)外中斷0的中斷服務函數(shù)】
——實際上不必刪除,只要不使用0且不使用另 ...

Main 函數(shù)不一定是 0 區(qū), 要看你Startup 如何設置。

using 號是可以相同的。
在C中 using 號相同 僅僅是降低了效率而已。
在A中 using 號相同 會考驗你保護現(xiàn)場的能力。
回復

使用道具 舉報

9#
ID:73992 發(fā)表于 2023-10-26 21:11 | 只看該作者
中斷的普通用法的確太過于平庸,在中斷程序中修改棧內(nèi)容,并且修改中斷返回地址是高級用法。我記得在《權(quán)威指南》這本書上說藝高人膽大的人會用這種方法。我想那種樂趣應該是可以追求一下的。等手頭這個項目做完,我也要感受那種樂趣
回復

使用道具 舉報

10#
ID:397054 發(fā)表于 2023-10-27 22:02 | 只看該作者
188610329 發(fā)表于 2023-10-26 20:09
Main 函數(shù)不一定是 0 區(qū), 要看你Startup 如何設置。

using 號是可以相同的。

如果不設置呢?我上面不是說了【兩個中斷函數(shù)using號相同時只要不嵌套,運行是正常的】,但發(fā)生了嵌套會怎樣?——基本上可以肯定不正常。
回復

使用道具 舉報

11#
ID:397054 發(fā)表于 2023-10-27 22:43 | 只看該作者
188610329 發(fā)表于 2023-10-26 20:09
Main 函數(shù)不一定是 0 區(qū), 要看你Startup 如何設置。

using 號是可以相同的。

“在A中 using 號相同 會考驗你保護現(xiàn)場的能力。”

——“A”是指的什么?,“C”指的是C語言吧,用C編程,兩個不同級別的中斷使用同一個using號多半不行,5樓程序就是個實例,中斷0用的是using 0,這肯定是和主函數(shù)沖突,所以“無法返回”,改成using 2或using 3完全就正常了。所謂的“無法返回”是表面現(xiàn)象,實際上返回了,因為根本沒有理由不返回,只是返回后環(huán)境變了,CPU進入半死機狀態(tài),看著像沒返回。

“在C中 using 號相同 僅僅是降低了效率而已。”
這句話怎么理解?“降低了效率”指的是什么?原理是什么?

using 號相同可能可以,這恐怕要看編譯程序了,keil是不行的,至少我用的這個版本不行,其他的也沒用過。
在keil環(huán)境中using 號相同只要懂得這個原理,符合一定的規(guī)則也可以,即:同優(yōu)先級的中斷可以使用相同的using號,不同優(yōu)先級的中斷,只要能保證不發(fā)生中斷嵌套也沒問題——原理是很清楚的。
回復

使用道具 舉報

12#
ID:401564 發(fā)表于 2023-10-27 23:58 | 只看該作者
中斷:就是暫停當前的事件,去處理中斷事件,處理完中斷事件,再回來執(zhí)行剛才正在執(zhí)行的"當前事件"
你只要知道這個就可以了,其它的就在這個基礎之上出來的,會用就行,沒什么所謂的"探索"
很多東西都是要結(jié)合你所用的單片機的資源來搭配使用的
像STM32這種復雜的中斷系統(tǒng),你能折騰好幾天
但是,像有低端單片機,它就一個中斷源,兩層硬件堆棧,有什么能探索的?
回復

使用道具 舉報

13#
ID:624769 發(fā)表于 2023-10-28 19:42 | 只看該作者
鵜鶘 發(fā)表于 2023-10-27 22:43
“在A中 using 號相同 會考驗你保護現(xiàn)場的能力。”

——“A”是指的什么?,“C”指的是C語言吧, ...

我前文中的 C指 C51, A指 A51
C51 編程時,中斷函數(shù)后面跟的 using x 主要是用來分配 RS0~RS3 這4個通用寄存器組的。
如果你主程序 用的默認RS0,  而中斷函數(shù) 用的 RS1 (USING 1指定),則編譯后,會直接利用 PSW = 0x08, 把寄存器組切換到 RS1 組,退出中斷時,通過 POP PSW 來還原寄存器組,恢復部分現(xiàn)場。來實現(xiàn)高效率中斷。
而,如果你主程序用的 RS0, 中斷也使用 RS0 (USING 0), 那么,編譯時,KEIL會 很聰明的 把通用寄存器組的 R0~R7  依次 PUSH 的堆棧里,確保可以返回時恢復現(xiàn)場,當然,這樣的操作會降低中斷的效率。
然后,到了不同優(yōu)先級的中斷了。由于KEIL無法判斷 嵌套中斷,因此,如果低優(yōu)先級中斷,和高優(yōu)先級中斷使用相同的寄存器組,的確會產(chǎn)生低優(yōu)先級中斷的現(xiàn)場被破壞的情況。如果自己在這方面沒有把握的的話,不建議使用 using 參數(shù),可以在 設置中 用 ONEREGBANK 來屏蔽代碼中的 Using發(fā)生作用。畢竟using 的最初設計的應用場景是 基于A51的應用場景。所以在C51中,還是有不少缺陷的。
回復

使用道具 舉報

14#
ID:883242 發(fā)表于 2023-10-29 02:49 | 只看該作者
匯編有兩種寫法,教科書里面講的是absolute location,這種寫法所有變量都是作者自己指定的絕對地址,using這個關(guān)鍵字毫無意義。另一種是relocatable,變量地址都是用ds這樣的關(guān)鍵字定義的,在匯編期間變量地址都不確定,只有連接期間才會確定,using這個關(guān)鍵字是讓linker回避已經(jīng)使用過的register bank用的,但是這種寫法沒見過中文書籍講解,只能查C51的幫助文件,講匯編的那個。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 9191av| 国产精品高潮呻吟 | 亚洲日本一区二区三区四区 | 国产在线视频一区 | 亚洲一区二区三区视频 | 久久久99精品免费观看 | 免费黄色av网站 | 国久久 | 99资源| 欧美成人aaa级毛片在线视频 | 91精品久久久久久久久 | 久久久精品亚洲 | 日韩视频中文字幕 | 欧州一区二区三区 | 精品自拍视频 | 91精品久久久久久久久久入口 | 日韩精品二区 | 妞干网福利视频 | 成人高清视频在线观看 | 精品视频久久久 | 九九久久精品 | 精品国产欧美 | 国产精品18久久久久久白浆动漫 | 久久久久国产精品一区二区 | 99精品免费 | 国产一区三区视频 | 日本一区二区高清不卡 | 国产97人人超碰caoprom | 韩国av一区二区 | 99这里只有精品视频 | 国产精品成人免费 | 亚洲综合五月天婷婷 | 欧美片网站免费 | 午夜影院在线观看 | 久久国产三级 | 国产精品电影在线观看 | 久久不卡 | 亚洲一区二区三区在线视频 | 国产成人久久精品一区二区三区 | 91文字幕巨乱亚洲香蕉 | 精品综合久久 |