微控制器彙編程式求解,微控制器 組合語言編寫

2023-03-09 13:50:06 字數 3682 閱讀 4091

1樓:胖大海君

嘿嘿 還是俺來幫你看看吧。

1 原因找到了 你在第二段程式中 少了一條指令 使你的流水燈流到迴圈2就斷了。

加上ljmp three 就可以跳轉到第三段流水燈控制程式上了。

2 具體就是加在第二段程式的 cjne a,#02h,loop3 指令的下面。

即修改後 應如下:

cjne a,#02h,loop3

ljmp three

呵呵 趕快試試吧 通過後 給俺加分哦。

微控制器程式

微控制器 組合語言編寫

微控制器的程式設計

2樓:裘芙伊溪

你得先知道什麼是微控制器:

微控制器是指一個整合在一塊晶片上的完整計算機系統。儘管它的大部分功能整合在一塊小晶片上,但是它具有一個完整計算機所需要的大部分部件:cpu、記憶體、內部和外部匯流排系統,目前大部分還會具有外存。

同時整合諸如通訊介面、定時器,實時時鐘等外圍裝置。

然後,所謂的微控制器程式設計就是,基於微控制器進行的程式開發,在有周圍外設支援的情況下,用軟體來控制的部分就是能過微控制器程式設計來實現。微控制器能識別的語言是硬體語言即彙編,因此程式設計就是圍繞彙編來實現,有直接用匯程式設計序來編寫的,但是較難除錯的編寫,特別是一上規模就更不易實現,因此常用高階語言來寫然後通過編譯器轉化成彙編,如用c或是c++等。微控制器程式設計還會由於其位數不同而有所差異,如8位微控制器程式設計,16位微控制器程式設計,32位微控制器程式設計等。

微控制器程式設計

3樓:御恭是衣

對於51微控制器,可以這樣:

movr0,#50h

;資料開始地址。

movr1,#14h

;迴圈次數。

loop:clr

c;清除c標誌。

mova,@r0

;裝入資料。

subba,#0ah

;減去10jc

x10;如果小於10,即小於10的數字,跳轉到x10subba,#0ah

;如果大於10,再減去10jcx20

;如果此時小於10,即大於10小於20的數字,跳轉x20mov05h,@r0

;如果大於20,儲存到05h,即r5

ljmpnext

;結束。x10:

mov07h,@r0

;儲存小於10的數字。

ljmpnext

;結束。x20:

mov06h,@r0

;儲存大於10小於20的數字。next:

incr0djnzr1,loop

;迴圈20次。

51微控制器程式設計題,用組合語言怎麼做?

4樓:沙裡波特

一道小題,簡單寫寫,就夠用了。

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

求教幾道微控制器程式設計題

5樓:粘潔茹凰

此題如下:設系統時脈頻率謂12mhz程式設計實現從輸出週期1s的方波。

注:用t1計數實現。t1工作於計數方式時,計數脈衝通過t1(p3.

5)輸入。t0定時到對t1(取反一次,則t1(p3.

5)每20ms產生一個計數脈衝,那麼定時500ms只需2次。設t1工作於方式2,t0工作於方式1,定時方式;則這時方式控制字為61h.定時計數器t0,t1都採用中斷方式工作。

程式如下:org000h

ljmpmain

org000bh

movth0,#0d8h

movtl0,#0f0h

retiorg001bh

retiorg0100h

main:movtmod,#61h

movth0,#0d8h

movtl0,#0f0h

movr2,#00h

movth1,#0e7h

movtl1,#0e7h

setbeasetb

etosetb

et1setb

tr0setb

tr1sjmp

end有一點覺得很奇怪:它是通過對t1(取反計數的,但是每取反兩次不就又變回原來的值了嗎,到頭來哪兒起到計數作用了,還有就是r2到底起到什麼作用了。

本人初學,問題可能較簡單,莫見笑。

6樓:傅松蘭機凰

mova,30h

anla,#f0

swapamov

31h,amova,30h

anla,#0fh

mov32h,a

movr0,#00h

movr1,#29h

lp:inc

r1cjnz

@r1,#ffh,lp

incr0cjnz

r1,#50h,lp

mov51h,r0

movr0,#50h

mova,#00h

lp:add

a,@r0(不帶進位的)

incr0cjnz

r0,#59h,lp

movb,#0ah

divabmov4ah,a(整除,四捨五入可以自己再想一下)main:

mova,#01h

(高電平點亮)

lp:mov

p1,arlca

lcalldelay

ljmplpdelay:

延時2秒自己想。

ljmpdelay

後面自己想,比較簡單,多看書,應該沒問題的。

7樓:碩丹宓雲

計數是對脈衝的計數,你可以理解為從高電平變到低電平的時候算一次,反兩次只是電平變為原來的,但只發生了一次從高到低的過程,所以是計數器要加1,反4次,電平還是變為原來的電平,但會發生兩次從高到底的過程,所以計數器應該是加了2;

在這裡,mov

r2,#00h是沒有什麼作用,但不影響程式的正確執行。

求解微控制器彙編程式中的一條指令

8樓:遙不可及

樓主你好:

首先我要說明的是如果沒有特殊說明,僅憑40h是無法得知這是一個位元組地址還是位地址的!對於位元組編址來說,40h處在位元組定址區,不能進行位定址,所以mov c, 的用法是錯誤的。

那麼樓主可能有疑問了,什麼時候40h是位元組地址,什麼時候又是位地址呢?

其實很好判斷:樓主看看如下兩條指令:

mov c,20h

mov a,20h

這兩條指令看似結構相同,其實是南轅北轍。如果運算元是「c」,那麼其後面的20h表示位定址區的20h(即以位元組編址來看是24h的最低位);如果運算元是「a」,那麼地址為位元組編址的20h。彙編程式會根據運算元c或a自動做出判斷20h是位元組地址還是位地址。

位定址區的劃分是這樣的:可位定址區的地址從20h~2fh共16個位元組單元,那麼這16位元組單元一共有16*8=128個位地址,從20h的最低位到2fh的最高位,按順序生成00h~7fh共128個位地址。如果加上sfr高階128個位地址,51機共有256個位地址。

9樓:網友

mov c,40h

mov c,然後看一下編譯的結果,這兩條指令是否是一樣的。

10樓:匿名使用者

這條指令中的40h不是一個8位的數,是一個暫存器的實體地址,具體的是哪個我一時想不起。

微控制器(組合語言)需要的軟體,微控制器(組合語言)程式

51微控制器是襲keil 軟體 關鍵你學過什麼語言?如果學過c語言就用c,上手快。學過其他的高階語言也可以,和c也大都是相通的。要是學過彙編的話就用匯編,畢竟彙編對硬體的操作 建議你還是先學微控制器c語言,這樣不會因為彙編這個攔路虎,而降低你持續學習的熱情。微控制器 組合語言 程式 開發當bai然是...

51微控制器組合語言例項,51微控制器組合語言資料

其他沒要求了?要是這樣,隨便寫寫的呀。清零程式 org 0000h ljmp start org 0030h start mov r7,mov r0,30h clr aloop mov r0,a inc r0 djnz r7,loopend 我的部落格上有,你可以去看看。51微控制器組合語言資料 一...

KEIL C51微控制器組合語言程式設計問題

name cs t pr?cs t?cs t segment code public cs t rseg pr?cs t?cs t以上是什麼意思 編譯軟體 肯定 不認 以下程式 應該 可以編譯 cs t push acc 這程式看不出起什麼作用。mov th0,00hmov tl0,00hmov a...