微控制器問題,微控制器的問題

2022-03-14 00:03:00 字數 4446 閱讀 2577

1樓:做而論道

是 51 微控制器問題?

正負數分開存放。

零,放在正數一起。

main:

mov   20h, #21h ;設定存放正數的起始位址mov   60h, #61h ;設定存放負數的起始位址mov   r0, #40h  ;資料源位址mov   r2, #20   ;資料個數lp: mov   a, @r0

jnb   acc.7, zh

mov   r1, 60h   ;取負數位址送到間址暫存器inc   60h       ;個數加一sjmp  next

zh: mov   r1, 20h   ;取正數位址送到間址暫存器inc   20h

next:

mov   @r1, a    ;存入目的地inc   r0

djnz  r2, lp

clr   c

mov   a, 20h    ;指標

subb  a, #21h   ;減去起始位址,就得到個數mov   20h, a    ;存個數

mov   a, 60h

subb  a, #61h

mov   60h, a

sjmp  $

end本程式經過實驗,符合題目要求。

2樓:

;count_num_0 data 80h ;存放0的個數count_num_p data 20h ;存放正數個數count_num_n data 60h ;存放負數個數org 0000h

ajmp main

org 0100h

main:

mov a,#0

;    mov count_num_0,amov count_num_p,a

mov count_num_n,a

mov r7,#20;這組資料總個數

mov r0,#40h

next_one:

mov a,@r0

jz acc_is_0

jb acc.7,acc_is_n;判斷是否為負數,為負數就跳轉acc_is_p:;為正數

inc count_num_p

mov a, count_num_p

add a,#20h

mov r1,a

mov a,@r0

mov @r1,a

ajmp next

acc_is_n:;為負數

inc count_num_n

mov a, count_num_n

add a,#60h

mov r1,a

mov a,@r0

mov @r1,a

ajmp next

acc_is_0:;為0

;    inc count_num_0

;ajmp next

next:;

inc r0

djnz r7,next_one

ajmp $end

微控制器的問題

3樓:匿名使用者

舉個例子給你說明:

這個二進位製數為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中的數值。

4樓:匿名使用者

空氣感測器一般使用gp2y1010au0f,proteus裡面是沒有的,你可以用乙個電位器來模擬,gp2y1010au0f傳回的是乙個模擬訊號。

5樓:匿名使用者

1.code 是把陣列固定到rom裡面,而不是放在ram裡面,減少ram的使用量,例如使用51微控制器的時候如果陣列大於256b,那麼ram就不夠用了,所以把不會改變的陣列放到rom裡面,當然,如果是會時常變化的陣列,是不能固定到rom中的;

2.都是這麼用,應該是編譯器設定的,你就當成是在keil編譯器下編寫51中斷程式的模組吧。

6樓:匿名使用者

1,code的意思就是告訴編譯器將這個一維陣列做為常量存放在程式儲存器rom或flash裡面

2,不用定義,直接寫就好就像寫呼叫的子程式一樣

7樓:高山入雲

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。如此下去。。。

微控制器的問題有哪些?

8樓:遇見那個人

學習微控制器一般從at89c51學起,自己最好有電路板。

1:微控制器是典型的嵌入式微控制器,由運算器,控制器,儲存器,輸入輸出裝置等構成,相當於乙個微型的計算機。與應用在個人電腦中的通用型微處理器相比,它更強調自**和節約成本。

2:它的最大優點是體積小,可放在儀表內部,但儲存量小,輸入輸出介面簡單,功能較低。

3:數碼管是一種半導體發光器件,其基本單元是發光二極體。數碼管實際上是由七個發光管組成8字形而構成的,加上小數點就是8個。這些段分別由a,b,c,d,e,f,g,dp來表示。

4:單片微型計算機簡稱微控制器,是典型的嵌入式微控制器, 常用英文本母的縮寫mcu表示微控制器,微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。微控制器由運算器,控制器,儲存器,輸入輸出裝置構成,相當於乙個微型的計算機。

微控制器問題

9樓:

org 0000h

ajmp start ;轉到初始化程式

org 0023h

ajmp pguart ;轉到序列中斷服務子程式start: mov sp,#60h ;堆疊指標初始化mov p0,#0ffh ;p0埠初始化mov p1,#0ffh ;p1埠初始化mov p2,#0ffh ;p2埠初始化mov p3,#0ffh ;p3埠初始化mov tmod,#20h ;定時器t1工作於模式2,自動重裝載mov th1,#0fdh ;th1初值為"0fdh",mov tl1,#0fdh ;tl1初值為"0fdh",mov scon,#50h ;序列口工作於方式1,允許接收setb tr1 ;啟動定時器t1

setb es ;允許序列口中斷

setb ea ;開總中斷

clr uabit

;----------------------rs-232介面與微控制器序列通訊程式設計-------------------------------

main: ...... ;主程式處理其他任務,等待串列埠中斷ajmp main

pguart: ...... ;串列埠中斷服務子程式,接收處理資料retiend

微控制器問題,微控制器的問題

希望你學會的是一些技巧,一些方法,那麼你以後不管學什麼技術 主要是講控制這方面的 你都會很容易上手的。這是真的。你僅僅只是做了單個模組嗎?那麼你最好做乙個小的系統,綜合了多個功能的系統。學程式設計主要是一種思想,這種思想對其他微控制器是一樣的,只是語言的寫法有些區別。如果你做了乙個綜合了多種功能的小...

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

微控制器是指乙個整合在一塊晶元上的完整計算機系統。微控制器是一種積體電路晶元,是採用超大規模積體電路技術把具有資料處理能力的 處理器cpu 隨機儲存器ram 唯讀儲存器rom 多種i o口和中斷系統 定時器 計數器等功能 可能還包括顯示驅動電路 脈寬調製電路 模擬多路轉換器 a d轉換器等電路 整合...

微控制器的中斷問題,關於微控制器中斷的問題

那個中斷函式和主函式直接是什麼關係?為什麼寫在主函式後邊但是主函式又沒引用?中斷函式無需被顯式呼叫。當有相應的中斷產生時,程式會自動中止當前的執行 記錄位置,然後跳轉到相應的中斷入口處。而在中斷入口會進行二次跳轉,到程式中對應的中斷處理函式內並執行。中斷處理函式執行完畢返回後,跳回到剛才中止執行的位...