常用数字接口电路.ppt

上传人:max****ui 文档编号:11867146 上传时间:2020-05-03 格式:PPT 页数:114 大小:1.29MB
返回 下载 相关 举报
常用数字接口电路.ppt_第1页
第1页 / 共114页
常用数字接口电路.ppt_第2页
第2页 / 共114页
常用数字接口电路.ppt_第3页
第3页 / 共114页
点击查看更多>>
资源描述
1,第7章常用数字接口电路,2,主要内容:,了解并行通信与串行通信的特点掌握两种可编程接口芯片的应用,3,7.1并行通信与串行通信,4,一、并行通信,并行接口的特点:以数据字节或字为单位进行数据传送;适合近距离传送;对传送的信息不要求固定格式。并行接口的分类输入接口和输出接口(传送方向)数字接口和模拟接口(信息类型)单向接口和双向接口(数据形式)简单接口和可编程接口(接口电路结构),5,二、串行通信,特点:按位传送,速度较慢造价低,适合于远距离传送传送方式全双工:两条通路,信息发送和接收可同时进行半双工:一条通路,分时使用线路发送和接收数据单工:只允许一个方向传送信息,不允许反向传送,6,7.2可编程定时/计数器8253,7,掌握:,8253的引线功能及计数启动方法8253的6种工作方式及其输出波形8253的应用:芯片与系统的连接芯片的初始化编程,8,一、8253芯片的特点,可编程的逻辑器件;可实现计数和定时的功能;工作方式:做减法计数计数值减为0时会输出相应的控制信号输出控制信号的形式可通过软件设置,9,二.外部引线及内部结构,连接系统端的主要引线:D0-D7:8位双向数据线CS:片选信号,由系统高位I/O地址译码产生RD:读控制信号WR:写控制信号A0,A1:地址信号线,产生4个有效地址对应8253内部的3个计数器通道和1个控制寄存器连接外设端的主要引线:CLK-时钟脉冲输入,计数器对此脉冲进行计数GATE-门控信号输入,用于控制计数的启动和停止OUT-定时输出,不同的工作方式下,OUT端产生不同的输出波形,10,引线,11,8253内部共包括三个相同的、可独立工作的16位定时/计数器,一个控制寄存器。4个寄存器相当于4个端口4个端口的地址编码:A1A0选择00CNT0(选择计数器0)01CNT1(选择计数器1)10CNT2(选择计数器2)11选择控制寄存器,引线,12,8253的结构特点,每个计数器含控制寄存器,16位初值寄存器16位计数寄存器,存放控制命令字,控制8253的工作方式,内部3个计数器均为减法计数器根据计数脉冲的频率(周期)及需要定时的时间长度确定计数初值,相同端口地址,计数初值,13,三.计数启动方式,软件启动硬件启动,GATE端为高电平,允许启动计数,GATE端有一个上升沿,允许启动计数,由GATE端门控信号的形式决定计数启动方式,14,四.工作方式(6种),方式0-计数结束中断,软件启动,不自动重复计数;门控信号GATE必须为1,计数器才能计数;控制字CW写入后,OUT由高变低,OUT=0;计数时通道输出端OUT一直为0;计数过程中,GATE=0,计数暂停;计数过程中可改变计数值;计数结束OUT端输出高电平OUT=1;8253无中断控制,可用OUT信号作为中断请求信号。,15,工作波形,16,方式1-复触发的单稳态触发器,硬件启动,不自动重复计数;门控信号GATE是触发信号,上升沿有效。即开始计数是由GATE的上升沿触发的;控制字CW写入,OUT由低变高,OUT=1;触发后,通道计数器开始计数,输出端OUT由高变低;计数器计数到0,OUT再由低变高;计数过程中,如果又被触发,则计数器重新工作;计数中,可改变计数值,再次启动有效。,特点:,17,工作波形,18,方式2-频率发生器,软、硬件启动,自动重复计数。门控信号GATE是触发信号,GATE=1或GATE的上升沿均可触发,开始计数;控制字CW写入,OUT由低变高,OUT=1;当计数器“减”计数到1时,输出端由高变低,再经过一个CLK周期,即计数器计数到0时,输出端OUT又跳变为高。所以方式2可以输出周期性负脉冲信号,其宽度固定为一个CLK周期;OUT端输出的脉冲周期为NTCLK,频率为CLK的1/N当计数器的值减为0时,自动重新装入计数初值,实现循环计数。,特点:,19,工作波形,20,方式3-方波发生器,特点:,软、硬件启动,自动重复计数。门控信号GATE是触发信号,GATE=1或GATE的上升沿均可触发,开始计数;控制字CW写入,OUT由低变高,OUT=1;当计数初值N为偶数时,计数器“减”到N/2时,输出端由高变低,再计完N/2时,即计数器计数到0时,输出端OUT又跳变为高;OUT端输出周期为NTCLK对称方波。当计数初值N为奇数时,计数器“减”到(N+1)/2时,输出端由高变低,再计完(N-1)/2时,即计数器计数到0时,输出端OUT又跳变为高;OUT端输出波形不对称。当计数器的值减为0时,自动重新装入计数初值,实现循环计数。,21,工作波形,22,方式4-软件触发选通,软件启动,不自动重复计数。门控信号GATE必须为1,计数器才能计数;控制字CW写入,OUT由低变高,OUT=1;计数过程中,GATE=0,计数暂停;若在计数过程中,改变计数值,则按新计数值重新开始计数计数器计数到0,即计数结束输出一个CLK宽度的低电平,特点:,23,工作波形,24,方式5-硬件触发选通,硬件启动,不自动重复计数;门控信号GATE是触发信号,上升沿有效。即开始计数是由GATE的上升沿触发的;控制字CW写入,OUT由低变高,OUT=1;在计数过程中出现的GATE脉冲,将使计数器重新开始计数,对输出状态没有影响;若在计数过程中改变计数值,只要没有GATE信号触发,不影响计数过程。有新的GATE信号触发则按新的计数值开始计数。计数器计数到0,即计数结束输出一个CLK宽度的低电平,特点:,25,工作波形,26,8253工作方式小结,需要两个写脉冲第1个写脉冲写入控制字第2个写脉冲写入计数初值不同的工作方式,有不同的计数启动方法。可根据对输出波形的要求,选择不同的工作方式。能输出连续波形的只有方式2(频率发生器)和方式3(方波发生器)。,至少需要执行两条OUT指令,27,8253的六种工作方式可归为两类,一类是充当频率发生器,另一类主要是作计数器来使用。下面我们就从这个角度来讨论总结OUT和GATE门的作用。,与频率发生器有关的工作方式8253有两种方式与频率发生器有关,即方式2和方式3。对OUT端,方式2提供给用户的是负脉冲,方式3提供给用户的是方波。在这两种方式下,GATE信号要始终保持为高。,28,与计数器有关的工作方式对于计数器类,有方式0、1和方式4、5。启动计数器的方式有两种。一种是CPU把时间常数写入相应通道后,计数器就开始工作,我们可以称之为软件启动方式,在这种启动方式下,GATE要始终保持为高电平,所以方式0和方式4可以称为软件启动方式。另一种是硬件启动计数器,即CPU把时间常数写入计数器后,即使GATE为高电平,计数器并不工作。只有GATE发生跳变,其上升沿启动计数器工作。所以方式1和方式5就可以称为硬件启动方式计数器结束时,OUT有两种输出形式,要么是电平,要么是负脉冲。前者有方式0方式1,后者有方式4和方式5,29,五.控制字,用于确定各计数器的工作方式,0=二进制计数1=BCD计数,30,六.8253的应用,与系统的连接初始化程序设计写入控制字置计数初值,31,1.8253与系统的连接示意图,CLK,GATE,OUT,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,高位地址,外设,8253,32,2.应用中的注意点,每一次启动计数,需有两次写操作:写控制字写计数器初值如果初值为8位字长,则一次写入计数器;若初值为16位字长,则需两次写入计数器,先写计数器的低字节,再写计数器的高字节每个计数器的控制命令字均送入控制寄存器各计数器的计数初值送到该计数器的计数寄存器及初值寄存器;,33,3.初始化程序流程,写控制字,写计数值低8位,写计数值高8位,*,非必须,34,初始化CNT0,初始化CNT1,初始化CNT2,写CNT0控制字,写CNT0计数初值,当有两个以上计数器被应用时的初始化程序设计流程:,35,初始化程序流程,写入全部计数器控制字,写CNT0计数初值,写CNT1计数初值,写CNT2计数初值,原则:先写入控制字后写入计数初值,36,4.8253应用例,采用8253作定时/计数器,其接口地址为0120H0123H。输入8253的时钟频率为2MHZ。要求:CNT0每10ms输出一个CLK周期宽的负脉冲CNT1输出10KHz的连续方波信号CNT2在定时5ms后产生输出高电平画线路连接图,并编写初始化程序.,工作的计数器,工作方式,计数初值,启动方式,计数脉冲频率,37,计算计数初值:CNT0:10ms/0.5us=20000CNT1:2MHz/10KHz=200CNT2:5ms/0.5us=10000确定控制字:CNT0:方式2,16位计数值CNT1:方式3,低8位计数值CNT2:方式0,16位计数值,00110100,01010110,10110000,38,CLK0,GATE0,OUT1,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,8253,CLK2,GATE1,GATE2,+5V,CLK1,2MHz,OUT0,OUT2,39,初始化程序,CNT0:MOVDX,0123HMOVAL,34HOUTDX,ALMOVDX,0120HMOVAX,20000OUTDX,AL,MOVAL,AHOUTDX,ALCNT1:CNT2:,40,例1:某8253端口地址为F8HFBH,欲用通道0以方式1,按BCD计数,计数值为5080。,1.确定通道控制字;2.计数值的低8位为80;3.计数值的高8位为50。,初始化程序为:MOVAL,33HOUT0FBH,ALMOVAL,80HOUT0F8H,ALMOVAL,50HOUT0F8H,AL,在计数过程中,8253读计数器现行值的方法:(将计数值存入内部缓冲器),MOVAL,03H;计数器0的锁存命令OUT0FBH,AL;写入控制寄存器INAL,0F8H;读低8位MOVCL,AL;存入CL中INAL,0F8H;读高8位MOVCH,AL;存入CH中,41,42,例2:用8253产生各种定时波形。要求:,(1)通道0输出频率为2KHz的方波;(2)通道1产生宽度为1ms的负脉冲;(3)通道2以硬件方式触发,输出单脉冲,时常为26。,已知:8253基地址为310H,3通道所用时钟脉冲频率为1MHz。,分析:通道0工作于方式3,控制端GATE0接+5V,时间常数(计数初值)N0=1MHz/2KHz=500;通道1工作于方式1,由控制端GATE1的正跳变触发,OUT1的负脉冲宽度为时常,单次触发,时间常数N1=1ms/0.001ms=1000;通道2工作于方式5,由控制端GATE2的正跳变触发,可连续触发,时间常数N2=26。,43,;通道0初始化程序MOVDX,316HMOVAL,00110111BOUTDX,ALMOVDX,310HMOVAL,00HOUTDX,ALMOVAL,05HOUTDX,AL,;通道2初始化程序MOVDX,316HMOVAL,10011011BOUTDX,ALMOVDX,314HMOVAL,26HOUTDX,AL,;通道1初始化程序MOVDX,316HMOVAL,01110011BOUTDX,ALMOVDX,312HMOVAL,00HOUTDX,ALMOVAL,10HOUTDX,AL,44,例3:8253控制LED。要求:LED点亮10秒,熄灭10秒,分析:8253的数据线与CPU8位数据线D0D7相连,8253的各端口的地址为81H、83H、85H、87H。OUT1输出占空比为1:1的方波,8253端口1工作在方式3。,时钟频率为2MHz时,16位计数通道的最大定时时间为:0.5s65535=32.766ms,级连:通道0输出400Hz脉冲(时常5000),通道1输出0.05Hz方波(时常8000)。,0.5s40000000=20s,45,;通道0初始化程序MOVAL,00110111BOUT87H,ALMOVAL,00HOUT81H,ALMOVALH,50HOUT81H,AL,;通道1初始化程序MOVAL,01110111BOUT87H,ALMOVAL,00HOUT83H,ALMOVAL,80HOUT83H,AL,46,例4:用8253设计一个自动计数系统(计数500向CPU提出中断申请)。,8253端口地址:F0H,F2H,F4H,F6H,,8253工作方式:计数器1工作于方式0,按BCD计数,先读写低字节,后读写高字节。,47,;通道1初始化程序MOVAL,01110001BOUT0F6H,ALMOVAL,99HOUT0F2H,ALMOVAL,04HOUT0F2H,AL,;读通道1计数值程序MOVAL,01000000BOUT0F6H,ALINAL,0F2HMOVAH,ALINAL,0F2HXCHGAH,AL,当前计数值的读取(1)利用GATE控制信号,使计数器停止计数。故干扰了计数过程,需要硬件电路配合。(2)利用计数器锁存命令锁存现行计数值,就可从相应的计数器通道中读取计数值。,48,第三节Intel8253-PIT在PC/XT机中的应用,40H-43H,方式3,n=0,方式2,n=18,方式3,n=1331,49,7.3可编程并行接口8255,50,掌握:,8255的主要引线功能及内部结构8255的3种工作方式及其特点应用:芯片与系统的连接芯片的初始化编程数据输入/输出控制程序设计,51,一、并行接口8255的特点,含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力含1个控制寄存器可通过编程,初始化控制寄存器,设置各端口工作在某一确定状态下,52,二.引线,连接系统端的主要引线:D0-D7:8位双向数据线,传送数据和控制字CS:片选信号,由高位地址信号经译码产生RD:读信号,通常接系统总线IOR信号WR:写信号,通常接系统总线IOW信号A0,A1:口地址选择线,通常接系统地址总线的A0和A1,四种组合用于选择3个输入/输出端口和1个控制寄存器RESET:复位信号,通常接系统的复位端RESET,53,A1A0选择00A端口01B端口10C端口11控制寄存器,8255内部包括3个独立的输入/输出端口以及1个控制寄存器,A1、A0经片内译码可产生4个有效地址,分别对应A、B、C三个端口和内部控制寄存器。,54,连接外设端的引脚:PA0PA7PB0PB7PC0PC7,分别对应A、B、C三个端口,55,三、8255与系统的连接示意图,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,8255,A口,B口,C口,D0D7,外设,56,四.内部结构,A组端口B组端口,端口A端口C的高4位,端口B端口C的低4位,57,数据接口,CPU接口,内部逻辑,58,端口A和端口B可用作8位数据I/O口,端口C既可作为8位I/O口,又可作为两个4位I/O口,还常用来配合A口和B口工作,作为控制信号输出或作为状态信号输入。,(一)数据端口,8255内部包含3个8位I/O端口A口、B口和C口,通过外部24根I/O线与外设交换数据或进行通信联络。其中C口可分为两个4位口使用。,59,(二)控制逻辑,这是两组根据CPU的编程命令控制8255工作的电路,控制寄存器用来接收CPU送来的控制命令字,以决定A组、B组的工作方式,或对C口的每一个位执行位操作。,60,(三)数据总线缓冲器,双向三态的8位缓冲器,用作8255和系统数据总线的接口。1)传送系统对8255的控制字;2)传送各端口的输入、输出数据。,(四)读/写控制逻辑,控制总线的开放与关闭;控制信息传送的路径和方向。,61,五.工作方式(3种),基本输入/输出方式(方式0)-A、B、C口选通输入/输出方式(方式1)-A、B口双向传送方式(方式2)-A口,62,方式0:,A、B、C口相当于三个独立的8位简单接口各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出C端口可以是一个8位的简单接口,也可以分为两个独立的4位端口常用于连接简单外设,适于无条件或查询方式,63,方式0的应用:,习惯上:A端口和B端口作为8位数据的输入口或输出口C端口作为8位数据的输入口或输出口C端口的高4位或低4位作为4位数据的输入口或输出口C口的某些位作为状态输入,用于查询方式传送注:若使C端口低4位中某一位作为输入口,则低4位中其他位都应作为输入口。同时可设高4位作为输出。,64,8255工作于方式0的连接示意图,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,8255,PA0|PA7,B口,PC0,D0D7,数据,状态,数据,外设1,外设2,65,方式1:,利用一组选通控制信号控制A端口和B端口的数据输入输出A口、B口作数据输入口或输出口,C口的部分位用作选通控制信号A口、B口在作为输入和输出时的选通信号不同,输入,输出,66,方式1的应用:,方式1主要用于中断控制方式下的输入输出C口的8位除用作选通信号外,其余位可工作于方式0下,作为输入或输出口,67,1)方式1输入,此时PC3PC5和PC0PC2分别用作A口和B口的状态和控制线,PC6和PC7可以工作在方式0用作I/O线.,方式1(A口),方式1下A,B口均为输入时的信号定义,68,IBF输入缓冲器满信号,高电平有效,由8255输出的状态信号,表示输入锁存器已满,向外设指明不能再送入数据。,INTE中断允许信号。控制8255能否向CPU发中断请求信号,它没有外部引脚,INTEA、INTEB是由用户对PC4、PC2按位置位实现的。,各应答信号的意义:,INTR中断请求信号,高电平有效。是8255向CPU发出的中断请求信号,要求CPU服务。当IBF=1、STB=1且INTE=1时,INTR=1。,69,2)方式1输出,这时PC3、PC6和PC7作A口的应答信号,PC0、PC1和PC2作B口的应答信号。余下的PC4和PC5可作输入或输出线。,方式1下A,B口均为输出时的信号定义,70,ACK外设的回答信号,低电平有效,由外设送给8255。表示CPU送到指定端口的数据已被外设接受。,各应答信号的意义:,OBF输出缓冲器满信号,输出,低电平有效。表示CPU已输出数据到指定端口。,INTR中断请求信号,高电平有效。是8255向CPU发出的中断请求信号,要求CPU服务。当OBF=1、ACK=1且INTE=1时,INTR=1,INTE中断允许信号。控制8255能否向CPU发中断请求信号,它没有外部引脚,INTEA、INTEB是由用户对PC6、PC2按位置位实现的。,71,方式2:,双向输入输出方式-可以既作为输入口,又作为输出口只有A端口可工作在方式2下,72,方式2的应用:,可使A端口作为双向端口使用用于中断控制方式当A口工作于方式2时,B口可工作于方式1(此时C口的所有位都用作选通控制信号的输入输出),也可工作于方式0(此时C口的剩余位也可工作于方式0),73,这时PA7PA0作为双向数据总线,PC3PC7用作A口的联络控制信号。PC2PC0可用作B口的应答信号线或作I/O线。,74,六.方式控制字及位控制字,方式控制字用于确定3个端口的工作方式及数据传送方向;,75,位控制字(仅用于C端口)可设置C口某位的初始状态(为高电平或低电平)当其工作于方式0下且作为输出口时,一般需要对作为输出的位设置初始状态(即初始化),76,8255A工作在方式0时,C口各位作输入输出用。当工作在方式1和方式2时,C口产生与外设的联络信号。此时。读入C口各位的内容可检查或测试外设的状态。C口的状态字如下:,(1)方式1,(2)方式2,七.状态字,77,八.8255芯片的应用,芯片与系统的连接芯片的初始化相应的控制程序设计,例7-3,78,8255应用例1:,利用8255实现开关检测和继电器控制电路;当8个开关闭合时,使8个继电器通电动作;开关断开时,继电器不动;系统每隔100ms启动一次开关状态检测,实现相应的控制;初始状态下继电器都不动作。,79,题目分析:,使8255的A端口连接继电器B端口连接开关若使用8253的CNT0实现定时,CLK=2MHZ则计数初值为:100ms/0.5us=200000需使用两个计数器:利用OUT0的输出作为CNT1的时钟信号,若使OUT0输出频率为2KHz,则两个计数器的计数初值分别为:CNT0:2MHz/2KHz=1000-工作于方式3CNT1:100ms/0.5ms=200-工作于方式0,均工作于方式0,CS,A0,A1,WR,RD,DB,PA0,PA7,PB0,PB7,+5V,+5V,K,继电器,384H387H,388H38BH,CS,A0,A1,OUT1,CLK1,2MHZ,CLK0,OUT0,81,8255的初始化,MOVDX,387HMOVAL,82H(10000010B)OUTDX,ALXORAL,ALMOVDX,384HOUTDX,AL,控制寄存器,A口,继电器不工作,82,8253的初始化,初始化命令字:MOVDX,38BHMOVAL,36H(00110110B)OUTDX,ALMOVAL,50H(01010000B)OUTDX,AL,置计数初值:MOVDX,388HMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,389HMOVAL,200OUTDX,AL,83,8255的控制程序,MOVDX,385H-B口WAITT:INAL,DXANDAL,0FFHJNZWAITTMOVDX,384H-A口MOVAL,0FFHOUTDX,AL,84,8255作为开关K0K3及七段LED显示器接口。要求开关设置的二进制信息,由PC0PC3输入,经程序转换为对应的七段LED显示器的字形代码后,由PA口输出显示。,8255应用例2:,85,86,各端口地址为E8H,EAH,ECH,EEH,8255各端口地址确定:,8255方式选择控制字:,81H,87,实现操作的具体程序如下:,MOVDX,0E8H;指向端口AOUTDX,AL;输出字形码显示HLT,MOVDX,0EEH;设置8255工作方式MOVAL,81HOUTDX,AL,MOVDX,0ECH;指向端口C,读开关状态INAL,DXANDAL,0FH,LEABX,TABLE;显示代码表首地址送BXXLAT;查表,取出相应的字形码送AL,88,LED显示器的结构,89,LED显示器的工作原理,软件译码法,方案1共阳极LED显示器与同相驱动器接口,90,D7D6D5D4D3D2D1D0dpgfedcba,0(C0H)11000000,9(90H)10010000,1(F9H)11111001,2(A4H)10100100,3(B0H)10110000,4(99H)10011001,5(92H)10010010,6(82H)10000010,7(F8H)11111000,8(80H)10000000,91,方案2共阳极LED显示器与反相驱动器接口,92,D7D6D5D4D3D2D1D0dpgfedcba,0(3FH)00111111,9(6FH)01101111,1(05H)00000110,2(5BH)01011011,3(4FH)01001111,4(66H)01100110,5(6DH)01101101,6(7DH)01111101,7(07H)00000111,8(7FH)01111111,93,七段LED显示器接口电路,利用专用接口芯片7447驱动LED显示器,7447为BCD七段译码器与单个LED的连接,R=(51.50.2)V/20mA=168取R=150,94,静态显示器的设计,器件多,输出后不管,95,96,显示控制程序,LEASI,BUFFMOVCX,07HMOVDL,01H,MOVAL,SI,OUTPOTB,ALMOVAL,DLOUTPOTA,AL,INCSIROLDL,97,98,LEASI,BUFFMOVCL,40HMOVBX,LED-ADD,DISI:MOVAL,SIXLAT,MOVDX,POTBOUTDX,ALMOVAL,CLMOVDX,POTAOUTDX,AL,INCSISHRCL,JNZDISI,99,并行打印机接口电路,打印机接口信号,100,打印机接口信号,101,例:用8255实现与打印机的接口,8255的PA口作为数据输出端口,工作在方式1;PC7作为OBF信号输出端;PC6作为ACK信号输入端;PC3作为INTR信号输出端,接8259的IR2,因此中断类型号为0AH。8255的端口地址为0FCH-0FFH。,102,输出时,先输出一个空字符,以引起中断,在中断服务程序中输出打印字符。打印机接收到打印字符后,发出ACK响应信号,清除OBF标志,使8255产生新的中断请求,再输出下一个打印字符。,103,主程序完成中断的准备工作和设置8255A的工作方式控制字等,中断服务程序完成字符的输出。,PUSHDSLEADX,ROUTMOVAX,SEGROUTMOVDS,AXMOVAL,0AHMOVAH,25HINT21HPOPDS;设置中断向量MOVAL,0A0H;方式字OUT0FFH,ALMOVAL,0DH;PC6置1OUT0FFH,AL;中断允许MOVAL,20H;输出空格字符OUT0FCH,ALMOVBX,FLAGSTI,ROUT:PUSHAXMOVAL,BX;取字符OUT0FCH,AL;输出INCBXPOPAXIRET,104,工作原理,105,键盘扫描过程:,(1)检测键盘上所有的键是否都松开,反复检测直至全松开。,(2)检测键盘上是否有键按下,反复检测直至有键按下。,(3)若有键按下,则消除键抖动后(硬件消抖动电路,软件延时消抖动下),再确认该键是否按下。,(4)对按下的键进行编码,即将该键所在的行号和列号转换成16进制代码。,(6)根据代码转相应功能子程序。,注:若在按键时,多个键盘同时按下,可取最后松开的按键作为本次按下的键。,(5)检测该键是否松开,反复检测直至松开。,106,初始化:PORT-AEQU0FF9H;8255A口地址PORT-BEQU0FFBH;8255B口地址PORT-CTLEQU0FF9H;8255控制口地址TABLEDB77H,7BH,7DH,7EHDB0B7H,0BBH,0BDH,0BEHDB0D7H,0DBH,0DDH,0DEHDB0E7H,0EBH,0EDH,0EEH,8255初始化:方式0,A口输出,B口、C口输入MOVDX,PORT-CTL;DX指向控制口MOVAL,10001011B;控制字OUTDX,AL;写入控制字,107,MOVDX,PORT-A;DX指向A口MOVAL,00HOUTDX,AL,WO:MOVDX,PORT-B;DX指向B口INAL,DX;输入B口ANDAL,OFHCOMAL,OFH;各键均未按下JNEWO;否,继续等,WR:INAL,DX;输入B口ANDAL,OFHCOMAL,OFH;是否有键按下JEWR;否,等待,MOVCX,16EAHDELAY:LOOPDELAY,WR:INAL,DX;输入B口ANDAL,OFHCOMAL,OFH;是否有键按下JEWR;否,等待,108,MOVAL,0FEH;置行扫描初值MOVCL,AL;暂存于CN-R:MOVDX,PORT-AOUTDX,AL;输出行扫描值MOVDX,PORT-B;DX指向B口INAL,DX;输入B口ANDAL,OFHCOMAL,OFH;有键按下JNEENCODE;是,转编码ROLCL,01;否,修改扫描初值MOVCL,ALJMPN-R;扫描下一行,109,ENCODE:MOVBX,000FH;置键代码初值INAL,DX;读入行列号NEXT-T:COMAL,TABLEBX;与表中行列号相等吗JEDONE;相等转DONEDECBX;不相等,修改位置JNSNEXT-T;未查完,继续MOVAH,01;查完,未查到,置出错标志JMPEXIT;退出DONE:MOVAL,BL;键代码送ALMOVAH,00;键有效标志00ALEXIT:RET,110,CPU向端口A送全“0”到行线,再从B口读入列状态。若读入的状态为全“1”,表示无键按下。,CPU向端口A的PA0送“0”,其余行线送“1”,再从B口读入列状态。若读入的状态为全“1”,表示第0行无键按下;否则闭合键在第0行上。,在第0行无键按下的情况下,依此对行1,行2,行7进行上述操作,找出按键所在的行和列的编号。,111,初始化:PORT-AEQU0FFF8H;8255A口地址PORT-BEQU0FFFAH;8255B口地址PORT-CTLEQU0FFFEH;8255控制口地址,8255初始化:方式0,A口输出,B口、C口输入MOVDX,PORT-CTL;DX指向控制口MOVAL,10000011B;控制字OUTDX,AL;写入控制字,112,WAITK:MOVDX,PORT-A;DX指向A口MOVAL,00HOUTDX,ALMOVDX,PORT-B;DX指向B口INAL,DX;输入B口COMAL,0FFH;各键均未按下JZWAITK;无键按下继续等,MOVCX,16EAHDELAY:LOOPDELAY;延时20ms,MOVBL,0;送键号初值MOVBH,11111110B;置初始扫描模式MOVCX,8,113,FNDROW:MOVAL,BHMOVDX,PORT-AOUTDX,AL;输出行扫描值MOVDX,PORT-B;DX指向B口INAL,DX;输入列码COMAL,0FFH;JNEFNDCOL;有键按下查列号ROLBH,01;否,修改扫描初值ADDBL,8;指向下一行键号初值LOOPFNDROW;扫描下一行JMPDONE;8行扫描完,无键按下FNDCOL:RORAL,1;查哪一列有键按下JNCRIGHT;查到按下键的列号INCBLJMPFNDCOLRIGHT::;按下键的编号在BL中,114,本章课外自学内容:,课编程串行接口8250,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!