1樓:沙支誇依
首先你要清楚的認識到,51微控制器不同於x86、arm這樣的cpu或微控制器,51微控制器的程式儲存空間和記憶體空間編址是分離的。
明白了這一點,你的第二個問題就非常容易了:中斷入口地址0003h是在rom也就是程式儲存空間裡的編址。而工作暫存器r3是記憶體空間ram的編址。
所以,雖然都是0003h地址編碼,但是對映的是不同的儲存空間哦!!相應用在51微控制器中有不同的彙編指令對其取址操作。
其次,你應該看一下ea訊號的用法。如果你知道了ea的用法,你就明白你第一個問題的答案了。
1、51微控制器片內是有4k程式儲存器,但這是因為工藝原因造成的,並不是說51微控制器只能支援4k程式儲存區。別忘記了程式儲存器指標可是16位的哦。也就是說,51微控制器支援的程式儲存區最大是64k.
2、因為受工藝限制51微控制器只有4k程式儲存器。如果程式大於4k怎麼辦?當然就需要你外擴rom了。
於是ea引腳就派上用場了:片內、片外rom空間地址0000h~0fffh(4k)是重疊的,換句話說,片內程式空間編址是0000h~0fffh(這個好理解),而片外程式空間開始的4k地址也是0000h~0fffh(和片內的4k重複了)。即然重複了,在使用0000h~0fffh地址的時候,怎麼區分呢?
於是ea訊號解決了這個問題,當ea接高電平是,51微控制器會自動從片內取。當ea接低電平時,51微控制器會自動從片外取。。。如果地址是超過0fffh的地址呢?
不用說,微控制器會自動從片外取的。
說了這麼多,不知道樓主看懂沒有。不要看我說的囉嗦,不過我自認為講的還算是比較淺顯易懂了。希望對樓主有所幫助!
2樓:匿名使用者
那就是從外部儲存器開始讀寫,看看微控制器系統板上有沒有接儲存器!希望可以給你建議!
3樓:匿名使用者
沙支誇依:說的非常不錯,如果這樣你都還不理解,那你就不用搞微控制器了。轉行吧。
4樓:1顆自私的心
org 2000h 是在進入主程式之前跳過中斷。
中斷有五種想必你也知道。
而最後一個是序列口中斷 地址是0023h
跳過這個地址就行 也可是0024h
這個沒有具體的限制。
5樓:匿名使用者
(1)看來是你沒有搞清楚51微控制器的儲存空間,51微控制器的儲存空間有四個(最多),片內ram(一般是256位元組,分低128位元組和高128位元組,低128位元組是使用者可以使用的ram空間,高128位元組是sfr(有保留空間),還有,51系列的高128位元組與52系列的有差別)、片外ram(需要擴充套件)、片內rom(在這裡指的是flash)、片外rom。
(2)ram 的作用是存放運算的資料或者暫存器賦值進行定時、工作方式、波特率等的配置(sfr),rom的作用存放程式。
(3)org 2000h是彙編語句,作用是從程式空間為2000h的地址開始安排程式的存放,要看你選用的型號的51微控制器的內部flash到底是多少(看手冊確認一下),若沒有這麼大看是否有外擴的rom,不然的話這個語句是有問題的。
(4)中斷入口地址0003h,是外部中斷0的入口地址,放在程式儲存器(flash)中,而非你理解的內部ram中,所以所以不會和工作暫存器r3重合。
希望對你有所幫助!
6樓:庫琅蘇舉
不同的型號不同,可以下微控制器的命名規則!就會知道對應的儲存量!
7樓:網友
片記憶體儲器跟暫存器地址沒有任何關係,除了4k的,還有8k,16k,32k,64k各種儲存容量的。
微控制器內部電路是怎麼設計出來的?
說白了也是普通電路,原理都是一樣的,只是採用微技術,比如鐳射蝕刻等方式。很早以前的積體電路,體積都是比較大的,就好比現在的電路板一樣,你把它封裝起來,就等於一個積體電路。隨著奈米技術的應用,體積會越來越小,但原理都是一樣的,設計好電路,生產核心,然後封裝。這個問題,可有得複雜了,要真按你所想的來闡述...
微控制器計時器
65536 10000 256 意思是 括號內的相減結果,即微控制器定時器的預裝時間常數x,x 256 意思是整除取商,目的是取x的二進位制數高8位,裝入th1 x 256 意思是整除取餘,目的是取x的二進位制數低8位,裝入tl1。1 用at89c51微控制器的定時 計數器t0產生一秒的 定時時間,...
微控制器定時器 問題
做一個時鐘,24小時一個迴圈週期,每個分度的時間長短根據實際情況定。時鐘工作在定時器中斷子程式裡,主程式不斷和時鐘對時,如果符合設定值就開通電機。下面的程式你參考下,裡面具體的值我沒算過,你自己算下改了吧。如果分頻暫存器不夠按我的演算法加。別說不會哦。org 00h ljmp start org 0...