用組合語言實現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

怎樣用組合語言實現求「1 2 3100」的和啊

冠月朗 dseg segment result dw 存放和 dseg ends cseg segment assume cs cseg,ds dsegstart mov ax,dseg mov ds,ax mov ax,1 從1開始加 mov result,0 和的初值賦0 mov cx,100 ...

使用組合語言,如何實現鍵盤控制數碼管顯示程式?如何對應鍵盤值在數碼管輸出相應的數值

line equ 30h row equ 31h val equ 32h org 00h start mov dptr,table 段碼錶首地址mov p2,00h 數碼管顯示初始化lscan mov p3,0f0h 列線置高電平,行線置高電平 l1 jnb p3.0,l2 逐行掃描lcall de...

51微控制器用組合語言實現八個LED的全亮全滅

樓主要的是彙編程源序。是 51 微控制器嗎?彙編程式如下 org 0000h mov a,7fh lop mov p0,a call delay clr crrc a cjne a,0,lop mov p0,a 全亮。call delay mov p0,255 全滅。call delay sjmp ...