51彙編按鍵控制霓虹燈程式設計

2021-09-23 08:00:06 字數 1728 閱讀 4439

@第一次在這裡寫部落格呀~~我也是最近才學微控制器的

問題描述:用p2口控制8個led,實現跑馬燈程式,用軟體延時實現1秒的掃瞄週期。

按鍵k1(p3.0)、k2(p3.1)作為輸入。

k1(p3.1)作為跑馬燈的啟停控制,鬆開時跑馬燈執行,按下時跑馬燈熄滅;

k2(p3.0)作為跑馬燈的方式選擇,鬆開時跑馬燈左移,按下時跑馬燈右移。

晶體振盪器頻率為12mhz

flag equ r7 ;標誌位,用於跳過右移結束時多餘的延時

org 0000h

ajmp begin

org 0100h

begin:

mov p3,#0ffh ;p3口置1

mov a,#0feh

mov r7,#0

loop:

mov p2,a ;左移

rl a

cjne flag,#0,flag2 ;k2鬆開時可以不停留一秒直接轉到下乙個燈亮

flag1:

acall delay

flag2:

mov flag,#0

mov r0,a

mov a,p3 ;讀入鍵盤狀態

cjne a,#0ffh,loop1 ;判斷是否有按鍵按下 cjne比較不等跳

mov a,r0

jmp loop ;沒有按鍵按下則等待

loop1: ;消除按鍵抖動

acall delay_20 ;延時去抖

mov a,p3 ;重新讀入鍵盤狀態

cjne a,#0ffh,loop2 ;非誤讀則跳轉

ljmp loop ; 誤讀情況,繼續等待

loop2:

mov a,r0 ;用於k1按下之後恢復原來狀態

rr a

jnb p3.1,k1 ;k1按下跳轉至k1

jnb p3.0,k2 ;k2按下跳轉至k2

ljmp begin

k1:

mov p2,#0ffh

jnb p3.1,$ ;按下則保持原理狀態(即熄滅)

ljmp loop

k2:

rr a ;右移一位

mov p2,a

acall delay

jnb p3.0,k2 ;按下則繼續右移

mov flag,#1

ljmp loop ;不按下時繼續左移

delay_20: ;9ms延時,去抖時用

mov r1,#9

lp1:acall de1

djnz r1,lp1

retde1:

mov r5,#250

de2:

nopnop

djnz r5,de2

ret

delay: ;1秒延時

mov r1,#250

de5:

acall de3

acall de3

acall de3

acall de3

djnz r1,de5

retde3:

mov r5,#250

de4:

nopnop

djnz r5,de4

ret

end

中斷 按鍵控制LED燈

xjp的資源 初始化函式 init.c 進行一些初始化 include s3c24xx.h led1,led2,led4對應gpf4 gpf5 gpf6 define gpf4 out 1 define gpf5 out 1 define gpf6 out 1 define gpf4 msk 3 d...

Mixly按鍵控制LED燈

include include rfid rfid 10,5 unsigned char rc size unsigned char blockaddr 選擇操作的塊位址0 63 unsigned char i,tmp unsigned char status unsigned char str m...

Mixly按鍵控制LED燈

mixly按鍵控制led燈 實驗條件 膝上型電腦一台,硬體 arduino開發板,軟體 mixly 1 mixly圖形化程式設計 3 實驗效果圖 按下按鈕,燈亮 開關狀態laststate初始值為high,toggle 1 按一下按鈕,讀取目前開關的狀態,b1 low,toggle 0 b1!las...