1樓:匿名使用者
理論上定時器0的中斷優先順序要比串列埠的高,你對中斷優先順序的理解有誤。在預設情況下,微控制器的5個中斷源都是同級的優先順序,只在同時申請中斷時,先響應定時器t0的中斷,但不等於t0的優先順序比串列埠高,而是同級的。在響應了同級的中斷時,是不能再響應其它同級的中斷的。
你的問題解決的辦法是:在響應串列埠中斷時,要能響應t0的中斷,必須設定t0的中斷為高優先順序才行,這樣,t0的中斷才能打斷串列埠的中斷。中斷優先順序有兩個,分高、低兩個優先順序,預設是都是低階的。
由中斷優先順序暫存器ip來設定,見下表,應該設定 pt0=1; 就行了。
c語言程式:pt0=1;
匯程式設計序:setb pt0
2樓:上官清寒萌萌噠
1。「code」是微控制器c語言特有的關鍵字
在微控制器中ram的空間特別小,特別珍貴。ram空間,存放變數。而一些常量,比如碼表等常量放在rom中。所以微控制器中code就是告訴微控制器這個資料放入rom中。
本例中dispbit[8]=; 陣列內容為常量,故加上code,以節約ram的空間。
其實code放在unsigned char 前也可以,比如code unsigned char dispbit[8]效果一樣。
2.關於void t1zd(void) interrupt 3
「interrupt 」是微控制器c語言中斷關鍵字,至於後面的0,1,2,3,4,5,分別表示
0-外部中斷0
1-定時器0
2-外部中斷1
3-定時器1
4-串列埠中斷
5-定時器2
「interrupt 」是微控制器c語言中斷關鍵字,是c51 語言在微控制器中規定的,在程式編譯時指明中斷的型別。當相應的中斷發生時,並執行這個中斷函式。
本例中當定時器計數時間一到(即 th1和tl1全部計滿,並溢位 ),便執行下面程式,將0x1c放到 th1中 0x18放到tl1 中,再開始重新計數(不斷加1),每計滿一次 lednumval值 加1。如此下去。。。
微控制器的問題有哪些?
3樓:遇見那個人
學習微控制器一般從at89c51學起,自己最好有電路板。
1:微控制器是典型的嵌入式微控制器,由運算器,控制器,儲存器,輸入輸出裝置等構成,相當於乙個微型的計算機。與應用在個人電腦中的通用型微處理器相比,它更強調自**和節約成本。
2:它的最大優點是體積小,可放在儀表內部,但儲存量小,輸入輸出介面簡單,功能較低。
3:數碼管是一種半導體發光器件,其基本單元是發光二極體。數碼管實際上是由七個發光管組成8字形而構成的,加上小數點就是8個。這些段分別由a,b,c,d,e,f,g,dp來表示。
4:單片微型計算機簡稱微控制器,是典型的嵌入式微控制器, 常用英文本母的縮寫mcu表示微控制器,微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。微控制器由運算器,控制器,儲存器,輸入輸出裝置構成,相當於乙個微型的計算機。
微控制器問題
4樓:縹緲一樣
1。「code」是微控制器c語言特有的關鍵字
在微控制器中ram的空間特別小,特別珍貴。ram空間,存放變數。而一些常量,比如碼表等常量放在rom中。所以微控制器中code就是告訴微控制器這個資料放入rom中。
本例中dispbit[8]=; 陣列內容為常量,故加上code,以節約ram的空間。
其實code放在unsigned char 前也可以,比如code unsigned char dispbit[8]效果一樣。
2.關於void t1zd(void) interrupt 3
「interrupt 」是微控制器c語言中斷關鍵字,至於後面的0,1,2,3,4,5,分別表示
0-外部中斷0
1-定時器0
2-外部中斷1
3-定時器1
4-串列埠中斷
5-定時器2
「interrupt 」是微控制器c語言中斷關鍵字,是c51 語言在微控制器中規定的,在程式編譯時指明中斷的型別。當相應的中斷發生時,並執行這個中斷函式。
本例中當定時器計數時間一到(即 th1和tl1全部計滿,並溢位 ),便執行下面程式,將0x1c放到 th1中 0x18放到tl1 中,再開始重新計數(不斷加1),每計滿一次 lednumval值 加1。如此下去。。。
微控制器的問題
5樓:匿名使用者
舉個例子給你說明:
這個二進位制數為0010000000010000
其中21h=00100000 20h=00010000
clr c ;c清零
xch a,21h ;交換a與21h的值,a=00100000
rrc a ;將a中值右移一位高位補0(c),a=00010000
xch a,21h ;交換a與21h的值,21h=00010000
xch a,20h ;交換a與20h的值,a=00010000
rrc a ;將a中值右移一位高位補0(c),a=00001000
xch a,20h ;交換a與20h的值,20h=00001000
此時原二進位制數變成了0001000000001000
可見:1、程式完成的邏輯功能是使21h和20h中的16位二進位制數右移一位,並使最高位為0,一般稱為邏輯右移一位。
2、可以用mov指令,修改後程式段如下:
clr c
mov a,21h
rrc a
mov 21h,a
mov a,20h
rrc a
mov 20h,a
3、有所差別。雖然從16位右移功能來說兩者的功能是相同的,但第乙個程式段執行後,累加器a的內容仍維持原值,而第二個程式段執行後將改變a中的數值。
6樓:匿名使用者
空氣感測器一般使用gp2y1010au0f,proteus裡面是沒有的,你可以用乙個電位器來模擬,gp2y1010au0f傳回的是乙個模擬訊號。
7樓:匿名使用者
1.code 是把陣列固定到rom裡面,而不是放在ram裡面,減少ram的使用量,例如使用51微控制器的時候如果陣列大於256b,那麼ram就不夠用了,所以把不會改變的陣列放到rom裡面,當然,如果是會時常變化的陣列,是不能固定到rom中的;
2.都是這麼用,應該是編譯器設定的,你就當成是在keil編譯器下編寫51中斷程式的模組吧。
8樓:匿名使用者
1,code的意思就是告訴編譯器將這個一維陣列做為常量存放在程式儲存器rom或flash裡面
2,不用定義,直接寫就好就像寫呼叫的子程式一樣
9樓:高山入雲
1。「code」是微控制器c語言特有的關鍵字
在微控制器中ram的空間特別小,特別珍貴。ram空間,存放變數。而一些常量,比如碼表等常量放在rom中。所以微控制器中code就是告訴微控制器這個資料放入rom中。
本例中dispbit[8]=; 陣列內容為常量,故加上code,以節約ram的空間。
其實code放在unsigned char 前也可以,比如code unsigned char dispbit[8]效果一樣。
2.關於void t1zd(void) interrupt 3
「interrupt 」是微控制器c語言中斷關鍵字,至於後面的0,1,2,3,4,5,分別表示
0-外部中斷0
1-定時器0
2-外部中斷1
3-定時器1
4-串列埠中斷
5-定時器2
「interrupt 」是微控制器c語言中斷關鍵字,是c51 語言在微控制器中規定的,在程式編譯時指明中斷的型別。當相應的中斷發生時,並執行這個中斷函式。
本例中當定時器計數時間一到(即 th1和tl1全部計滿,並溢位 ),便執行下面程式,將0x1c放到 th1中 0x18放到tl1 中,再開始重新計數(不斷加1),每計滿一次 lednumval值 加1。如此下去。。。
微控制器問題?
10樓:沙里波特
標題黨!
這根本就不是微控制器的問題。
微控制器問題。
11樓:
因為 movx a, @dptr 這條指令做的事情,就是把dptr指向的單元的內容,搬到累加器裡。
你期望它額外再定址一次?不行的。51微控制器沒有像arm/x86等較複雜核心那樣的多重定址的指令。
你需要多看書,了解51微控制器每條指令的具體功能。
12樓:沙里波特
括號裡面是數字,寫乙個括號,代表儲存器的內容。
括號裡面是暫存器,寫乙個括號,代表暫存器的內容。
括號裡面是暫存器,寫兩個括號,就代表以暫存器內容當儲存位址,所對應儲存器的內容。
微控制器問題??
13樓:匿名使用者
陣列初值後面要有;號
微控制器的·問題·
14樓:匿名使用者
#include
#include
#define uchar unsigned charuchar num;
uchar led=;
void ext0() interrupt 0main()
15樓:專注51微控制器
org 0000h
ljmp main
org 0003h
ljmp ext0
org 0030h
main:
setb ex0
setb it0
setb ea
mov a,#0feh
clr 00h
sjmp $
ext0:
mov p1,a
jb 00h,ext01
rl a
jb acc.0,extr
cpl 00h
rr a
sjmp extr
ext01:
rr a
jb acc.7,extr
cpl 00h
rl a
extr:
retiend
51微控制器問題
16樓:匿名使用者
51微控制器只有5個中斷源,外部中斷0 外部中斷1 定時器0 定時器1 串列埠 ,除兩個外部中斷外,其餘3個是內部中斷
一般來說,各個中斷互不影響 雖然定時器啟動和外部中斷有關,但我們不常用,即將 gate設為0, 這時定時器啟動和外部中斷無關,我們直接用tr0即可控制定時器啟動
這樣,對於定時器的應用步驟是:設定工作模式 裝定時器初值 開定時器中斷 開總中斷 啟動定時器 等中斷到 來 執行中斷程式
例如 定時器0工作在16位定時器模式,定時50ms,c 語言初始化程式如下:
tmod=0x01;//設定工作模式 如果對外部脈衝計數(來自p3.4)則 tmod=0x05,gate位還是0
th0=(65536-50000)/256;//裝定時器初值
tl0=(65536-50000)%256;
et0=1;//開定時器0中斷
ea=1;//開總中斷
tr0=1;//啟動定時器0
外部中斷0 c 語言初始化程式如下:
ex0=1;//開外 中斷0
it0=1;//下降沿觸發 為0是低電平觸發
ea=1;//開總中斷
微控制器的延時問題,微控制器延時問題
具體說你用的8位微控制器 處理int型別時需要做兩次減法指令 而char型只需要一次 你想想在你的函式裡一共減法做了20 20 248次那也就是說換為char型資料 就相當於至少少了20 20 248條語句 按常用51微控制器,12m振盪頻率算 一條語句1微妙 加起來就可觀了吧。你仔細看看你的c語言...
微控制器的問題,微控制器有問題如何解決
tihali,你好。分析一下你的要求,你需要電機驅動電路,控制電路 微控制器及附屬ic 位置檢測電路,人機介面電路 鍵盤和顯示屏 還有就是通訊介面。xyz三軸建議用步進電機,而切削軸建議用高速直流電機就行。三組驅動ic l297 l298,切削軸用一片l298就行。微控制器用乙個高速的吧,比如msp...
微控制器方面學習問題,微控制器學習問題
我剛畢業時也和你一樣困惑,但是要相信自己的能力,看得出來你很好學,也很上進,很多公司都會覺得你不錯的,以後找到工作在工作中相關的知識你會了解的更多,不要想幾個月就成為哪一方面的高手,慢慢積累,不斷學習,不論工作 讀本 讀碩都是在學習的過程,當你工作一段時間後,你會發現你和你身邊的同事,不論是本科還是...
微控制器學習問題,微控制器學習問題,迷茫啊!
彙編和c是不同的語言。學習沒有先後順序。彙編語句比較多,不容易記,c常用的才20幾個關鍵字。學習彙編可以使你更了解微控制器結構及工作原理。學習c可以使你把精力放到頂層設計上,可以把程式移植到不同的微控制器框架中。我是先學的彙編再學的c,這樣,什麼c語言指標啦,變數啦,那種迴圈效率高啦都很容易理解。但...
微控制器彙編問題,微控制器組合語言的問題
改好了,可以編譯。但是,程式設計的思路,可能還有錯。org 0000h ljmp main org 0003h ljmp pint0 org 0200h main mov ie,81h cpu開放中斷,int0允許中斷setb it0 外部中斷為邊沿觸發方式mov sp,30h 指標入口位址。set...