導航:首頁 > 操作系統 > 單片機匯編實驗

單片機匯編實驗

發布時間:2022-08-09 07:41:57

單片機匯編實驗

1將80C51片內RAM的20H~2EH共15個單元置以初值0A0H~0AEH,
mov r0,#20H
mov a,#0a0h
loop:
mov @r0,a
inc r0
inc a
cjne r0,#2fh,loop

然後再將8700H~870EH單元的內容傳送到片內RAM的60H~6EH中。
mov dptr,#8700h
mov r0,#60h
loop2:
movx a,@dptr
mov @r0,a
inc dptr
inc r0
mov a,dpl
cjne a,#0fh,loop2
最後將20H~2EH單元的內容傳送到片外RAM的8700H~870EH
mov dptr,#8700h
mov r0,#20h
loop3:
mov a,@r0
movx @dptr,a
inc dptr
inc r0
cjne r0,#2fh,loop3
end

2用P1口的p1.0-p1.7八個埠做輸出口,接8隻發光二極體(LED),編寫程序使LED循環點亮。
mov a,#1
loop:
rl a
mov p1,a
;delay
mov r1,#0ffh
loop2:mov r2,#0ffh
djnz r2,$
djnz r1,loop2
;delay end
sjmp loop
end
3題目: P1口接8隻發光二極體(L0~L7), T1作定時器,系統晶振6MHz。編寫程序,讓第1秒時L0~L3點亮, L4~L7暗;第2秒時L0~L3暗, L4~L7亮;第3秒時L0~L7全亮;第4秒時L0~L7全暗;第5秒時L0~L3點亮, L4~L7暗;如此循環下去......
;這個有點復雜了……
org 0h
sjmp start
org 0bh
mov th0,#0bh
mov tl0,#0dch
inc r7;R7是計數器,滿8次表示1秒到了
cjne r7,#8,exit
mov r7,#0
inc r6
cjne r6,#4,skip
mov r6,#0
skip:
mov a,r6
movc a,@a+dptr
mov p1,a
exit:reti
start:
mov tmod,#1
setb ea
setb et0
setb tr0
mov dptr,#tab
sjmp $
tab:db 0f0h,0fh,0h,0ffh

② 51單片機匯編語言編寫一個跑馬燈的程序,初學者做實驗用,具體要求如下,好了可以加分

程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END

③ 單片機實驗中,怎麼用匯編比較大小

單片機實驗中,用匯編語言編程比較兩個數大小,主要用SUBB減法指令,也可以使用CJNE指令。示常式序如下:
;啟動入口
ORG
0000H
;復位啟動
LJMP
START
;
ORG
0100H
;
;
;主控程序
START:
MOV
R0,#30H
MOV
X,#0
MOV
Y,#0
LOOP:
MOV
A,@R0
CLR
C
SUBB
A,#111
JNC
NEXT
CPL
C
MOV
A,@R0
SUBB
A,Y
JC
NUM
MOV
Y,@R0
NUM:
MOV
A,@R0
SUBB
A,#60
JC
INCR0
INC
X
INCR0:
INC
R0
JMP
LOOP
NEXT:
JMP
$
;
X
EQU
20H
;
Y
EQU
21H
;
END
;

④ 單片機匯編編程實驗題求解,必採納

MOV 40H,#68H ;
MOV A,40H ;取壓縮BCD數。
ANL A,#0F0H ;屏蔽低4位,保留高4位。
SWAP A ;高低四位交換。
MOV 41H,A ;保存高4位。
MOV A,40H ;再取壓縮BCD數
ANL A,#0FH ;屏蔽高4位,保留低4位。
MOV 42H,A ;保存低4位。

⑤ 匯編語言單片機實驗

注釋如圖所示:

⑥ 單片機匯編語言實驗,求助!

ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXT0
ORG 0030H
MAIN:
SETB EX0
SETB IT0
SETB EA
SJMP $
EXT0:
CLR P1.0
LCALL DELAY
SETB P1.0
RETI
DELAY:
MOV R2,#200
DLY1:
MOV R3,#200
DLY2:
MOV R4,#248
DJNZ R4,$
DJNZ R3,DLY2
DJNZ R2,DLY1
RET
END

⑦ 單片機匯編矩陣鍵盤實驗(掃描法)

關於掃描按鍵的原理,可以看下面這篇文章。

本文以循序漸進的思路,引導大家思考如何用最少的IO驅動更多的按鍵,並依次給出5種方案原理圖提供參考。在實際項目中我們經常會遇到有按鍵輸入的需求,但有的時候為了節省資源成本,我們都會選擇在不增加硬體的情況下使用最少的控制器IO驅動更多的按鍵,那麼具體是怎麼做的呢,下面我們就以用5個IO引腳為例,講下怎麼設計可以實現更多的按鍵?共有5種設計思路,下面依次介紹。

思路一

首先通常想到的可能是下面這樣的設計:

這樣我們可以先識別K01、K02、K03、K04、K05,若沒有按鍵按下然後再和思路四的設計一樣去識別其他按鍵。但這樣存在一個問題,如果IO1配置為0,IO5讀到0,那麼怎麼知道是K51按下還是K05按下呢,這里只需要在程序里做下判斷,先判斷下是不是K05按下,若不是就是K51,因為按鍵K01、K02、K03、K04、K05在5個IO口都為讀取的情況下,就可以識別,不需要掃描識別處理,相當於這5個按鍵優先順序高與其他按鍵。

總結

綜合上述,5個IO口最多可以識別25個按鍵,思路五程序上處理比較麻煩,若實際中只按思路四設計,也可識別20個按鍵,那麼如果有N個IO口可識別多少按鍵呢?這里給出如下公式:

假設有N個IO口按照思路三可以識別N*(N-1)/2個;

按照思路四可識別N*(N-1)個;

按照思路5可以識別N*(N-1)+N個。

最後再說下,如果實際設計時,還是按思路四設計好,軟體也沒那麼麻煩。如果是你的話你會選擇哪種方法呢?你還有沒有其他的設計方法呢?

⑧ 單片機LED燈實驗(匯編語言)

用匯編語言AT89C51單片機對八個LED小燈的一個控制,效果呢,就是
左邊的四個先亮
間隔2秒
亮三下
再換右邊的亮間隔2秒
再亮三下
以此交替
。用延遲程序就行啊!有些問題我還得和你弄清楚,關鍵是用那幾個IO口呢?看,家我名字說吧。

⑨ 單片機實驗(MSC51匯編語言)

ORG
4000H
;定義以下代碼的存儲起始位置
MOV
DPTR,#0CFA7H
;以下三句的功能,把數值82H傳送到CFA7H所在的存儲單元
MOV
A,#82H
MOVX
@DPTR,A
MAIN:MOV
DPTR,#0CFA5H
MOVX
A,@DPTR
;把0CFA5H的值或者狀態讀到累加器A中,
MOV
DPTR,#0CFA4H
MOVX
@DPTR,A
;再把A的值賦給0CFA4H,
;所以這四句的功能就是把0CFA5H的值賦給0CFA4H
ACALL
DEL
;調用延時子程序
AJMP
MIAN
;進入循環
DEL
:MOV
R6,#10
DEL1:MOV
R7,#250
DEL2:DJNZ
R7,DEL2
DJNZ
R6,DEL1
RET
END

⑩ 51單片機匯編bcd減法實驗

你這個程序沒問題的話,直接加點程序就OK了。修改如下:
BCDSUBB:
MOV R2,#4
MOV R0,#38H
MOV R1,#30H
CLR C
SUBBCD1:
MOV A,#9AH
SUBB A,@R0
ADD A,@R1
DA A
MOV @R0,A
CPL C
INC R0
INC R1
DJNZ R2,SUBBCD1
MOV R1,#40H
MOV R0,#30H
MOV R2,#4
SUBBCD2:
MOV A,@R0
MOV @R1,A
DJNZ R2,SUBBCD2
RET

閱讀全文

與單片機匯編實驗相關的資料

熱點內容
linux安裝gz文件 瀏覽:357
linux如何卸載編譯的軟體 瀏覽:929
高三解壓活動視頻 瀏覽:780
如何把伺服器卡爆 瀏覽:949
餓了么java程序員 瀏覽:960
python編譯時找不到路徑 瀏覽:910
jpg轉換pdf軟體 瀏覽:103
php讀取json文件 瀏覽:866
螺桿壓縮機的功率計算 瀏覽:74
谷輪壓縮機c 瀏覽:338
蘋果app如何復制到另一個手機 瀏覽:834
javasession超時 瀏覽:831
易金通app怎麼更改手機號 瀏覽:493
plc數控編程的方法 瀏覽:989
android只能輸入數字和字母 瀏覽:120
文件夾如何刪除頁碼 瀏覽:993
伺服器被封了有什麼後果 瀏覽:980
光大手機app怎麼零存整取 瀏覽:416
cshtml需要編譯 瀏覽:580
安卓收不到塞班熱點怎麼辦 瀏覽:292