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轉換器等電路 整合...
微控制器的中斷問題,關於微控制器中斷的問題
那個中斷函式和主函式直接是什麼關係?為什麼寫在主函式後邊但是主函式又沒引用?中斷函式無需被顯式呼叫。當有相應的中斷產生時,程式會自動中止當前的執行 記錄位置,然後跳轉到相應的中斷入口處。而在中斷入口會進行二次跳轉,到程式中對應的中斷處理函式內並執行。中斷處理函式執行完畢返回後,跳回到剛才中止執行的位...