80C51微控制器按鍵中斷實驗(用組合語言)

2022-05-26 06:14:20 字數 3675 閱讀 3096

1樓:匿名使用者

語句分號後為你原先指令,前面為修改後指令。

主要是標號錯誤和輸入時輸入法錯誤,要英文模式。

修改後編譯通過。

但沒有 按8次後重複開始狀態,你自己加入該功能。

org 0000h

ljmp main

org 0003h

ljmp iint0 ;ljmp int0org 0013h

ljmp iint1 ;ljmp int1org 0030h

main:setb ea

setb ex0

setb ex1

setb it0

setb it1

mov b,#0ffh

here:sjmp here

iint0:mov a,b ;int30:mov a,brl a

dec a

mov b,a

mov p1,a ;mov p1,a

reti

iint1:mov a,b ;int1:mov a,brr a

add a,#80h

mov b,a

mov p1,a ;mov p1,a

retiend

2樓:姐夫有料

org 0000h

ljmp main

org 0003h

ljmp int0

org 0013h

ljmp int1

org 0030h

main: setb ex0

setb ex1

clr it0 ;跳變沿檢測

clr it1 ;跳變沿檢測

setb ea

mov b,#0ffh

here:sjmp here

int0:mov a,b

clr c

rlc a ;每次從右邊移入一個0,亮燈mov b,a

mov p1,a

jnz int00 ;全亮之後,要復位

mov b,#0ffh

int00: reti

int1:mov a,b

setb c

rrc a

cjne a,#0ffh,int11 ;全滅的情況下,要全開啟,才能減少

clr a

int11: mov b,a

mov p1,a

reti

;另外,程式設計之中要考慮按鍵抖動。需要有去抖動處理。

3樓:匿名使用者

樓上的程式是可以的,怎麼ie0和ie1沒置位啊。

編寫檢測鍵盤按下的彙編中斷程式

4樓:匿名使用者

比如說按鍵接在p3.2,用外部中斷0實現鍵按一次進入外部中斷程式並保持,再按一下中斷返回

org 0000h

ljmp main

org 000bh ;外部中斷0的入口地址

ljmp in0

org 0030h ;主程式的開始

main:mov sp,#60h

setb ea ;開中斷總允許

setb ex0 ;開外部中斷0允許

setb it0 ;外部中斷0觸發方式

sjmp $ ;原地踏步,可以用你自己的具體程式替代

in0:jb p3.2,$ ;判斷按鍵(p3.2)是否按下

jnb p3.2,$ ;判斷按鍵(p3.2)是否釋放

reti ;中斷返回斷點處end

51微控制器外部中斷實驗程式 5

5樓:做而論道

做51微控制器外部中斷實驗,應該有主程式、中斷服務程式。

樓主所說這些的亮滅,那些的主程式的?那些是中斷程式的?

6樓:

請問你這個觸發中斷是一個按鍵?你觸發的方式是長時間按下還是瞬間按下?我覺得你應該是長時間按下的。

回到正題,你這個中斷服務函式裡只有一句**,那麼中斷服務函式執行的速度會很快的,所以如果你只按了一下的話那麼看起來就感覺沒有執行一樣,更重要的是你這個中斷服務函式裡沒有對按鍵進行消抖,同時也沒有關閉中斷,這就可能會引起,當你瞬間按下中斷按鈕後,其實中斷被執行了多次,而當你長時間按下中斷按鈕後,那麼程式會不停的在main和中斷服務函式之間快速不停的切換,這就導致了main函式斷斷續續的執行,看起來就像是main執行變慢了,其實是因為程式需要不停的進入中斷服務函式,所以看起來就像執行變慢一樣。

改進建議:在中斷服務函式里加入按鍵消抖的語句,或是直接進入中斷後關閉中斷,處理完後再開啟。而且如果想明顯的看到效果的話請在中斷服務函式里加一些延時語句。

7樓:呂珠雪明遠

bitsign=0;

void

main()}}

void

ww()

interrupt

0我只是簡寫一下,大概就是這個意思:第一次按下數碼管顯示,再按一下數碼管不顯示

希望對你有所幫助!

8樓:匿名使用者

1rmb給你搞定。可以的話聯絡857656772

51微控制器中斷有什麼作用

80c51微控制器彙編程式

9樓:做而論道

應用查詢方法:

org 0000h

mov tmod, #20h ;t1定時方式2mov tl1, #6

mov th1, #6 ;定時500us@6mhzsetb tr1

;-------------------------------lp0:

setb p1.0 ;輸出高電平mov r2, #80

lp1:

jnb tf1, $ ;等待500usclr tf1

djnz r2, lp1 ;迴圈80次;-------------------------------clr p1.0 ;輸出低電平mov r2, #120

lp2:

jnb tf1, $ ;等待500usclr tf1

djnz r2, lp2 ;迴圈120次;-------------------------------sjmp lp0 ;無限迴圈end

10樓:匿名使用者

org 0000h

mov sp,#60h

mov tmod,#01h ;使用t0工作方式1setb tr0

ljmp loop

loop:

mov th0,#0b1h ;設定40ms的定時器中斷時間mov tl0,#0e0h

setb p1.0 ;輸出高電平chk1:

jnb tf1,$

mov th0,#8ah ;設定60ms的定時器中斷時間mov tl0,#0d0h

clr p1.0 ;輸出低電平chk2:

jnb tf1,$

ljmp loopend

c51微控制器 中斷,c51微控制器如何使用中斷

這個程式是有問題的,第一次中斷時,x先賦值0再加一,x為1,第二次中斷時,又給x賦值0,這樣每次中斷都為1,不可能為2,也就不可能執行到b,建議用全域性變數可以解決這個問題。還有一個問題,一直在執行中斷程式,下一次中斷來臨時,為同級中斷,同級中斷是否能觸發,這個問題要考慮。解決辦法 a和b放在主程式...

80C51微控制器引腳分別起到什麼作用

電源 接地。復位。晶振。ea。掌握這些,就夠你用一陣了。80c51微控制器引腳圖及引腳功能介紹 80c51微控制器有40個引腳大致可分為4類 電源 時鐘 控制和i o引腳。1 電源 1 vcc 晶片電源,接 5v 2 vss 接地端 2 時鐘 xtal1 xtal2 晶體振盪電路反相輸入端和輸出端。...

微控制器中斷系統工作原理,C51微控制器的中斷系統的結構及其工作原理是什麼

我覺得你應該看看暫存器是怎樣工作的,比如tr0 1 表示定時器中斷 et0 1 表示開啟定時器中斷 es 1 串列埠中斷 ex0 1 外部中斷 ea 1 開啟所有中斷 一般的微控制器書上都有介紹的,而且使用的時候也是比較簡單,直接在程式裡給暫存器寫值就可以了!中斷有硬中斷與軟中斷。中斷有優先度之分,...