最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

51單片機(jī)interrupt和using使用詳解

2023-04-30 21:13 作者:若水魚閣  | 我要投稿

51單片機(jī)中的中斷中出現(xiàn)了using?1,這是什么意思?我也是查了幾天資料,終于弄明白了,給大家分享一下,using n是工作寄存器組切換開關(guān),工作寄存器組與BANK是一個(gè)概念;

? ? ? 51的工作寄存器R0-R7共有4組,分別是BANK0、BANK1、BANK2、BANK3,在任何時(shí)刻,只有一個(gè)工作組生效!這4個(gè)組在RAM中的位置分別是[00H,07H]、[08H,0FH]、[10H,17H]、[18H,1FH],換句話說,RAM中的00H地址、08H地址、10H地址、18H地址,這四個(gè)地址的名字都叫R0,那么,在匯編中,我們經(jīng)??吹筋愃芃OV R0,#07這樣的語句,這個(gè)#07到底別放到了RAM的哪個(gè)地址中去了呢?00H?08H?10H?18H?到底是這4個(gè)中的哪一個(gè),取決于51的PSW寄存器的RS1和RS0兩個(gè)位,若PSW.RS=2就意味著第二組工作寄存器生效,R0的地址就是10H。

51在上電后,PSW的RS兩個(gè)位默認(rèn)為0,也即51默認(rèn)使用的工作寄存器組BANK 0,在默認(rèn)狀態(tài)下,對(duì)于普通的C語言函數(shù),其傳參、申請(qǐng)局部變量、導(dǎo)出函數(shù)的返回值等功能,keil將其翻譯成匯編后,肯定要使用R0-R7;對(duì)于51的中斷服務(wù)函數(shù),雖然沒有形參,也不用返回值,但是一般肯定有局部變量,這時(shí)就需要用到R0-R7了;試想,在執(zhí)行普通函數(shù)時(shí),默認(rèn)工作寄存器組BANK 0 的R0-R7已經(jīng)被使用了,在執(zhí)行普通函數(shù)時(shí),一旦發(fā)生中斷,而中斷函數(shù)也需要使用R0-R7,怎么辦?

我們能想得到是,在執(zhí)行中斷服務(wù)函數(shù)前把R0-R7入棧,中斷服務(wù)完成后再把R0-R7出棧恢復(fù)現(xiàn)場(chǎng),這樣工作量很大;

普通函數(shù)的執(zhí)行過程中,正在使用BANK0的R0-R7,執(zhí)行過程中,突然發(fā)生了中斷,而中斷函數(shù)也想使用R0-R7,在執(zhí)行中斷服務(wù)函數(shù)前,我們切換工作寄存器組,切換的具體方法就是直接修改PSW的RS兩個(gè)比特位,而不必把BANK0入棧,本文開頭的例子中using 2 就是說,在進(jìn)入外部中斷0的服務(wù)函數(shù)前,先入棧CPU寄存器,再把工作寄存器組由0切換成2,在退出中斷服務(wù)后,先由BANK2切換回BANK0,并彈出CPU寄存器,由于BANK0和BANK2處在不同的RAM空間,互不干擾,切換回BANK0之后,就把那個(gè)普通函數(shù)的現(xiàn)場(chǎng)給恢復(fù)了。


51單片機(jī)interrupt和using使用詳解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
迁西县| 铜梁县| 红安县| 丰顺县| 井陉县| 临朐县| 独山县| 青冈县| 乌兰察布市| 满洲里市| 兰西县| 鹤峰县| 武邑县| 建平县| 桐乡市| 东光县| 金塔县| 栾城县| 潍坊市| 益阳市| 长春市| 秀山| 晋宁县| 察哈| 五莲县| 习水县| 襄城县| 平果县| 梓潼县| 鄂州市| 囊谦县| 蒲城县| 银川市| 明水县| 阳西县| 车险| 兴业县| 东至县| 昭觉县| 电白县| 富蕴县|