51微控制器中的中斷服務程式後面的using使用的暫存器有什麼作用

2021-03-22 02:18:15 字數 5187 閱讀 1410

1樓:匿名使用者

你好,tmod結構:用於設定定時/計數器工作方式,高4位控

制位t1,低4位控制t0,不可位定址;直接tmod=0x11;就是把t1和t0都設定成16位定時器,細節可看這裡,http://wenku.baidu.

微控制器中斷 的interrupt 0 using 1中的using有什麼作用

2樓:

看到樓上二位說的有誤,特糾正。

void int0()interrupt 0 using 1

interrupt 0 指明是外部中斷0;

interrupt 1 指明是定時器中斷0;

interrupt 2 指明是外部中斷1;

interrupt 3 指明是定時器中斷1;

interrupt 4 指明是序列口中斷;

using 0 是第0組暫存器;

using 1 是第1組暫存器;

using 2 是第2組暫存器;

using 3 是第3組暫存器;

51微控制器內的暫存器是r0--r7(不是r0-r3)

r0-r7在資料儲存器裡的實際地址是由特殊功能暫存器psw裡的rs1、rs0位決定的。

using 0時設定 rs1=0,rs0 =0,用第0組暫存器,r0--r7的在資料儲存區裡的實際地址是00h-07h。r0(00h)....r7(07h)

using 1時設定 rs1=0,rs0 =1,用第1組暫存器,r0--r7的在資料儲存區裡的實際地址是00h-07h。r0(08h)....r7(0fh)

using 2時設定 rs1=1,rs0 =0,用第2組暫存器,r0--r7的在資料儲存區裡的實際地址是08h-0fh。r0(10h)....r7(17h)

using 3時設定 rs1=1,rs0 =1,用第3組暫存器,r0--r7的在資料儲存區裡的實際地址是00h-07h。r0(18h)....r7(1fh)

3樓:匿名使用者

using 0 是第

0組暫存器。

using 1 是第1組暫存器。

using 2 是第2組暫存器。

using 3 是第3組暫存器。

using 0時設定 rs1=0,rs0 =0,用第0組暫存器,r0--r7的在資料儲存區裡的實際地址是00h-07h。r0(00h)....r7(07h)。

using 1時設定 rs1=0,rs0 =1,用第1組暫存器,r0--r7的在資料儲存區裡的實際地址是00h-07h。r0(08h)....r7(0fh)。

using 2時設定 rs1=1,rs0 =0,用第2組暫存器,r0--r7的在資料儲存區裡的實際地址是08h-0fh。r0(10h)....r7(17h)。

using 3時設定 rs1=1,rs0 =1,用第3組暫存器,r0--r7的在資料儲存區裡的實際地址是00h-07h。r0(18h)....r7(1fh)。

4樓:匿名使用者

using是區分使用哪一組工作暫存器組的,51微控制器有4個工作暫存器組的,每個8位元組,一共32個位元組,

5樓:匿名使用者

一般51微控制器會有4組暫存器從r0到r3

using 1的意思就是0中斷會用到第一組暫存器

微控制器中斷系統函式的interrupt後面的using幾是什麼回事啊?

6樓:胃火神

有四組工作暫存器,using只是說明用哪組暫存器,以免衝突!

7樓:匿名使用者

51微控制器中有好幾組暫存器,在這裡用using指定中斷中使用哪一組暫存器。

8樓:昝蝶欒歌

不加using的話,

預設是第一組暫存器r0~

r7,跟主程式中使用同一組暫存器

這樣的話,

進中斷後要儲存的暫存器就多了8個了,

哦,這個是c語言自己處理的,

速度上就要慢了一點,

在一些需要實時中斷的地方,

有可以會出現問題

51微控制器中斷interrupt……using……的用法

9樓:五棟五零二

c51微控制器編譯器在編譯程式時會自動分配工作組,通常省略不寫,沒有預設使用哪組,如果你要知道使用哪組,你可以用using自己分配一個啊。

10樓:匿名使用者

不加using的話, 預設是第一組暫存器 r0 ~ r7 , 跟主程式中使用同一組暫存器

這樣的話, 進中斷後要儲存的暫存器就多了8個了, 哦, 這個是c語言自己處理的, 速度上就要慢了一點, 在一些需要實時中斷的地方, 有可以會出現問題

11樓:匿名使用者

在使用using的時候,中斷中呼叫的函式要和中斷用到的暫存器組儲存一致,這樣資料才不容易出錯。或者不註明暫存器,將函式中的變數變成全域性變數或者用volatile宣告區域性變數。中斷中還是要注意變數的個數不能太多。

12樓:匿名使用者

這個具體不是很清楚,我好像都是不用using的

微控制器c語言中斷中後using 0--3寫的話有什麼作用

13樓:

using x用來修飾函式,但一般只用來修飾終端函式

如果你的終端服務程式使用了暫存器r0-r7,那麼通常做法是把這些暫存器入棧

然後你用他們,中斷返回的時候再出棧復原,但是這麼做會花很多時間在棧操作上

對響應時間要求嚴格的程式,可以用using指定一個沒人用過的暫存器bank

這樣就不用保護暫存器資訊了,可以縮短終端處理時間

使用using一定要保證沒有其他優先順序的中斷和使用者程式使用同樣的暫存器組,

也沒有任何程式使用這個暫存器組所在地址,否則回出問題

51微控制器中using的用法

14樓:修者世界

51微控制器中using使用在c51程式設計中,用來在中斷函式中指定工作暫存器區,工作暫存器共有4個區,分別代表r0~r7地址是:

第0工作區:00h~07h

第1工作區:08h~0fh

第2工作區:10h~17h

第3工作區:18h~1fh

using n,那麼n就是第幾區,使用方法如下:

void exterint0() interrupt 0 using 1

這表示外部中斷0使用第1工作區地址。

15樓:匿名使用者

其實上面的話說得很清楚了,微控制器在進入中斷之前,是要先進行現場保護的,有一些暫存器是微控制器進入中斷時自己壓入堆疊的,但在程式裡邊所用到暫存器r0-r7是不會自動壓入堆疊,而是用程式來實現的,這就會佔用cpu時間和flash空間。你用c語言寫微控制器中斷程式,這些程式**是由編譯軟體自動完成的。

如果你的中斷函式和別的函式使用的是不同的暫存器組,那麼編譯軟體就不會自動新增暫存器壓棧和出棧**。這當然就省時省**了噻。

微控制器中斷:interrupt 0 using 1後面的using 1是什麼意思

16樓:龍魂胖子

是指這個中斷函式使用微控制器記憶體中四組工作暫存器中的哪一組,c51編譯器在編譯程式時會自動分配工作組,因此using x這句經常不寫。

17樓:匿名使用者

二樓說的對 就是一個工作暫存器,存取資料比較方便,自動分配,好多情況下都不寫

18樓:匿名使用者

中斷向量1的意思吧

你檢視微控制器晶片的 資料手冊 裡面中斷的章節寫著 中斷向量1戴錶的是什麼中斷的

19樓:伏霞經翊君

using是區分使用哪一組工作暫存器組的,51微控制器有4個工作暫存器組的,每個8位元組,一共32個位元組,

微控制器中斷暫存器的作用是什麼?

20樓:匿名使用者

中斷暫存器就是用於存貯中斷狀態的 包含是否啟用中斷 或者是 是否發生中斷

#include

void inituart(void)

void sendonebyte(unsigned char c)void main(void)

void uartinterrupt(void) interrupt 4

else

ti = 0;}

21樓:匿名使用者

中斷時暫存器把中斷前的地址存起來,等到中斷結束再取出繼續前程式

51微控制器中工作暫存器作用是什麼?

22樓:人設不能崩無限

簡單的說是用來存放資料的。

51微控制器是對所有相容intel 8031指令系統的微控制器的統稱。該系列微控制器的始祖是intel的8004微控制器,後來隨著flash rom技術的發展,8004微控制器取得了長足的進展,成為應用最廣泛的8位微控制器之一,其代表型號是atmel公司的at89系列。

它廣泛應用於工業測控系統之中。很多公司都有51系列的相容機型推出,今後很長的一段時間內將佔有大量市場。51微控制器是基礎入門的一個微控制器,還是應用最廣泛的一種。

需要注意的是51系列的微控制器一般不具備自程式設計能力。

23樓:匿名使用者

簡單的說是用來存放資料的。至於作用嘛,很多,比如djnz r*,loop;

inc r*;

dec r*;

cjne r*,#**h;等。另外r0,r1,可以用來間接定址,mov a,@r0,當r0=20h,20h代表的是地址值,執行這條批令後;a的值不是20h,而是20h單的值。

別外我們可以設定rs0,rs1,這個兩個位來切換工作暫存器。00,01,10,11,是4個不同的工作區。這樣我們在某些情況下不用

push

pop就可以保護工作暫存器的值,會提高掃行效率

24樓:匿名使用者

r0,r1 支援暫存器定址,可以當高階語言中的指標用

r2-r7 一般用來存資料,相當於高階語言中的普通變數

因為51支援四組工作暫存器切換,所以r0-r7可以在不同子程式,中斷程式中使用不同的組,避免當前工作引數被其它子程式或中斷改變,相當於高階語言中的區域性變數.

微控制器中斷問題,51微控制器外部中斷問題

不太明白你問的問題。t0還有空間呢?如果想在t0中斷內增加程式,也是可以的,長度和t0沒有關係,只要微控制器的儲存空間夠就可以了。儘量不要在中斷中執行程式,會影響整個流程的合理性。所以一般只在中斷中設定標誌。微控制器的中斷入口都是排列在地址的最低端的,分別為0003,000b,0013,001b,0...

關於51微控制器中斷程式的一個問題

include unsigned char countsecond 計到20為1s unsigned int second 秒。void initial t0 void timer0 interrupt 1 using 0void main second 0 如果中斷則清0 51微控制器外部中斷的觸...

51微控制器模組化,中斷服務函式 在main c中 所提供的值,能不能被其他 c檔案呼叫?怎麼呼叫

樓上已經說了。跨檔案 跨模組的全域性變數引用,引用方在宣告該全域性變數 函式時,需要在前面加上extern關鍵字,這樣編譯器才會知道 哦,這個名字在這個檔案不一定有宣告,要把所有檔案編譯了也許才能找到 可以,但要在變數前加extern c51微控制器的中斷操作,與直接在主函式內寫入中斷服務程式有什麼...