汇编语言+第15章+键盘程序设计.ppt_第1页
汇编语言+第15章+键盘程序设计.ppt_第2页
汇编语言+第15章+键盘程序设计.ppt_第3页
汇编语言+第15章+键盘程序设计.ppt_第4页
汇编语言+第15章+键盘程序设计.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十五章键盘程序设计,15.1键盘的种类与扫描码15.2IBMPC/XT标准键盘接口15.3键盘中断程序设计,15.1键盘的种类与扫描码,5960F1F26162F3F46364F5F66566F7F86768F9F10,12!34#5$6%784243|444546474849505153?5455*ShiftZXCVBNM,./Shiftprtsc565758CapsAltSpacebarLock,69Num78ScrollLockLock717728739HomePgUp75476776579180282EndPgDn82883InsDel,74-78*28Enter,83键的键位布局和扫描码,412!34#5$6%78ENTER42444546474849505153?5743|ShiftZXCVBNM,./Shift5657CtrlAltSpacebarAltCtrl,PageInsHomeUpPageDelEndDown,69Num74Lock/*-717728739HomePgUp754765776791802813EndPgDn8283InsDelEnter,78*,1ESC,59606162F1F2F3F4,63646566F5F6F7F8,67686970F9F10F11F12,Prt70ScSRCPauseLock,NumCapsScrollLockLockLock口口口,15.1键盘的种类与扫描码,101键的键位布局和扫描码,15.2IBMPC/XT标准键盘接口,PA口PB7PB6,D1OECLRCLOCKM,QQRSD,DDQQ,DB,8255A,74LS322,键盘数据,键盘时钟,CLK,8259AIRQ1,15.2IBMPC/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)中断请求触发器的Q接至8259A的IRQ1端,Q接至键盘数据输入端,以保证在键盘数据未取出之前,禁止74LS322接收新数据。,15.2IBMPC/XT标准键盘接口,2.工作过程(1)将8255A的PB6置为1,PB7置为0,键盘逻辑可正常工作。(2)当用户按下某一键时,键位的扫描码的串行数据通过电缆送至74LS322的D1端。(3)74LS322按串行数据格式接收完一个扫描码后,保存起来,串行数据的起始位通过M端送入触发器,使触发器置1,产生中断请求信号,同时,封锁键盘数据线。(4)CPU响应中断,从8255A中读取扫描码,然后通过PB7发出一个正脉冲信号,清除74LS322寄存器和中断请求触发器,以备接收下一个扫描码。键按下和键抬起各产生一次中断请求,由扫描码的最高位识别,最高位为0,表示键按下,最高位为1,表示键抬起。(5)将读取的键位扫描码译为ASCII码,然后按需要进行解释。,15.3键盘中断程序设计,例15.1编制从键盘上接收字符并在屏幕上显示出来的程序,按ESC键则返回系统。从键盘上接收字符利用键盘中断服务程序实现,每当按下一键时,就进入中断服务程序,中断服务程序读取按键的扫描码,并进行译码,放入键盘缓冲区。在屏幕上显示字符,利用DOS中断的2号功能实现。主程序从键盘缓冲区中读取字符,利用DOS中断的2号功能在屏幕上显示出来。由此可见,键盘中断服务程序和主程序通过键盘缓冲区交换信息。键盘中断服务程序向缓冲区中写信息,而主程序则从键盘缓冲区中读取信息。,15.3键盘中断程序设计,键盘缓冲区是一个循环队列,按照先进先出的原则存取信息,当访问到最后一个单元时,再从头开始继续访问。示意如下:(1)初始化后,头指针,头指针:用于指示要读的信息在缓冲区中的位置尾指针:用于指示要写入的单元的位置,尾指针,头指针,15.3键盘中断程序设计,(2)写入4个数据后,尾指针,头指针,(3)读取2个数据后,尾指针,头指针,(4)写入1个数据后,尾指针,头指针,(5)再写入1个数据后,尾指针,15.3键盘中断程序设计,头指针,(6)此时再写入1个数据,尾指针,15.3键盘中断程序设计,缓冲区满状态:(尾指针+2)MOD缓冲区的长度=头指针,缓冲区空状态:头指针=尾指针,SSEGSEGMENTSTACKDB80DUP(0)SSEGENDSDATASEGMENTKEYIPDW?KEYCSDW?BTOPDW?BTLLDW?BUFFDW16DUP(0)SCTABDB0,1BH,1234567890-=,08HDB09H,QWERTYUIOP,0DHDB0,ASDFGHJKL;DB0,ZXCVBNM,./,0DB0,0,20H,13DUP(0)DB789-456+1230.,0DATAENDS,CODESEGMENTASSUMECS:CODE,DS:DATA,SS:SSEGKBPRGPROCFARPUSHDSXORAX,AXPUSHAXMOVBX,DATAMOVDS,BXCLICLDMOVES,AXMOVDI,9*4MOVAX,ES:DIMOVKEYIP,AXLEAAX,KBINTSTOSW,MOVAX,ES:DIMOVKEYCS,AXMOVAX,SEGKBINTSTOSWLEAAX,BUFFMOVBTOP,AXMOVBTLL,AXINAL,21HANDAL,0FDHOUT21H,ALSTINEXT:MOVBX,BTOPCMPBX,BTLLJZNEXTCLIMOVAX,BX,ADDBX,2CMPBX,OFFSETBUFF+32JNEDISPLEABX,BUFFDISP:MOVBTOP,BXSTICMPAL,0JZNEXTCMPAL,1BHJEEXITMOVAH,2MOVDL,ALINT21HCMPDL,0DHJNZNEXTMOVAH,2,MOVDL,0AHINT21HJMPNEXTEXIT:CLISUBDI,4MOVAX,KEYIPSTOSWMOVAX,KEYCSSTOSWSTIRETKBPRGENDPKBINTPROCPUSHAXPUSHBXPUSHSI,PUSHDSSTIMOVAX,DATAMOVDS,AXINAL,60HPUSHAXINAL,61HORAL,80HOUT61H,ALANDAL,7FHOUT61H,ALPOPAXTESTAL,80HJNZKBINT2MOVBX,BTLLMOVSI,BX,ADDBX,2CMPBX,OFFSETBUFF+32JNEKBINT1LEABX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论