用組合語言實現3 3鍵盤(1 9),當相應鍵按下時,LED上

時間 2021-11-04 16:42:27

1樓:匿名使用者

下列程式已經調好,按鍵顯示電路可見:

//微控制器:使用51系列相容的即可;

//4×4矩陣鍵盤:接在p1口;

//兩位數碼顯示器: p0口輸出七段碼,p2口輸出位選碼。

/****************************************

//c語言程式如下。

* 檔名: key_led.c

* 功能 : 對4×4矩陣鍵盤進行輸出,在數碼管後兩位顯示按鍵值。

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table[10] = ;

uchar sec, t_50ms;

* 名稱 : delay_1ms()

* 功能 : 延時子程式,延時時間為 1ms * x

* 輸入 : x (延時一毫秒的個數)

* 輸出 : 無

void delay_1ms(uint x)

* 名稱: display(uchar k)

* 功能: 將引數分成十位、個位分別顯示

* 輸入: k (鍵盤數值)

* 輸出: p0口輸出七段碼,p2口輸出位選碼

void display(uchar k)

* 名稱: keyscan()

* 功能: p1外接4×4按鍵, 按照掃描法讀出鍵值

* 輸出: 按鍵值0~15/如無鍵按下, 返回16

uchar keyscan(void)

}return 16; //判斷結束,沒有鍵按下,返回16

} //呵呵,實質性的語句不過8行,就是這麼簡練!

* 名稱: getkey()

* 功能: 讀出按鍵、消抖、等待按鍵釋放

* 輸出: 按鍵值0~15/如無鍵按下, 返回16

uchar getkey(void)

* 名稱 : main()

* 功能 : 主函式

void main(void)

if (key_value == 10) tr0 = 1;

} } }

* 名稱 : t0_int()

* 功能 : t0中斷函式

void t0_int() interrupt 1

2樓:匿名使用者

org 0000h

ajmp main

org 0030h

main:mov p1,#07h

loop:mov p0,#0fehacall scankey

mov p0,#0fdh

acall scankey

mov p0,#0fbh

acall scankey

mov p0,#0f7h

acall scankey

ajmp loop

scankey:mov a,p0

cjne a,#0eeh,next2mov a,#00h

ajmp sendled

next2:cjne a,#0deh,next3mov a,#01h

ajmp sendled

next3:cjne a,#0beh,next4mov a,#02h

ajmp sendlednext4:cjne a,#07eh,next5mov a,#03h

ajmp sendled

next5:cjne a,#0edh,next6mov a,#04h

ajmp sendled

next6:cjne a,#0ddh,next7mov a,#05h

ajmp sendled

next7:cjne a,#0bdh,next8mov a,#06h

ajmp sendled

next8:cjne a,#07dh,next9mov a,#07h

ajmp sendled

next9:cjne a,#0ebh,next10mov a,#08h

ajmp sendled

next10:cjne a,#0dbh,next_amov a,#09h

ajmp sendled

next_a:cjne a,#0bbh,next_bmov a,#0ah

ajmp sendled

next_b:cjne a,#07bh,next_cmov a,#0bh

ajmp sendled

next_c:cjne a,#0e7h,next_dmov a,#0ch

ajmp sendled

next_d:cjne a,#0d7h,next_emov a,#0dh

ajmp sendled

next_e:cjne a,#0b7h,next_fmov a,#0eh

ajmp sendled

next_f:cjne a,#77h,scan_remov a,#0fh

sendled:mov dptr,#ledcodemovc a,@a+dptr

mov p1,a

scan_re:ret

ledcode:db 3fh,06h, 5bh , 4fh ,66h, 6dh

db 7dh, 07h, 7fh , 6fh, 77h,7chdb 39h, 5eh, 79h,71hend

用組合語言編寫求數的平均數,用組合語言編寫求三個數的平均數

孟靜渠思雨 data segmentxdw 345y dw234zdw 234m dw897ndw 999 定義五個數rdw 2dup 儲存結果 data ends code segment assume cs code,ds data start movax,data movds,ax movax...

用組合語言編寫延時1S的子程式,用組合語言編寫乙個延時1S的子程式

湯旺河邊 本程式通過編譯,執行正確 code segment assume cs code,ds code subroutine 延時指定的時鐘嘀嗒數 入口 didas 時鐘嘀嗒數 1秒鐘約嘀嗒18.2次,10秒鐘嘀嗒182次。若延時不是秒的10數次倍,誤差稍微大點 delay1s proc nea...

用組合語言編寫簡單程式,用組合語言編寫一個簡單程式

sweet馮 1.計算u x y z 100 w 其中 x,y,z,w均為十六位有符號數。程式如下 data segment x dw 10 16位變數 y dw 20 z dw 30 w dw 40 u dw data ends code segment assume cs code,ds dat...