《最新微机技术第11章 并行接口PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机技术第11章 并行接口PPT课件.ppt(126页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机技术第微机技术第1111章章 并行接口并行接口第第11 11章章 并行接口并行接口教学重点n 8255A的工作方式和编程的工作方式和编程n 8255A的应用的应用n 简易键盘的扫描程序简易键盘的扫描程序n LED数码管的多位显示数码管的多位显示方式0输入时序datadata输入端口输入端口D0D7RD CS,A1,A0请体会这里请体会这里8255A8255A的数据缓冲作用的数据缓冲作用方式0输出时序WRdatadata输出端口输出端口D0D7 CS,A1,A08255A8255A对对CPUCPU通过它输出给外设的数据进行锁存通过它输出给外设的数据进行锁存方式1输入引脚:A端口数据选通信号表
2、示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7PA0INTEAIBFAINTRASTBA中断允许触发器方式1输入引脚:B端口PC2PC1PC0PB7PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据中断允许触发器方式方式1 1需借用端口需借用端口C C用做联络信号用做联络信号同时还具有中断请求和屏蔽功能同时还具有中断请求和屏蔽功能方式1输入联络信号nSTB*选通信号,低电平有效选通信号,低电平有效n由由外外设设提提供供的的输输入入信信号号,
3、当当其其有有效效时时,将将输输入入设设备备送送来的数据锁存至来的数据锁存至8255A的输入锁存器的输入锁存器nIBF输入缓冲器满信号,高电平有效输入缓冲器满信号,高电平有效n8255A输输出出的的联联络络信信号号。当当其其有有效效时时,表表示示数数据据已已锁锁存在输入锁存器存在输入锁存器nINTR中断请求信号,高电平有效中断请求信号,高电平有效n8255A输输出出的的信信号号,可可用用于于向向CPU提提出出中中断断请请求求,要要求求CPU读取外设数据读取外设数据方式1输入时序dataINTRIBF data输入端口输入端口D0D7STBRDSTB*STB*和和IBFIBF是外设和是外设和825
4、5A8255A间间的一对应答联络信号,的一对应答联络信号,为的是可靠地输入数据为的是可靠地输入数据方式1中断控制n8255A的中断由中断允许触发器的中断由中断允许触发器INTE控制控制n置位允许中断,复位禁止中断置位允许中断,复位禁止中断n对对INTE的的操操作作通通过过写写入入端端口口C的的对对应应位位实实现现,INTE触触发发器器对对应应端端口口C的的位位是是作作应应答答联联络络信信号号的的输输入入信信号号的的哪哪一一位位,只只要要对对那那一位置位一位置位/复位就可以控制复位就可以控制INTE触发器触发器n选通输入方式下选通输入方式下n端口端口A的的INTEA对应对应PC4n端口端口B的的
5、INTEB对应对应PC2方式1输出引脚:A端口外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7PA0INTEAOBFAINTRAACKA中断允许触发器方式1输出引脚:B端口PC2PC1PC0PB7PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器方式1输出联络信号nOBF*输出缓冲器满信号,低有效输出缓冲器满信号,低有效n8255A输输出出给给外外设设的的一一个个控控制制信信号号,当当其其有有效效时
6、时,表表示示CPU已把数据输出给指定的端口,外设可以取走已把数据输出给指定的端口,外设可以取走nACK*响应信号,低有效响应信号,低有效n外外设设的的响响应应信信号号,指指示示8255A的的端端口口数数据据已已由由外外设设接接受受nINTR中断请求信号,高有效中断请求信号,高有效n当当输输出出设设备备已已接接受受数数据据后后,8255A输输出出此此信信号号向向CPU提出中断请求,要求提出中断请求,要求CPU继续提供数据继续提供数据端口端口A A的的INTEAINTEA对应对应PCPC6 6端口端口B B的的INTEBINTEB对应对应PCPC2 2方式1输出时序 INTR datadata输出
7、端口输出端口D0D7WROBFACK OBF*OBF*和和ACK*ACK*是外设和是外设和8255A8255A间间的一对应答联络信号,的一对应答联络信号,为的是可靠地输出数据为的是可靠地输出数据方式2双向方式n方方式式2将将方方式式1的的选选通通输输入入输输出出功功能能组组合合成成一一个个双向数据端口,可以发送数据和接收数据双向数据端口,可以发送数据和接收数据n只只有有端端口口A可可以以工工作作于于方方式式2,需需要要利利用用端端口口C的的5个信号线,其作用与方式个信号线,其作用与方式1相同相同n方式方式2的数据输入过程与方式的数据输入过程与方式1的输入方式一样的输入方式一样n方方式式2的的数
8、数据据输输出出过过程程与与方方式式1的的输输出出方方式式有有一一点点不不同同:数数据据输输出出时时8255A不不是是在在OBF*有有效效时时向向外外设设输输出出数数据据,而而是是在在外外设设提提供供响响应应信信号号ACK*时才送出数据时才送出数据方式2双向引脚PC6PC7PC3PA7PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6设置INTE1(输出)用PC4设置INTE2(输入)输入和输出中断通过或门输出INTRA信号方式2双向时序data-out INTR data-outdata-indata-inPA0PA7D0D7IBF WROBFACKSTB
9、RD11.1.3 8255A的编程n初始化编程:一个方式控制字初始化编程:一个方式控制字n采用控制采用控制I/O地址:地址:A1A011n工工作作过过程程中中:通通过过数数据据端端口口对对外外设设数数据据进行读写进行读写n数数据据读读写写利利用用端端口口A、B和和C的的I/O地地址址,A1A0依次等于依次等于00、01、10nIBM PC/XT机机上上,端端口口A、B、C和和控控制制端口的端口的I/O地址为地址为60H、61H、62H和和63H1.写入方式控制字:控制字格式1.写入方式控制字:示例n要求:要求:nA端口:方式端口:方式1输入输入nC端口上半部:输出,端口上半部:输出,C口下半部
10、:输入口下半部:输入nB端口:方式端口:方式0输出输出n方式控制字:方式控制字:10110001B或或B1Hn初始化的程序段:初始化的程序段:mov dx,0fffeh;假设控制端口为假设控制端口为FFFEHmov al,0b1h;方式控制字方式控制字out dx,al;送到控制端口送到控制端口2.读写数据端口n初始化编程后:初始化编程后:n当当数数据据端端口口作作为为输输入入接接口口时时,执执行行输输入入IN指指令将从输入设备得到外设数据令将从输入设备得到外设数据n当当数数据据端端口口作作为为输输出出接接口口时时,执执行行输输出出OUT指令将把指令将把CPU的数据送给输出设备的数据送给输出设
11、备n8255A具有锁存输出数据的能力具有锁存输出数据的能力n对输出方式的端口同样可以输入对输出方式的端口同样可以输入n不是读取外设数据不是读取外设数据n读取的是上次读取的是上次CPU给外设的数据给外设的数据2.读写数据端口:示例n利利用用8255A的的输输出出锁锁存存能能力力,可可实实现现按按位位输出控制输出控制 n对输出端口对输出端口B的的PB7位置位的程序段:位置位的程序段:mov dx,0fffah;B端口假设为端口假设为FFFAHin al,dx;读出读出B端口原输出内容端口原输出内容or al,80h;使使PB71out dx,al;输出新的内容输出新的内容3.读写端口C:归纳1nC
12、端端口口被被分分成成两两个个4位位端端口口,两两个个端端口口只只能能以以方方式式0工工作作,可可分分别别选选择择输入或输出输入或输出n在在控控制制上上,C端端口口上上半半部部和和A端端口口编编为为A组,组,C端口下半部和端口下半部和B端口编为端口编为B组组3.读写端口C:归纳2n当当A和和B端端口口工工作作在在方方式式1或或方方式式2时时,C端端口口的的部部分分或或全全部引脚将部引脚将被征用被征用n其余引脚仍可设定工作在方式其余引脚仍可设定工作在方式03.读写端口C:归纳3n对端口对端口C的数据输出有两种办法的数据输出有两种办法n通通过过端端口口C的的I/O地地址址:向向C端端口口直直接接写写
13、入入字字节节数数据据。这这一一数数据据被被写写进进C端端口口的的输输出出锁锁存存器器,并并从从输输出出引引脚脚输输出出,但但对对设设置置为为输入的引脚无效输入的引脚无效n通通过过控控制制端端口口:向向C端端口口写写入入位位控控字字,使使C端端口口的的某某个个引引脚脚输输出出1或或0,或或置置位位复复位位内内部的中断允许触发器部的中断允许触发器端口C的位控制字n位控制字写入控制端口位控制字写入控制端口n特特别别便便于于置置位位复复位位内内部部中断允许触发器中断允许触发器INTE3.读写端口C:归纳4n读取的读取的C端口数据有两种情况端口数据有两种情况n未未被被A和和B端端口口征征用用的的引引脚脚
14、:将将从从定定义义为为输输入入的的端端口口读读到到引引脚脚输输入入信信息息;将将从从定定义义为为输出的端口读到输出锁存器中的信息输出的端口读到输出锁存器中的信息n被被A和和B端端口口征征用用作作为为联联络络线线的的引引脚脚:将将读读到反映到反映8255A状态的状态的状态字状态字D D7 7D D6 6D D5 5D D4 4D D3 3D D2 2D D1 1D D0 0方式方式1输入输入I/OI/OIBFAINTEA INTRAINTEBIBFBINTRB方式方式1输出输出OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式方式2双向双向OBFAINTE1IBFAINTE
15、2INTRA端口C的状态字A组组B组组11.2 8255A的应用作作为为通通用用的的并并行行接接口口电电路路芯芯片片,825A具有广泛的应用具有广泛的应用n应用在应用在IBM PC/XT微机上微机上n应用于打印机接口电路应用于打印机接口电路n连接简易键盘连接简易键盘n驱动驱动LED数码管数码管n11.2.1 8255A在IBM PC/XT上的应用n工作在基本输入工作在基本输入/输出方式输出方式0n端口端口A为方式为方式0输入,用来读取键盘扫描码输入,用来读取键盘扫描码n端口端口B工作于方式工作于方式0输出,例如输出,例如控制扬声器控制扬声器等等n端口端口C为方式为方式0输入,读取系统状态和配置
16、输入,读取系统状态和配置n系统的初始化编程:系统的初始化编程:mov al,10011001b;方式控制字方式控制字99Hout 63h,al打印机接口的信号与时序BUSYDATA07ACKSTROBEn主机把数据送给引脚主机把数据送给引脚DATA0DATA7n同时送出数据选通信号同时送出数据选通信号STROBE*n打印机在打印机在BUSY信号线上发出忙信号信号线上发出忙信号n打印机处理好输入的数据时打印机处理好输入的数据时n撤消忙信号撤消忙信号n同时又送出一个响应信号同时又送出一个响应信号ACK*11.2.2 用8255A方式0与打印机接口BUSY DATA078255APC7PC2PA0P
17、A7打印机打印机STROBE8255A的初始化mov dx,0fffeh;控制端口地址:控制端口地址:FFFEHmov al,10000001B;方式控制字:方式控制字:91Hout dx,al;A端口方式端口方式0输出,输出,C端口上输出、下输入端口上输出、下输入mov al,00001111B;端口端口C的复位置位控制字,使的复位置位控制字,使PC71out dx,al例11.1打印子程序:查询printcprocpush axpush dxprn:mov dx,0fffch;读取端口读取端口Cin al,dx;查询打印机状态查询打印机状态and al,04h;PC2BUSY0?jnz p
18、rn;PC21,打印机忙,则循环等待,打印机忙,则循环等待例11.1打印子程序:输出mov dx,0fff8h;PC20,打印机不忙,则输出数据,打印机不忙,则输出数据mov al,ahout dx,al;将打印数据从端口将打印数据从端口A输出输出例11.1打印子程序:打印mov dx,0fffeh;从从PC7送出控制低脉冲送出控制低脉冲mov al,00001110B;置置STROBE*0out dx,alnop;产生一定宽度的低电平产生一定宽度的低电平nopmov al,00001111B;置置=1out dx,al;最终,最终,STROBE*产生低脉冲信号产生低脉冲信号例11.1打印子程
19、序:返回pop dxpop axretprintcendp例11.111.2.3 用8255A方式1与打印机接口1000pf2K15321441LS123单稳单稳电路电路+5VDATA078255APC6INTRPC3PC7PA0PA7打印机打印机ACKACKOBFSTROBE8255A方式1与打印机接口时序配合PA0PA7(DATA07)ACKOBFSTROBE方式方式1 1时序时序打印机时序打印机时序8255A的初始化mov dx,0fffehmov al,0a0hout dx,almov al,0ch;使使INTEA(PC6)为)为0,禁止中断,禁止中断out dx,almov cx,c
20、ounter;打印字节数送打印字节数送CXmov bx,offset buffer;取字符串首地址取字符串首地址call prints;调用打印子程序调用打印子程序例11.2打印子程序:输出printsprocpush ax;保护寄存器保护寄存器push dxprint1:mov al,bx;取一个数据取一个数据mov dx,0fff8hout dx,al;从端口从端口A输出输出 例11.2打印子程序:查询mov dx,0fffchprint2:in al,dxtest al,80h;检测(检测(PC7)为)为1否否?jz print2;为为0,说明打印机没有响应,继续检测,说明打印机没有响应
21、,继续检测 例11.2打印子程序:返回inc bx;为为1,说明打印机已接受数据,说明打印机已接受数据loop print1;准备取下一个数据输出准备取下一个数据输出pop dx;打印结束,恢复寄存器打印结束,恢复寄存器pop axret;返回返回printsendp例11.211.2.4 双机并行通信接口PA0PA7PC4PC08255A甲方(发送)甲方(发送)PA0PA7PC7PC68255A已方(接收)已方(接收)甲机的初始化mov dx,0fffehmov al,0a0hout dx,al;工作方式字:端口工作方式字:端口A方式方式1输出输出mov al,0dh;使使PC6(INTEA
22、)1,允许中断,允许中断out dx,al例11.3甲机发送程序trsmt:mov dx,0fffchin al,dx;查询查询PC3(INTRA)1?and al,08hjz trsmtmov dx,0fff8h;发送数据发送数据mov al,ahout dx,al例11.3乙机的初始化mov dx,0fffehmov al,98hout dx,al;工作方式字:端口工作方式字:端口A方式方式0输入输入mov al,01h;使使PC0(ACK*)1,因尚未收到数据,因尚未收到数据out dx,al例11.3乙机:查询接收receive:mov dx,0fffchin al,dx;查询查询PC
23、4(OBF*)0?and al,10hjnz receivemov dx,0fff8h ;接收数据接收数据in al,dxmov ah,al例11.3乙机:接收响应mov dx,0fffehmov al,00h;使使PC0(ACK*)0out dx,alnop;适当延时,产生一定宽度的低脉冲适当延时,产生一定宽度的低脉冲nopmov al,01h;使使PC0(ACK*)1out dx,al;产生低脉冲产生低脉冲ACK*信号信号例11.3实验实验5 5 并行接口实验并行接口实验n 要求要求类似习题类似习题11.8n 要求要求对应例题对应例题11.2n 请请在在对对比比过过程程中中,掌掌握握例例题
24、题、习题和完成实验要求习题和完成实验要求 提提示示11.3 键盘及其接口n键盘是微机系统最常使用的输入设备键盘是微机系统最常使用的输入设备n小小键键盘盘:适适用用于于单单板板机机或或以以微微处处理理器器为为基基础础的的仪仪器器,实实现现数数据据、地地址址、命命令令及及指指令令等的输入等的输入n独独立立键键盘盘:通通过过5芯芯电电缆缆与与PC微微机机主主机机连连接接11.3.1 简易键盘的工作原理+5V+5V+5Vn最简单的线性结构键盘最简单的线性结构键盘n每一个引脚连接一个键每一个引脚连接一个键n输入输入0/1反映健是否高低反映健是否高低11.3.1 简易键盘的工作原理+5V+5V控制线控制线
25、检检测测线线n常用的常用的矩阵结构矩阵结构键盘键盘n每行连接一个引脚每行连接一个引脚n每列连接一个引脚每列连接一个引脚n利利 用用 控控 制制 线线 为为 低低、读取检测线来识别闭合键读取检测线来识别闭合键1.扫描法n先先使使第第0行行接接低低电电平平,其其余余行行为为高高电电平平,然然后后看看第第0行是否有键闭合(通过检查列线电位实现)行是否有键闭合(通过检查列线电位实现)n此此后后,再再将将第第1行行接接地地,然然后后检检测测列列线线是是否否有有变变为为低低电电位位的的线线。如如此此往往下下一一行行一一行行地地扫扫描描,直直到到最最后一行后一行n在在扫扫描描过过程程中中,当当发发现现某某一
26、一行行有有键键闭闭合合时时,便便在在扫描中途退出扫描中途退出n通过组合行线和列线可识别此刻按下的是哪一键通过组合行线和列线可识别此刻按下的是哪一键第1段:是否有键按下key1:mov al,00mov dx,rowportout dx,al;使所有行线为低电平使所有行线为低电平 mov dx,colport in al,dx;读取列值读取列值cmp al,0ffh;判定是否有列线为低电平判定是否有列线为低电平jz key1;无闭合键,循环等待无闭合键,循环等待call delay;有,延迟有,延迟20ms清除抖动清除抖动键盘扫描程序第2段:识别按键(扫描)mov cx,8;行数送行数送CXmo
27、v ah,0feh;扫描初值送扫描初值送AHkey2:mov al,ahmov dx,rowportout dx,al;输出行值(扫描值)输出行值(扫描值)mov dx,colportin al,dx;读进列值读进列值键盘扫描程序第2段:识别按键(判断)cmp al,0ffh;判断有无低电平的列线判断有无低电平的列线jnz key3;有,则转下一步处理有,则转下一步处理rol ah,1;无,则移位扫描值无,则移位扫描值loop key2;准备下一行扫描准备下一行扫描jmp key1;所有行都没有键按下,则返回继续检测所有行都没有键按下,则返回继续检测key3:;此时,此时,al列值,列值,ah
28、行值行值键盘扫描程序2.反转法n首首先先,将将行行线线作作为为控控制制线线接接一一个个输输出出端端口口,将将列列线作为检测线接一个输入端口线作为检测线接一个输入端口nCPU通通过过输输出出端端口口将将行行线线(控控制制线线)全全部部设设置置为为低低电电平,然后从输入端口读取列线(检测线)平,然后从输入端口读取列线(检测线)n然然后后,将将行行线线和和列列线线的的作作用用互互换换,即即将将列列线线作作为为控制线接输出端口,行线作为检测线接输入端口控制线接输出端口,行线作为检测线接输入端口n将将刚刚才才读读得得的的列列值值从从列列线线所所接接端端口口输输出出,再再读读取取行行线线的输入值的输入值n
29、这这样样,当当一一个个键键被被按按下下时时,必必定定可可以以读读得得一一对对唯唯一的行值和列值一的行值和列值条件条件:连接行线和列线的接口电路:连接行线和列线的接口电路必须支持必须支持动态改变输入、输出方式动态改变输入、输出方式第1段:是否有键按下;设置行线接输出端口,列线接输入端口设置行线接输出端口,列线接输入端口key2:mov al,00mov dx,rowportout dx,al;设置行线全为低设置行线全为低mov dx,colportin al,dx;读取列值读取列值cmp al,0ffhjz key2;无闭合键,循环等待无闭合键,循环等待push ax;有闭合键,保存列值有闭合键
30、,保存列值 push ax键盘扫描程序第2段:识别按键(反转法);设置行线接输入端口,列线接输出端设置行线接输入端口,列线接输出端mov dx,colportpop axout dx,al;输出列值输出列值mov dx,rowportin al,dx;读取行值读取行值pop bx;组合行列值组合行列值mov ah,bl;此时,此时,al行值,行值,ah列值列值键盘扫描程序行列值表和键代码表;键盘的行列值表键盘的行列值表tabledw 0fefeh;键键0的行列值(键值)的行列值(键值)dw 0fdfeh;键键1的行列值的行列值dw 0fbfeh;键键2的行列值的行列值;其他键的行列值其他键的行
31、列值;键盘的键代码表键盘的键代码表chardb;键键0的代码值的代码值db;键键1的代码值的代码值;其他键的代码值其他键的代码值键盘扫描程序第3段:查找键代码mov si,offset tablemov di,offset charmov cx,64;CX键的个数键的个数key3:cmp ax,si;与键值比较与键值比较 jz key4;相同,说明查到相同,说明查到inc si;不相同,继续比较不相同,继续比较inc siinc diloop key3jmp key1;全部比较完,仍无相同,说明是重键全部比较完,仍无相同,说明是重键键盘扫描程序第4段:等待按键释放key4:mov al,di;
32、获取键代码送获取键代码送AL;判断按键是否释放,没有则等待判断按键是否释放,没有则等待call delay;按键释放,延时消除抖动按键释放,延时消除抖动;后续处理后续处理键盘扫描程序3.抖动和重健问题n机械按键存在机械按键存在抖动现象抖动现象n当当按按下下或或释释放放一一个个键键时时,往往往往会会出出现现按按键键在在闭闭合合位位置置和断开位置之间跳几下才稳定到闭合状态和断开位置之间跳几下才稳定到闭合状态n抖动的持续时间通常不大于抖动的持续时间通常不大于10msn采用采用硬件消抖电路硬件消抖电路或软件延时方法解决或软件延时方法解决n重键指两个或多个键同时闭合重键指两个或多个键同时闭合n出现重键时
33、,读取的键值必然出现有一个以上的出现重键时,读取的键值必然出现有一个以上的0n是否给予识别和识别哪一个键是否给予识别和识别哪一个键重健问题的处理n简单情况:不予识别,认为是错误的按键简单情况:不予识别,认为是错误的按键n通常情况:只承认先识别出来的键通常情况:只承认先识别出来的键n连锁法:直到所有键都释放后,读入下一个键连锁法:直到所有键都释放后,读入下一个键n巡巡回回法法:等等被被识识别别的的键键释释放放以以后后,就就可可以以对对其其他闭合键作识别,而不必等待全部键释放他闭合键作识别,而不必等待全部键释放n正常的组合键:都识别出来正常的组合键:都识别出来DBPB6PB7PAIRQ1T1P10
34、P21P11P22P204 GND1 CLOCK2 DATA5 +5V3 RESETPC机键盘机键盘系统板系统板80488255A8259ALS322串串并并转转换换器器键键盘盘阵阵列列按键按键选通选通11.3.2 PC机键盘的工作原理1.PC机键盘的工作过程n键盘电路正常工作时不断地扫描键盘矩阵键盘电路正常工作时不断地扫描键盘矩阵n有有按按键键,则则确确定定按按键键位位置置之之后后以以串串行行数数据据形式发送给系统板键盘接口电路形式发送给系统板键盘接口电路n键按下时,发送该键的接通扫描码键按下时,发送该键的接通扫描码n键松开时,发送该键的断开扫描码键松开时,发送该键的断开扫描码n若若一一直直
35、按按住住某某键键,则则以以拍拍发发速速率率(每每秒秒230次)连续发送该键的接通扫描码次)连续发送该键的接通扫描码接通接通扫描码扫描码反映该键在键盘上的位置反映该键在键盘上的位置断开扫描码(接通扫描码最高位置断开扫描码(接通扫描码最高位置1 1)接通扫描码接通扫描码80H80H2.键盘接口电路的工作过程n接收一个串行形式字符以后,进行串并转换接收一个串行形式字符以后,进行串并转换n然后产生键盘中断然后产生键盘中断IRQ1请求,等待读取键盘数据请求,等待读取键盘数据nCPU响应中断,则进入响应中断,则进入09H键盘中断服务程序键盘中断服务程序:读取键盘扫描码:用读取键盘扫描码:用IN AL,60
36、H即可即可 响应键盘:系统使响应键盘:系统使PB71 允许键盘工作:系统使允许键盘工作:系统使PB70 处理键盘数据处理键盘数据 给给8259A中断结束中断结束EOI命令,中断返回命令,中断返回3.PC机键盘中断服务程序n09H号中断服务程序(号中断服务程序(kbint过程)过程)n完成常规的操作完成常规的操作n处处理理键键盘盘数数据据:将将获获取取的的扫扫描描码码通通过过查查表表转转换换为为对对应应的的ASCII码码送送缓缓冲冲区区。对对于于不不能能显显示示的的按键,则转换为按键,则转换为0,且不再送至缓冲区,且不再送至缓冲区n键盘键盘I/O功能程序(功能程序(kbget子程序)子程序)n从
37、缓冲区中读取转换后的从缓冲区中读取转换后的ASCII码码n功能调用(主程序)功能调用(主程序)n循环显示键入的字符循环显示键入的字符键盘缓冲区n中断服务程序与子程序之间传递参数中断服务程序与子程序之间传递参数n先进先出循环队列先进先出循环队列n队列空队列空n进队列进队列n出队列出队列n队列满队列满buffer0129队列始端队列始端队列末端队列末端键盘缓冲区bufferdb 10 dup(0)bufptr1dw 0;队列头指针队列头指针bufptr2dw 0;队列尾指针队列尾指针例11.4buffer0129队列始端队列始端队列末端队列末端bufptr1bufptr2键盘代码表scantbdb
38、 0,1,1234567890-=,08h;键盘第键盘第1排的按键,从排的按键,从ESC到退格到退格db 0,qwertyuiop,0dh;键盘第键盘第2排的按键,从排的按键,从Tab到回车到回车db 0,0,789-456+1230.;右边小键盘,从右边小键盘,从Num Lock到到Del例11.4设置中断向量1mov ax,3509hint 21hpush espush bx;保存保存09H号原中断向量号原中断向量cli;关中断关中断push ds;设置设置09H号新中断向量号新中断向量mov ax,seg kbintmov ds,axmov dx,offset kbint例11.4设置中
39、断向量2mov ax,2509hint 21hpop dsin al,21h;允许允许IRQ1中断,其他不变中断,其他不变push axand al,0fdhout 21h,alsti;开中断开中断例11.4调用并显示start1:call kbget;获取按键的获取按键的ASCII码码cmp al,1jz start2;是是ESC键,则退出键,则退出push ax;保护字符保护字符mov dl,al;显示字符显示字符mov ah,2int 21hpop ax;恢复字符恢复字符例11.4处理回车符cmp al,0dh;该字符是回车符吗?该字符是回车符吗?jnz start1;不是,取下一个按键
40、字符不是,取下一个按键字符mov dl,0ah;是回车符,则再进行换行是回车符,则再进行换行mov ah,2int 21hjmp start1;继续取字符继续取字符例11.4恢复中断向量start2:clipop axout 21h,alpop dxpop dsmov ax,2509hint 21hstimov ax,4c00h;返回返回DOSint 21h例11.4子程序:判断缓冲区空否kbgetprockbget1:push bx;保护保护BXclimov bx,bufptr1;取头指针取头指针cmp bx,bufptr2;与尾指针相等否?与尾指针相等否?jnz kbget2;不相等,说明
41、缓冲区有字符,转移不相等,说明缓冲区有字符,转移sti;相等,说明缓冲区空相等,说明缓冲区空pop bx jmp kbget1;等待缓冲区有字符等待缓冲区有字符例11.4子程序:获取按键字符kbget2:mov al,bufferbx;取字符送取字符送ALinc bx;队列头指针增量队列头指针增量cmp bx,10;是否指向队列末端是否指向队列末端jc kbget3;没有,转移没有,转移mov bx,0;指针指向队列末端,则指针指向队列末端,则循环循环,指向始端,指向始端kbget3:mov bufptr1,bx;设定新队列头指针设定新队列头指针stipop bxretkbgetendp例11
42、.4中断服务程序:响应键盘kbintprocsti;开中断开中断push ax;保护寄存器保护寄存器push bxin al,60h;读取键盘扫描码读取键盘扫描码push axin al,61h;使使PB71,响应键盘,响应键盘or al,80hout 61h,aland al,7fh;使使PB70,允许键盘,允许键盘out 61h,al例11.4中断服务程序:数据处理pop axtest al,80h;是断开扫描码是断开扫描码?jnz kbint2;是,则退出是,则退出mov bx,offset scantb;是接通扫描码,取表首地址是接通扫描码,取表首地址 xlat;将扫描码转换成将扫描码
43、转换成ASCII码码cmp al,0;是否为合法的是否为合法的ASCII码?码?jz kbint2;不是,则退出不是,则退出例11.4中断服务程序:指针增量mov bx,bufptr2mov bufferbx,al;将将ASCII码存入缓冲区队列尾码存入缓冲区队列尾inc bx;队列尾指针增量队列尾指针增量cmp bx,10;是否指向队列末端?是否指向队列末端?jc kbint1;没有,转移没有,转移mov bx,0;指针指向队列末端,则指针指向队列末端,则循环循环,指向始端,指向始端例11.4中断服务程序:判断缓冲区满否kbint1:cmp bx,bufptr1jz kbint2;若队列满,
44、则退出若队列满,则退出mov bufptr2,bx;队列不满,设置新的队列尾指针队列不满,设置新的队列尾指针例11.4bufptr1bufptr2buffer41H031H132H239H9队列始端队列始端队列末端队列末端中断服务程序:中断返回kbint2:mov al,20h;向向8259A发送普通中断结束命令发送普通中断结束命令out 20h,alpop bx;恢复寄存器恢复寄存器pop axiret;中断返回中断返回kbintendp例11.4实验实验6 6 小键盘实验小键盘实验n认认真真阅阅读读教教材材中中扫扫描描法法和和反反转转法识别按键的程序段法识别按键的程序段n 延延时时子子程程
45、序序可可以以采采用用软软件件延延时程序时程序n 延延时时子子程程序序也也可可以以采采用用实实时时时钟的硬件延时,它更精确时钟的硬件延时,它更精确 提提示示11.4 LED数码管及其接口n发光二极管发光二极管LED是是最简单的显示设备最简单的显示设备n由由7段段LED就可以组成的就可以组成的LED数码管数码管nLED数数码码管管广广泛泛用用于于单单板板微微型型机机、微微型型机机控制系统及数字化仪器中控制系统及数字化仪器中nLED数码管可以显示内存地址和数据等数码管可以显示内存地址和数据等1.LED数码管的工作原理n主要部分是主要部分是7段发光管段发光管n顺时针分别称为顺时针分别称为a、b、c、d
46、、e、f、gn有的产品还附带有一个小数点有的产品还附带有一个小数点hn通过通过7个发光段的不同组合个发光段的不同组合n主要显示主要显示09n也可显示也可显示AF(16进制数)进制数)n还可显示个别特殊字符:、还可显示个别特殊字符:、P hgfedcbaLED数码管的结构共阳极共阳极阳极阳极+5Vabcdefgh阴极阴极abcdefgh共阴极共阴极2.单个LED数码管的显示8255APA0PA1PA2PA3PA4PA5PA6PA7驱驱动动电电路路abcdefgh单个数码管的显示LEDtb db 3fh,06h,5bh,;显示代码表显示代码表mov al,1;AL要显示的数字要显示的数字mov b
47、x,offset LEDtbxlat;换码:换码:ALDS:BXALmov dx,portout dx,al;输出显示输出显示软件译码3.多个LED数码管的显示n8个数码管:用个数码管:用2个个8位输出端口控制位输出端口控制n硬件上用公用的驱动电路来驱动各数码管硬件上用公用的驱动电路来驱动各数码管n软件上用扫描方法实现数码显示软件上用扫描方法实现数码显示位控制端口电路D7D6D5D4D3D2D1D0阳极阳极位位0位位1位位2D0D7位控制位控制反反相相寄寄存存驱驱动动bitport,IOW位控制端口作用n控制哪个(控制哪个(位位)数码管显示)数码管显示n当当位位控控制制端端口口的的控控制制码码
48、某某位位为为低低电电平平时时,经经反反相相驱驱动动,便便在在相相应应数数码码管管的的阳阳极极加加上上了高电平,这个数码管就可以显示数据了高电平,这个数码管就可以显示数据位控制:位控制:Di0,相应位发光,相应位发光D7D6D5D4D3D2D1D0位位7位位6位位5位位4位位3位位2位位1位位0段控制端口电路D0D1D2D3D4D5D6D7阳极阳极位位0a b c d e f g h位位1位位2D0D7段控制段控制正正相相寄寄存存驱驱动动segport,IOW段控制端口作用n控制哪个控制哪个段段显示,决定具体显示什么数码显示,决定具体显示什么数码n段控制端口送出显示代码到数码管相应段段控制端口送
49、出显示代码到数码管相应段n此端口由此端口由8个数码管共用个数码管共用段控制:段控制:Di0,相应段发光,相应段发光D7D6D5D4D3D2D1D0hgfedcba通过位、段控制端口的共同作用通过位、段控制端口的共同作用才能确定才能确定哪个数码管哪个数码管显示显示什么数码什么数码数码缓冲区;数据段数据段LEDdtdb 8 dup(0);数码缓冲区数码缓冲区;主程序主程序mov si,offset LEDdtcall LEDdisp;调用显示子程序调用显示子程序例11.5获取显示代码LEDdisp procpush axpush bxpush dxmov bx,offset LEDtbmov ah
50、,0feh;指向最左边数码管指向最左边数码管LED1:lodsb;取出要显示的数字取出要显示的数字xlat cs:LEDtb;得到显示代码:得到显示代码:ALCS:BXAL例11.5数码显示mov dx,segport;segport为段控制端口为段控制端口out dx,al;送出段码送出段码mov al,ah;取出位显示代码取出位显示代码 mov dx,bitport;bitport为位控制端口为位控制端口out dx,al;送出位码送出位码call delay;实现数码管延时显示实现数码管延时显示例11.5显示下位数码rol ah,1;指向下一个数码管指向下一个数码管 cmp ah,0fe