帶按鍵去抖的微控制器彙編流水燈設計

2025-02-08 07:55:33 字數 5313 閱讀 4116

1樓:網友

錯了幾個地方。

要放在led10前面。

子程式少了ret

3. led10: mov r2, # 07h ;左移8次。

loop: rlc a

mov p2,a

call delay

djnz r2,loop

led20: mov r2, # 07h ;右移8次。

像這樣第一花樣完後,就到第二花樣了,不合題目要求這樣:org 0000h

ajmp main

org 0003h

ajmp ex0int

main: setb ea

setb ex0

setb it0

acall disp

ajmp main

ex0int: jb 50h,rti

setb 50h

acall d10ms

inc r0

cjne r0,#5,rti

mov r0,#

rti: clr 50h

reti disp: mov a, # 0ffh ;左移前使燈都不亮。

clr cled1: cjne r0,#1,led2ajmp led10 ;r0=1,轉花樣1led2: cjne r0,#2,led3ajmp led20 ;ro=2,轉花樣2led3:

cjne r0,#3,led4ajmp led30 ;ro=3,轉花樣3led4: cjne r0,#4,led1ajmp led40 ;ro=4,轉花樣4retled10: mov r2, # 09h ;左移8次。

loop: rlc a

mov p2,a

call delay

djnz r2,loop

ajmp disp

led20: mov r2, # 09h ;右移8次。

loop1: rrc a

mov p2,a

call delay

djnz r2,loop1

ajmp disp

led30: mov p2,#0ffh ;全滅。

call delay

mov p2,# 0ffh

call delay

ajmp disp

led40: mov p2, #00h ;全亮。

call delay

ajmp disp

d10ms: mov r5,#

mov r4,#

djnz r4,$

djnz r5,$-4

retdelay: mov r6, #200 ;延時20msdly1: mov r7, #

dly0: nop

nopdjnz r7,dly0

djnz r6,dly1

retend

2樓:網友

你這個程式是錯的,對於鍵盤去抖,首先判斷是否有鍵按下,若判斷右鍵按下,延遲10ms判斷此鍵是否仍處於按下狀態,若屬於按下狀態,則說明此鍵按下,否則表明此鍵沒按下。你在自己做一下看看,如果實在做不出來的話,你把設計要求發給我,我試試。呵呵。。。

3樓:盧超

建議用c編寫,就形式而論,彙編基本用不到。

帶按鍵的微控制器彙編流水燈設計

4樓:平和的飯後散步

給你個參考,首先你開中斷方式和總中斷,而消抖你可採用延時或用定時器(這樣老師就可能說你不簡單了),當然在此「要求按鍵按一下 花型變一種 」可當按健按下時,程式跳轉方法,比如lcall 指令來呼叫。

5樓:網友

org 0000h

ajmp main

org 0003h

ajmp ex0int

org 0030h

main: setb ea

setb ex0

setb it0

acall disp

ajmp main

ex0int: inc r0

cjne r0,#5,rti

mov r0,#

rti: reti

disp: 。

led1: cjne r0,#1,led2ajmp led10 ;r0=1,轉花樣1ret

end應用外部中斷0,int0接一按鍵,按下時中斷產生,進入中斷子程式 。用r0作按鍵 標誌位,每按一次,r1加1,從1~4 。顯示子程式中判斷r1等幾,而進入第幾個花樣。

微控制器程式設計(要求是組合語言),按鍵控制流水燈的花色?高分求解

6樓:

假設:1.開關接在口上。

燈在p2口上,=0亮。

org 0h

mov p1,#0ffh ;輸入初始化。

stat:jb ,jt ;轉交替顯示。

mov a,#0feh ;00000001>aloop:

acall yss ;顯示及延時。

rl a ;左移。

cjne a,#1,loop ;不等於1繼續ajmp stat ;一圈結束查鍵值。

jt:mov a,#0aah ;01010101>aacall yss ;顯示及延時。

cpl a ;取反 10101010

acall yss ;顯示及延時。

ajmp stat ;查鍵值。

yss:mov p2,a ;送顯示。

ys: ;延時。

djnz r6,ys ;r6-1不等於0轉ysdjnz r7,ys ;r7-1不等於0轉ysretend

7樓:白雪

org 0000h

ljmp start

org 1000h

start:mov sp,#4fh ;堆疊段mov r0,#06h ;迴圈6次。

mov a,#0f8h ;123燈亮att: mov p1,a

acall delay

rl a ;左移1位dec r0 ;迴圈次數自減1cjne r0,#00h,att ;自減完數和00比較相等跳att相等往下執行。

mov p1,#0ffh

mov a,#0f8h

mov r0,#06h

atl: mov p2,a

acall delay

rl adec r0

cjne r0,#00h,atl

mov p2,#0ffh

ajmp start

delay:mov r1,#0ffh

loop0:mov r2,#0ffh

loop1:nop

nopnop

nopdjnz r2,loop1

djnz r1,loop0

retend

在做微控制器按鍵控制流水燈,我想達到按一下自己迴圈,再按一下就停止的那種,怎麼刪改程式啊?

8樓:網友

大概思路是這樣的,流水燈跟按鍵程式分離。

加個位變數k做標誌位。

按下按鍵位變數k取反一次。

流水燈程式只有在這個變數k等於1時才執行。

微控制器組合語言按鍵控制流水燈,兩個開關k1,k2。實現功能按下k1,流水燈左移動,按下k2,流水燈右移動。

9樓:網友

假設接k1,接k2,k1或k2閉合時,或為低電平0,斷開時為高電平1;

p2口的8位接8個發光二極體的陽極,發光二極體的陰極通過下拉電阻接地,要點亮相應的二極體,需要p2口對應引腳輸出高電平1;

按下k1時,p2口初值設為00000001b,這樣點亮最右邊乙個led,用一段延時程式使得點亮穩定後,使p2口數值依次左移1位,這樣8個二極體可以依次點亮,即流水燈左移;

按下k2時,p2口初值設為10000000b,這樣點亮最左邊乙個led,用一段延時程式使得點亮穩定後,使p2口數值依次右移1位,這樣8個二極體可以依次點亮,即流水燈右移。

跪求 微控制器 按鍵控制流水燈,要求按一下按鍵第乙個燈亮,按兩下第二個燈亮..一共

10樓:張洪珠

如果你不會寫程式,給你了也沒用。

給你個思路:預先定於乙個暫存器keynum,首先有按鍵檢測程式,每檢測到一次按鍵,keynum+1。在顯示程式裡判斷keynum是幾,如果是1則第乙個燈亮,其他的滅,依次類推,如果keynum=8,第八個燈亮,同時清除kwenum.

11樓:網友

彙編的org 0000h

mov a,#11111110b

main: jb ,$等待按鍵按下lcall yanshi;消抖延時。

jnb ,main;等待按鍵彈起。

mov p0,a;a內容送p0口。

rl a;左環移a中內容。

ajmp main

yanshi: mov r0,#200djmz r0,$

retend試試看。

微控制器組合語言編寫流水燈程式~最好還要有註釋…

12樓:網友

org 0000h ;程式開始。

sjmp start ;跳轉到start

org 0050h ;start從rom的0050h開始儲存。

start: move ,#00000001b ;把二進位數00000001b送到p1口。

lcall delay ;呼叫延時子程式。

move ,#00000010b ;把二進位數00000010b送到p1口。

lcall delay

move ,#00000100b

lcall delay

move ,#00001000b

lcall delay

move ,#00010000b

lcall delay

move ,#00100000b

lcall delay

move ,#01000000b

lcall delay

move ,#10000000b

lcall delay

ljmp start ;跳轉到start

延時子程式delay,改變r5、r6、r7中的值(0到255),可以改變延時時間。

delay: mov r5,#20 ;把20放到暫存器r5中,d1: mov r6,#

d2: mov r7,#

djnz r7,$ 把暫存器r7中的內容減1,如果結果不定於0,則跳轉到本身,如果等於0,執行下一條程式。

djnz r6,d2 ;把暫存器r6中的內容減1,如果結果不定於0,則跳轉到本身,如果等於0,跳轉到d2

djnz r5,d1

retend

微控制器流水燈彙編問題

org 0000h ljmp main org 030h mov p0,0dbh 11011011 零為亮 main mov a p0 rl a mov p0,a acall delay ajmp main delay mov r7,255 延時子程式d1 mov r6,255 d2 djnz r6...

微控制器,花樣流水燈,微控制器中的流水燈,花樣燈,跑馬燈

參考 微控制器原理與應用 基於彙編 c51及混合程式設計 一書的第146 147頁例題5 25,要改變流水燈的花樣只改變陣列a中各元素即可 k1 bit p3.0 k2 bit p3.1 org 0000h jmp start start mov tmod,01h setb tr0 mov r4,7...

關於微控制器流水燈

不知道你有沒有搞明白所有的彙編指令的用途就看這個。p0口應該接了8個燈,操作他們的方法有兩種,一種是位操作,一種就是對整個p0口操作。51微控制器中每個並口有8條線,這8條線每條都接乙個led,如果是共陰極的話,給p0口的哪一位送高電平哪一位就亮。如果是共陽極,送低點平亮。一般都是共陽極,因為微控制...