请写出程序当键盘按键被按下和放开按键时的扫描码程序,能显示出来

请写出程序当键盘按键被按下和放开按键时的扫描码程序,能显示出来,第1张

4X4键盘,假设接在P1口上,

void Key_ScanAndAnswer(void) {

unsigned char data commonVariable = 0;

unsigned char data keyValue = 0;

P1 = 0xf0;//置P1高4位为输入口

if( P1 != 0xf0 ) {

Delay(20);//ms

if( P1 != 0xf0 ) {

commonVariable = P1;

P1 = 0x0f;//交换输入和输出

if( P1 != 0x0f ) {

commonVariable |= P1;

}

}

//这里对commonVariable变量做键值分析处理

keyValue = GetKeyValue(commonVariable);

//这里根据需要看是否显示按下时的键值,添加显示代码

Disp_KeyValue(keyValue);

P1 = 0xff;//再次配置输入口

while( P1 != 0xff ) {

//这里可以添加按键时间长短检测代码,分析长短按键

;

}

//到这里,按键已松开,按键扫描和处理结束

}

额,这个就不知道了不好意思

用十进制形式显示字符位置的代码如下:

DSEG SEGMENT

msgi db "please input a string:$";显示信息,提示输入一串字符

buf db 50,0

table db 50 dup ();输入字符串缓冲区

msgd db 0dh,0ah,"the location is:$";显示信息,提示0所在位置

DSEG ENDS

CSEG SEGMENT

assume cs:CSEG, ds:DSEG,es:DSEG

MAIN PROC FAR ;主程序入口

mov ax, dseg

mov ds, ax

mov es,ax

lea dx,msgi;显示信息,提示输入一串字符

mov ah,9

int 21h

lea dx,buf;输入字符串

mov ah,0ah

int 21h

lea si,buf

mov cl,[si+1];输入字符实际个数存入CX中

mov ch,0

lea di,table;输入字符起始地址存入DI

mov al,30h;要查找的字符0送AL

cld;置方向标志为地址增量

repnz scasb

jnz tj

lea dx,msgd;显示信息,提示0所在位置

mov ah,9

int 21h

sub di,offset table

mov bx,di

call disp;用十进制形式显示位置

tj:

mov ah,1;按任意键退出

int 21h

mov ax, 4c00h ;程序结束,返回到 *** 作系统系统

int 21h

MAIN ENDP

disp proc near

mov cx,10000d

call dec_div

mov cx,1000d

call dec_div

mov cx,100d

call dec_div

mov cx,10d

call dec_div

mov cx,1d

call dec_div

ret

dec_div proc near

mov ax,bx

mov dx,0

div cx

mov bx,dx

mov dl,al

add dl,30h

mov ah,2

int 21h

ret

dec_div endp

disp endp

CSEG ENDS

END MAIN

STACK SEGMENT PARA STACK 'STACK'

DB 256 Dup(0) ;初始化堆栈大小为256

STACK ENDS

DATA SEGMENT PARA PUBLIC 'DATA' ;数据段:在此处添加程序所需的数据

MASSAGE DB ' USER KEYBOARD SUPPORT PROGRAM "ESC" TO QUIT',0DH,0AH,'$' ;显示提示信息

KBACKSPACE DB 08H,' ',08H,'$' ;退格删除BACKSPACE键功能定义

KTAB DB 09H,'$' ; TAB键定义

kF1 DB ' you press F1',0DH,0AH,'$' ;定义F1

kF2 DB ' you press F2',0DH,0AH,'$' ;定义F2

kF3 DB ' you press F3',0DH,0AH,'$' ;定义F3

kF4 DB ' you press F4 and after this use the number express F',0DH,0AH,'$' ;定义F4

BUFFER DB 10 DUP(0) ; 定义扫描码缓冲区

BUFPTR1 DW 0 ; 缓冲区显示调用指针

BUFPTR2 DW 0 ; 缓冲区存储中断指针

KSHIFT DW 0 ; SHIFT键标志

SCANTABLE DB 0 ; 以下为无SHIFT情况下的键盘ASCII表

DB 01H

DB '1234567890-='

DB 0EH,0FH ; 0EH BACKSPACE

; 0FH TAB

DB 'qwertyuiop[]'

DB 0DH,0 ; 0DH 回车

DB 'asdfghjkl;'

DB 27H ; '

DB 60H,0 ; `

DB '\'

DB 'zxcvbnm,/',0,'',0,' '

DB 0,3BH,3CH,3DH,3EH,'567890',0,0 ;上档键F1扫描码3BH

DB '789-456+1230'

SCANTABLE1 DB 0 ;以下为有SHIFT情况下的ASCII键盘表

DB 01H

DB '!@#$%^&()_+',0,0

DB 'QWERTYUIOP{}',0

DB 0

DB 'ASDFGHJKL:"'

DB '~',0

DB '|'

DB 'ZXCVBNM<>'

DATA ENDS

CODE SEGMENT PARA PUBLIC 'CODE'

MAIN PROC FAR

ASSUME CS:CODE

PUSH DS ; 保留PSP的段地址

MOV AX,0 ; 保留PSP的IP

PUSH AX

以上就是关于请写出程序当键盘按键被按下和放开按键时的扫描码程序,能显示出来全部的内容,包括:请写出程序当键盘按键被按下和放开按键时的扫描码程序,能显示出来、用汇编语言编一个程序,要求如下:、在键盘上输入一个数字显示其对应上档键内容的汇编程序求解答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10132651.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存