微控制器問題,微控制器的問題有哪些?

時間 2022-11-08 07:46:11

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...