汇编语言+第15章+键盘程序设计

上传人:xh****66 文档编号:61660115 上传时间:2018-12-08 格式:PPT 页数:16 大小:83KB
返回 下载 相关 举报
汇编语言+第15章+键盘程序设计_第1页
第1页 / 共16页
汇编语言+第15章+键盘程序设计_第2页
第2页 / 共16页
汇编语言+第15章+键盘程序设计_第3页
第3页 / 共16页
汇编语言+第15章+键盘程序设计_第4页
第4页 / 共16页
汇编语言+第15章+键盘程序设计_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《汇编语言+第15章+键盘程序设计》由会员分享,可在线阅读,更多相关《汇编语言+第15章+键盘程序设计(16页珍藏版)》请在金锄头文库上搜索。

1、第十五章 键盘程序设计,15.1 键盘的种类与扫描码 15.2 IBM PC/XT标准键盘接口 15.3 键盘中断程序设计,15.1 键盘的种类与扫描码,59 60 F1 F2 61 62 F3 F4 63 64 F5 F6 65 66 F7 F8 67 68 F9 F10,1 2 ! 3 4 # 5 $ 6 % 7 8 42 43 | 44 45 46 47 48 49 50 51 53 ? 54 55 * Shift Z X C V B N M , . / Shift prtsc 56 57 58 Caps Alt Spacebar Lock,69 Num 78 Scroll Lock L

2、ock 71 7 72 8 73 9 Home PgUp 75 4 76 77 6 5 79 1 80 2 82 End PgDn 82 8 83 Ins Del,74 - 78 * 28 Enter,83键的键位布局和扫描码,41 2 ! 3 4 # 5 $ 6 % 7 8 ENTER 42 44 45 46 47 48 49 50 51 53 ? 57 43 | Shift Z X C V B N M , . / Shift 56 57 Ctrl Alt Spacebar Alt Ctrl,Page Ins Home Up Page Del End Down, ,69Num 74 Lock

3、 / * - 71 7 72 8 73 9 Home PgUp 75 4 76 5 77 6 79 1 80 2 81 3 End PgDn 82 83 Ins Del Enter,78 *,1 ESC,59 60 61 62 F1 F2 F3 F4,63 64 65 66 F5 F6 F7 F8,67 68 69 70 F9 F10 F11 F12,Prt 70 Sc SRC Pause Lock,Num Caps Scroll Lock Lock Lock 口 口 口,15.1 键盘的种类与扫描码,101键的键位布局和扫描码,15.2 IBM PC/XT标准键盘接口,PA口 PB7 PB6

4、,D1 OE CLR CLOCK M,Q Q R S D,D D Q Q,DB,8255A,74LS322,键盘数据,键盘时钟,CLK,8259A IRQ1,15.2 IBM PC/XT标准键盘接口,信号连接及使用 (1)系统加电后,将8255A初始化为方式0,PA口为输入方式, PB口为输出方式。 (2)PB口的PB6用于控制键盘时钟: 当PB6=0时,禁止键盘输出; 当PB6=1时,允许键盘输出。 (3)PB口的PB7控制74LS322的输出: PB7=0时,允许74LS322输出;PB7=1时,禁止74LS322输出。 同时,PB7还用于清除74LS322和中断请求触发器。 (4)中断请

5、求触发器的Q接至8259A的IRQ1端,Q接至键盘数 据输入端,以保证在键盘数据未取出之前,禁止74LS322接收 新数据。,15.2 IBM PC/XT标准键盘接口,2. 工作过程 (1)将8255A的PB6置为1,PB7置为0,键盘逻辑可正常工作。 (2)当用户按下某一键时,键位的扫描码的串行数据通过电缆 送至74LS322的D1端。 (3)74LS322按串行数据格式接收完一个扫描码后,保存起来, 串行数据的起始位通过M端送入触发器,使触发器置1,产生中断 请求信号,同时,封锁键盘数据线。 (4)CPU响应中断,从8255A中读取扫描码,然后通过PB7发 出一个正脉冲信号,清除74LS3

6、22寄存器和中断请求触发器,以备 接收下一个扫描码。 键按下和键抬起各产生一次中断请求,由扫描码的最高位识别, 最高位为0,表示键按下,最高位为1,表示键抬起。 (5)将读取的键位扫描码译为ASCII码,然后按需要进行解释。,15.3 键盘中断程序设计,例15.1 编制从键盘上接收字符并在屏幕上显示出来的程序,按ESC键则返回系统。 从键盘上接收字符利用键盘中断服务程序实现,每当按下一键时,就进入中断服务程序,中断服务程序读取按键的扫描码,并进行译码,放入键盘缓冲区。 在屏幕上显示字符,利用DOS中断的2号功能实现。主程序从键盘缓冲区中读取字符,利用DOS中断的2号功能在屏幕上显示出来。 由此

7、可见,键盘中断服务程序和主程序通过键盘缓冲区交换信息。键盘中断服务程序向缓冲区中写信息,而主程序则从键盘缓冲区中读取信息。,15.3 键盘中断程序设计,键盘缓冲区是一个循环队列,按照先进先出的原则存取信息,当访问到最后一个单元时,再从头开始继续访问。示意如下: (1)初始化后,头指针,头指针:用于指示要读的信息在缓冲区中的位置 尾指针:用于指示要写入的单元的位置,尾指针,头指针,15.3 键盘中断程序设计,(2)写入4个数据后,尾指针,头指针,(3)读取2个数据后,尾指针,头指针,(4)写入1个数据后,尾指针,头指针,(5)再写入1个数据后,尾指针,15.3 键盘中断程序设计,头指针,(6)此

8、时再写入1个数据,尾指针,15.3 键盘中断程序设计,缓冲区满状态: (尾指针+2)MOD 缓冲区的长度=头指针,缓冲区空状态: 头指针=尾指针,SSEG SEGMENT STACK DB 80 DUP(0) SSEG ENDS DATA SEGMENT KEYIP DW ? KEYCS DW ? BTOP DW ? BTLL DW ? BUFF DW 16 DUP(0) SCTAB DB 0,1BH,1234567890-=,08H DB 09H,QWERTYUIOP,0DH DB 0,ASDFGHJKL; DB 0,ZXCVBNM,./,0 DB 0,0,20H,13 DUP(0) DB

9、789-456+1230.,0 DATA ENDS,CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSEG KBPRG PROC FAR PUSH DS XOR AX,AX PUSH AX MOV BX,DATA MOV DS,BX CLI CLD MOV ES,AX MOV DI,9*4 MOV AX,ES:DI MOV KEYIP,AX LEA AX,KBINT STOSW,MOV AX,ES:DI MOV KEYCS,AX MOV AX,SEG KBINT STOSW LEA AX,BUFF MOV BTOP,AX MOV BTLL,AX IN AL,21

10、H AND AL,0FDH OUT 21H,AL STI NEXT: MOV BX,BTOP CMP BX,BTLL JZ NEXT CLI MOV AX,BX,ADD BX,2 CMP BX,OFFSET BUFF+32 JNE DISP LEA BX,BUFF DISP: MOV BTOP,BX STI CMP AL,0 JZ NEXT CMP AL,1BH JE EXIT MOV AH,2 MOV DL,AL INT 21H CMP DL,0DH JNZ NEXT MOV AH,2,MOV DL,0AH INT 21H JMP NEXT EXIT: CLI SUB DI,4 MOV AX

11、,KEYIP STOSW MOV AX,KEYCS STOSW STI RET KBPRG ENDP KBINT PROC PUSH AX PUSH BX PUSH SI,PUSH DS STI MOV AX,DATA MOV DS,AX IN AL,60H PUSH AX IN AL,61H OR AL,80H OUT 61H,AL AND AL,7FH OUT 61H,AL POP AX TEST AL,80H JNZ KBINT2 MOV BX,BTLL MOV SI,BX,ADD BX,2 CMP BX,OFFSET BUFF+32 JNE KBINT1 LEA BX,BUFF KBINT1: CMP BX,BTOP JE KBINT2 MOV BTLL,BX MOV AH,AL LEA BX,SCTAB XLAT MOV SI,AX KBINT2: MOV AL,20H OUT 20H,AL POP DS POP SI POP BX,POP AX IRET KBINT ENDP CODE ENDS END KBPRG,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号