资源预览内容
第1页 / 共107页
第2页 / 共107页
第3页 / 共107页
第4页 / 共107页
第5页 / 共107页
第6页 / 共107页
第7页 / 共107页
第8页 / 共107页
第9页 / 共107页
第10页 / 共107页
亲,该文档总共107页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第7章 常用数字接口电路1主要内容: 掌握二种可编程接口芯片的应用掌握二种可编程接口芯片的应用 了解串行通信的一般概念了解串行通信的一般概念 27.1 接口电路概述接口电路概述lCPU与外设之间信息交换的通道l信息缓冲信息缓冲、信息变换信息变换、电平转换电平转换、联络控制联络控制l分类:l8086系统中最常用的数字接口电路芯片:8253、8255、8250功能功能传送方式传送方式传送的信息类型传送的信息类型传送的信息类型传送的信息类型输入接口输入接口 并行接口并行接口数字量的输入数字量的输入/输出接口输出接口输出接口输出接口 串行接口串行接口模拟量的输入模拟量的输入/输出接口输出接口37.2 可编程定时/计数器8253掌握掌握:l引线功能及计数启动方法引线功能及计数启动方法l6种工作方式及其输出波形种工作方式及其输出波形l8253的使用的使用:芯片与系统的连接芯片与系统的连接芯片的初始化编程芯片的初始化编程4定时定时/计数器的用途计数器的用途l可以实现定时与计数两个功能,可用于系统时钟DRAM刷新定时定时采样实时控制脉冲的计数 。5如何实现定时?l软件方法:用一段程序实现延时软件方法:用一段程序实现延时利用利用利用利用程序循环程序循环程序循环程序循环延迟指定的时间延迟指定的时间延迟指定的时间延迟指定的时间缺点:缺点:缺点:缺点:CPUCPU占用率?延时精度?兼容?占用率?延时精度?兼容?占用率?延时精度?兼容?占用率?延时精度?兼容?l硬件方法:定时硬件方法:定时/计数器电路计数器电路利用利用利用利用脉冲计数脉冲计数脉冲计数脉冲计数在设定的时间输出定时信号在设定的时间输出定时信号在设定的时间输出定时信号在设定的时间输出定时信号 8253是一种硬件定时是一种硬件定时/计数器芯片计数器芯片6一、外部引线及内部结构l8253概貌概貌3个个16位的定时位的定时/计数器(通道)计数器(通道)24引脚双列直插式引脚双列直插式最高计数频率最高计数频率2MHzTTL电平兼容电平兼容单电源单电源+5V供电供电7外部引线及内部结构DBD7-D08253A1A0WRRDCS通道通道2通道通道1通道通道0CLK0GATE0OUT0CLK1GATE1OUT1CLK1GATE1OUT1A1A0IOWIOR片选信号片选信号8外部引线及内部结构连接系统端系统端的主要引线:lD7D0lCSlRDlWRlA1,A0 用于选择四个编址部件之一用于选择四个编址部件之一引线结构引线结构A1 A0 选选 择择0 0 计数通道计数通道00 1 计数通道计数通道11 0 计数通道计数通道21 1 控制寄存器控制寄存器9外部引线及内部结构计数通道计数通道的主要引线(每通道均相同):(每通道均相同):lCLKn 时钟脉冲输入,时钟脉冲输入,计数器的计时基准。计数器的计时基准。lGATEn 门控信号输入,门控信号输入,控制计数器的启停。控制计数器的启停。lOUTn 计数器输出计数器输出信号,不同工作方式下信号,不同工作方式下 产生不同波形。产生不同波形。(n = 02) 108253的内部结构编址部件0编址部件1编址部件2编址部件311编程结构程序员的观点l计数器计数器(3个个)包括包括l控制寄存器控制寄存器 存放控制命令字(只写)存放控制命令字(只写)l占用占用4个地址个地址 3个计数器,个计数器,1个控制寄存器个控制寄存器16位初值寄存器位初值寄存器16位计数寄存器位计数寄存器(减法计数器)(减法计数器)12定时/计数的工作过程 1. 设置设置8253的工作方式的工作方式 2. 设置计数初值到初值寄存器设置计数初值到初值寄存器 3. 第一个第一个CLK信号使初值寄存器的内容置入信号使初值寄存器的内容置入 计数寄存器计数寄存器 4. 以后每来一个以后每来一个CLK信号,计数寄存器减信号,计数寄存器减1 5. 减到减到0时,时,OUT端输出一特殊波形的信号端输出一特殊波形的信号注:以上计数过程中还受到注:以上计数过程中还受到GATE信号的控制信号的控制13二、计数启动方式软件启动过程软件启动过程硬件启动过程硬件启动过程GATE端保持为高电平端保持为高电平写入计数初值写入计数初值后的第后的第2个个 CLK脉冲的下降沿开始计数脉冲的下降沿开始计数GATE端有一个上升沿端有一个上升沿对应对应CLK脉冲的下降沿开始计数脉冲的下降沿开始计数程序指令启动程序指令启动软件启动软件启动外部电路信号启动外部电路信号启动硬件启动硬件启动14三、工作方式l l方式方式0计数结束中断计数结束中断l l方式方式1可重复触发的单稳态触发器可重复触发的单稳态触发器l l方式方式2频率发生器频率发生器l l方式方式3方波发生器方波发生器l l方式方式4软件触发选通软件触发选通l l方式方式5硬件触发选通硬件触发选通15工作方式方式方式0方式方式1 软件启动,不自动重复计数。软件启动,不自动重复计数。装入初值后装入初值后OUT端变低电平,端变低电平,计数结束计数结束OUT输出高电平。输出高电平。硬件启动,不自动重复计数。硬件启动,不自动重复计数。装入初值后装入初值后OUT端变高电平,端变高电平,计数开始计数开始OUT端变为低电平,端变为低电平,计数结束后又变高。计数结束后又变高。工作波形工作波形( (计数结束中断计数结束中断计数结束中断计数结束中断) )( (单稳态触发器单稳态触发器单稳态触发器单稳态触发器) )16工作方式方式方式2方式方式3软、硬件启动,软、硬件启动,自动重复计数自动重复计数。装入初值后装入初值后OUT端变高电平,计数到端变高电平,计数到最后一个最后一个CLK时时OUT输出负脉冲,并输出负脉冲,并连续重复此过程。连续重复此过程。软、硬件启动,软、硬件启动,自动重复计数自动重复计数。装入初值后装入初值后OUT端变高电平,端变高电平,然后然后OUT连续输出对称方波:连续输出对称方波:工作波形工作波形( (频率发生器频率发生器频率发生器频率发生器) )( (方波发生器方波发生器方波发生器方波发生器) )前前前前 N/2N/2或(或(或(或(N+1N+1)/2 /2 个个个个CLKCLK,OUTOUT为高,为高,为高,为高,后后后后N/2N/2或(或(或(或(N-1N-1)/2 /2 个个个个CLKCLK, OUTOUT为低。为低。为低。为低。17工作方式方式方式4方式方式5 软件启动,不自动重复计数。软件启动,不自动重复计数。装入初值后输出端变高电平,装入初值后输出端变高电平,计数结束输出一个计数结束输出一个CLK宽度的负脉冲宽度的负脉冲硬件启动,不自动重复计数。硬件启动,不自动重复计数。OUT端波形与方式端波形与方式4相同相同( (软件触发选通软件触发选通软件触发选通软件触发选通) )( (硬件触发选通硬件触发选通硬件触发选通硬件触发选通) )工作波形工作波形18各种工作方式特点l方式方式0(计数结束中断)(计数结束中断) 计数过程中,计数过程中,计数过程中,计数过程中,GATEGATE端应保持端应保持端应保持端应保持高电平高电平高电平高电平。 每写入一次初值计数一个周期,然后停止计数。每写入一次初值计数一个周期,然后停止计数。每写入一次初值计数一个周期,然后停止计数。每写入一次初值计数一个周期,然后停止计数。 OUTOUT端输出是一个约端输出是一个约端输出是一个约端输出是一个约(N+1)T(N+1)TCLKCLK宽度的负脉冲。宽度的负脉冲。宽度的负脉冲。宽度的负脉冲。 计数过程中可随时修改初值重新开始计数。计数过程中可随时修改初值重新开始计数。计数过程中可随时修改初值重新开始计数。计数过程中可随时修改初值重新开始计数。l方式方式1(单稳态触发器)(单稳态触发器) 门控信号门控信号门控信号门控信号GATEGATE端的跳变触发计数,可重复触发。端的跳变触发计数,可重复触发。端的跳变触发计数,可重复触发。端的跳变触发计数,可重复触发。 若下一次若下一次若下一次若下一次GATEGATE上升沿提前到达,则上升沿提前到达,则上升沿提前到达,则上升沿提前到达,则OUTOUT端负脉冲端负脉冲端负脉冲端负脉冲拉宽为两次计数过程之和。拉宽为两次计数过程之和。拉宽为两次计数过程之和。拉宽为两次计数过程之和。 计数过程中写入新初值不影响本次计数。计数过程中写入新初值不影响本次计数。计数过程中写入新初值不影响本次计数。计数过程中写入新初值不影响本次计数。19各种工作方式特点l方式方式2(频率发生器)(频率发生器) GATEGATE为计数的控制信号:为计数的控制信号:为计数的控制信号:为计数的控制信号:GATEGATE变低计数停止,再变低计数停止,再变低计数停止,再变低计数停止,再变高时的下一个变高时的下一个变高时的下一个变高时的下一个CLKCLK下降沿,从初值开始重新计数。下降沿,从初值开始重新计数。下降沿,从初值开始重新计数。下降沿,从初值开始重新计数。 每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到1 1时),时),时),时),OUTOUT端输出一个端输出一个端输出一个端输出一个T TCLKCLK宽度的负脉冲。宽度的负脉冲。宽度的负脉冲。宽度的负脉冲。 计数过程计数过程计数过程计数过程自动重复自动重复自动重复自动重复进行。进行。进行。进行。 计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。l方式方式3(方波发生器)(方波发生器) OUTOUT输出方波,前半周期为高,后半周期为低。输出方波,前半周期为高,后半周期为低。输出方波,前半周期为高,后半周期为低。输出方波,前半周期为高,后半周期为低。 计数过程中修改初值不影响计数过程中修改初值不影响计数过程中修改初值不影响计数过程中修改初值不影响本半轮本半轮本半轮本半轮计数过程。计数过程。计数过程。计数过程。 其余的与方式其余的与方式其余的与方式其余的与方式2 2 类似。类似。类似。类似。20各种工作方式特点l方式方式4(软件触发选通)(软件触发选通) 计数过程中,计数过程中,计数过程中,计数过程中,GATEGATE端应保持端应保持端应保持端应保持高电平高电平高电平高电平。 每写入一次初值,计数一个周期,然后停止计数。每写入一次初值,计数一个周期,然后停止计数。每写入一次初值,计数一个周期,然后停止计数。每写入一次初值,计数一个周期,然后停止计数。 每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到0 0时),时),时),时),OUTOUT端输出一个端输出一个端输出一个端输出一个T TCLKCLK宽度宽度宽度宽度的负脉冲。的负脉冲。的负脉冲。的负脉冲。 计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。l方式方式5(硬件触发选通)(硬件触发选通) 写入初值时,写入初值时,写入初值时,写入初值时,GATEGATE端应保持端应保持端应保持端应保持低电平低电平低电平低电平。 GATEGATE每出现一次正脉冲,计数一个周期,然后停止计数。每出现一次正脉冲,计数一个周期,然后停止计数。每出现一次正脉冲,计数一个周期,然后停止计数。每出现一次正脉冲,计数一个周期,然后停止计数。 每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到0 0时),时),时),时),OUTOUT端输出一个端输出一个端输出一个端输出一个T TCLKCLK宽度宽度宽度宽度的负脉冲。的负脉冲。的负脉冲。的负脉冲。 计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。计数过程中修改初值不影响本轮计数过程。218253工作方式一览表工作方式一览表工作方式一览表工作方式一览表22四、控制字l用于确定各计数器的工作方式。用于确定各计数器的工作方式。l l82538253必须先必须先必须先必须先初始化初始化初始化初始化才能正常工作。才能正常工作。才能正常工作。才能正常工作。l l每个计数器都必须初始化一次。每个计数器都必须初始化一次。每个计数器都必须初始化一次。每个计数器都必须初始化一次。l lCPUCPU通过通过通过通过OUTOUT指令把控制字写入控制寄存器指令把控制字写入控制寄存器指令把控制字写入控制寄存器指令把控制字写入控制寄存器。格格 式式23五、8253的应用l与系统的连接与系统的连接l设置工作方式设置工作方式l置计数初值置计数初值编程编程24与系统的连接示意图CLKGATEOUTD0D7WRRDA1A0CSDBIOWIORA1A0译码器译码器高位地址高位地址A15-A28253共三组共三组82538253占用占用占用占用4 4个接口个接口个接口个接口地址:地址:地址:地址: 计数器计数器计数器计数器0 0 计数器计数器计数器计数器1 1 计数器计数器计数器计数器2 2 控制寄存器控制寄存器控制寄存器控制寄存器( (决定决定决定决定82538253的基地址的基地址的基地址的基地址) )25初始化程序流程写控制字写控制字写计数值低写计数值低8位位写计数值高写计数值高8位位*非必须非必须写入顺序:写入顺序: 可可按计数器分别写按计数器分别写入控制字和初值。入控制字和初值。 也可先写所有计数也可先写所有计数器控制字,再写入器控制字,再写入它们的初值它们的初值268253应用举例l采用采用8253作定时作定时/计数器,其接口地址为计数器,其接口地址为0120H0123H。l输入输入8253的时钟频率为的时钟频率为2MHz。l计数器计数器0: 每每10ms输出输出1个个CLK脉冲宽的负脉冲脉冲宽的负脉冲计数器计数器1: 产生产生10KHz的连续方波信号的连续方波信号 计数器计数器2: 启动计数启动计数5ms后后OUT输出高电平。输出高电平。l画线路连接图,并编写初始化程序。画线路连接图,并编写初始化程序。 278253应用举例(续)l确定计数初值:确定计数初值: CNT0: 10ms/0.5us = 20000 CNT1: 2MHz/10KHz = 200 CNT2: 5ms/0.5us = 10000l确定控制字:确定控制字: CNT0:方式方式2,16位计数值位计数值 00 11 010 0 CNT1:方式方式3,低,低8位计数值位计数值 01 01 011 0 CNT2:方式方式0, 16位计数值位计数值 10 11 000 0288253应用举例(续)CLK0GATE0OUT1D0D7WRRDA1A0CSDBIOWIORA1A0译码器译码器8253CLK2GATE1GATE2+5VCLK12MHzOUT0OUT2?线路连接图:线路连接图:298253应用举例 初始化程序初始化程序CNT0:MOV DX, 0123HMOV AL, 34HOUT DX, ALMOV DX, 0120HMOV AX, 20000OUT DX, ALMOV AL, AHOUT DX, ALCNT1: CNT2: 30*如何读出当前计数值如何读出当前计数值l l第第1种方法种方法在计数过程中读计数值在计数过程中读计数值先先锁存当前计数值锁存当前计数值,再用两条输入指,再用两条输入指令将令将16位计数值读出。位计数值读出。l l第第2种方法种方法停止计数器再读停止计数器再读用用GATE信号信号使计数器停止,再规定使计数器停止,再规定RL1和和RL0的读写格式,然后读出。的读写格式,然后读出。31*扩展定时/计数范围 当定时长度不够时,可把当定时长度不够时,可把2个或个或3个计数个计数通道通道串联串联起来使用,甚至可把多个起来使用,甚至可把多个8253串串联起来使用。联起来使用。 例如:例如:CLK频率为频率为1MHz,要求在,要求在OUT1端产生频率端产生频率1Hz的脉冲。的脉冲。 这时可将计数器这时可将计数器0、1串联,工作方式都串联,工作方式都均为方式均为方式3,计数初值均为,计数初值均为1000。连接方法。连接方法见下页。见下页。32扩展定时/计数范围1MHz1KHz1Hz338253小结l包含包含3个个16位计数器通道位计数器通道l4个编址部件:个编址部件:CNT0/1/2和控制寄存器和控制寄存器l每个计数器通道工作前必须初始化:每个计数器通道工作前必须初始化:控制字和计数初值控制字和计数初值l6种工作方式种工作方式l每种工作方式:启动方式、输出波形、每种工作方式:启动方式、输出波形、是否可重复计数等各不相同是否可重复计数等各不相同347.3 并行接口8255特点:特点:l含含3个独立的个独立的8位并行输入位并行输入/输出端口,输出端口,各端口均具有数据的控制和锁存能力各端口均具有数据的控制和锁存能力l可通过编程设置各端口的工作方式和可通过编程设置各端口的工作方式和数据传送方向(入数据传送方向(入/出出/双向)。双向)。35一、引线共共40个引脚个引脚36引线(续)连接系统端的主要引线:连接系统端的主要引线:lD0D7lCSlRDlWRlA0,A1 lRESET复位信号复位信号复位信号复位信号, ,接系统总线的接系统总线的接系统总线的接系统总线的RESETRESETA1 A0 选择选择0 0 端口端口A0 1 端口端口B1 0 端口端口C1 1 控制寄存器控制寄存器37引线(续)连接外设端的引脚:连接外设端的引脚:lPA0PA7lPB0PB7lPC0PC7分别对应分别对应A、B、C三三个个8位输入位输入/输出端口输出端口 三个端口可通过三个端口可通过三个端口可通过三个端口可通过编程编程编程编程分别指定为输入或输出口。分别指定为输入或输出口。分别指定为输入或输出口。分别指定为输入或输出口。其中,其中,C口即可用作独立的输入口即可用作独立的输入/输出口,也可用作输出口,也可用作A、B口的口的控制信号控制信号输出或输出或状态信号状态信号输入。输入。38二、结构A组组B组组 端口端口A端口端口C的高的高4位位端口端口B端口端口C的低的低4位位398255与系统的连接示意图D0D7WRRDA1A0CSDBIOWIORA1A0译码器译码器8255A口口B口口C口口D0D7外外 设设A15A2系系统统总总线线40三、8255工作方式基本输入基本输入/输出方式(方式输出方式(方式0)选通工作方式(方式选通工作方式(方式1)双向传送方式(方式双向传送方式(方式2)(仅)(仅A口)口) 某端口工作于哪一种方式,可通过软件编程来某端口工作于哪一种方式,可通过软件编程来某端口工作于哪一种方式,可通过软件编程来某端口工作于哪一种方式,可通过软件编程来指定。即向指定。即向指定。即向指定。即向82558255写入方式控制字来决定其工作方写入方式控制字来决定其工作方写入方式控制字来决定其工作方写入方式控制字来决定其工作方式,见下页。式,见下页。式,见下页。式,见下页。41方式控制字及位控字l可以利用软件编程确定可以利用软件编程确定8255的的3个端口工个端口工作于何种方式下;作于何种方式下;l8255的的C端口可以端口可以按位操作按位操作。当其工作。当其工作于方式于方式0下且作为输出口时,对于那些作下且作为输出口时,对于那些作为输出的位需要设置初始状态(为输出的位需要设置初始状态(1/0)。)。42方式控制字与位控字格式l控制字控制字确定确定3个端口的工作方式个端口的工作方式l位控字位控字确定确定C口某一位的初始状态,口某一位的初始状态, 或用于设置或用于设置INTE位位(方式方式1,2)。43工作方式0l8255相当于三个独立的相当于三个独立的8位简单接口。位简单接口。l各端口既可设置为输入口,也可设置为输各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出。出口,但不能同时实现输入及输出。lC端口即可以是一个端口即可以是一个8位的简单接口,也可位的简单接口,也可以分为两个独立的以分为两个独立的4位端口。位端口。l l设置为输出口时有锁存能力,设置为输入设置为输出口时有锁存能力,设置为输入口时无锁存能力。口时无锁存能力。44方式0的应用:l用于连接简单外设。用于连接简单外设。l适用于:适用于:无条件输入输出方式。无条件输入输出方式。查询查询查询查询输入输出输入输出方式:方式:方式:方式:把把A、B口作为口作为8位数据位数据的输入或输出口,的输入或输出口,C C口的高口的高口的高口的高/ /低低低低4 4位分别定义位分别定义位分别定义位分别定义为为为为A A、B B口的控制位和状态位。口的控制位和状态位。口的控制位和状态位。口的控制位和状态位。45工作方式1l利用一组选通控制信号控制利用一组选通控制信号控制A端口和端口和B端端口的数据输入输出。口的数据输入输出。lA、B口作输入或输出口,口作输入或输出口,C口的部分位口的部分位固定用作固定用作A、B口的选通控制信号。口的选通控制信号。lA口、口、B口在作为口在作为输入输入和和输出输出时的选通信时的选通信号不同。号不同。输入输入输出输出46C口的信号功能(方式口的信号功能(方式1输入)输入)l lSTB#STB#选通信号。它将外设数据送入选通信号。它将外设数据送入选通信号。它将外设数据送入选通信号。它将外设数据送入82558255的输入锁的输入锁的输入锁的输入锁存器。存器。存器。存器。l lIBFIBF输入锁存器满。通知外设不能送下一个数据。输入锁存器满。通知外设不能送下一个数据。输入锁存器满。通知外设不能送下一个数据。输入锁存器满。通知外设不能送下一个数据。此信号由此信号由此信号由此信号由STBSTB的前沿产生。的前沿产生。的前沿产生。的前沿产生。CPUCPU用用用用ININ指令取走数据后,指令取走数据后,指令取走数据后,指令取走数据后,此信号被清除。此信号被清除。此信号被清除。此信号被清除。l lINTRINTR中断请求。中断请求。中断请求。中断请求。STB#STB#的后沿产生,用于中断的后沿产生,用于中断的后沿产生,用于中断的后沿产生,用于中断CPUCPU,让,让,让,让CPUCPU读走输入锁存器中的数据。读走输入锁存器中的数据。读走输入锁存器中的数据。读走输入锁存器中的数据。l lINTEINTE中断允许位,是否允许发出中断允许位,是否允许发出中断允许位,是否允许发出中断允许位,是否允许发出INTRINTR请求。请求。请求。请求。INTE INTE =1=1和和和和IBFIBF为高电平时,允许发出为高电平时,允许发出为高电平时,允许发出为高电平时,允许发出INTRINTR请求。请求。请求。请求。47C口的信号功能(方式口的信号功能(方式1输出)输出)l lOBF#通知外设取走数据。通知外设取走数据。l lACK#外设响应信号,表示已从数据外设响应信号,表示已从数据端口取走数据。此信号使端口取走数据。此信号使OBF变高。变高。l lINTRACK#上升沿产生,通知上升沿产生,通知CPU输出下一个数据(通常接到输出下一个数据(通常接到8259)。)。l lINTE中断允许位,中断允许位,INTE=1和和OBF#为高电平时,允许产生为高电平时,允许产生INTR信号。信号。48注意:l lINTEINTE的状态可利用的状态可利用的状态可利用的状态可利用C C口的位控方式来设置:口的位控方式来设置:口的位控方式来设置:口的位控方式来设置:输入:输入:输入:输入:l lA A口的口的口的口的INTEINTE:写入:写入:写入:写入PC4PC4l lB B口的口的口的口的INTEINTE:写入:写入:写入:写入PC2PC2输出:输出:输出:输出:l lA A口的口的口的口的INTEINTE:写入:写入:写入:写入PC6PC6l lB B口的口的口的口的INTEINTE:写入:写入:写入:写入PC2PC2l l例如:方式例如:方式例如:方式例如:方式1 1输入允许输入允许输入允许输入允许A A口中断,则应按如下方口中断,则应按如下方口中断,则应按如下方口中断,则应按如下方法设置法设置法设置法设置INTEAINTEA。 MOV DXMOV DX,控制寄存器地址,控制寄存器地址,控制寄存器地址,控制寄存器地址 MOV AL MOV AL,0xxx0xxx1001001 1B ;1=B ;1=允许中断允许中断允许中断允许中断,0=,0=禁止中断禁止中断禁止中断禁止中断 OUT DXOUT DX,ALAL49方式1的应用:l主要用于中断控制方式下的输入输出。主要用于中断控制方式下的输入输出。lC口除部分位用作选通信号外,其余位可工作口除部分位用作选通信号外,其余位可工作在方式在方式0下,作为输入或输出线。下,作为输入或输出线。 特别是特别是A A、B B均为方式均为方式均为方式均为方式1 1时仅使用时仅使用时仅使用时仅使用C C口的口的口的口的6 6条线,条线,条线,条线,余下二条线可作为单独的输入输出线,用程序余下二条线可作为单独的输入输出线,用程序余下二条线可作为单独的输入输出线,用程序余下二条线可作为单独的输入输出线,用程序指定其数据传送方向。指定其数据传送方向。指定其数据传送方向。指定其数据传送方向。50工作方式2l双向方式双向方式既是输入口,又是输出口。既是输入口,又是输出口。l l利用利用C口的口的5条线提供传输联络信号。条线提供传输联络信号。l类似于类似于A口方式口方式1下输入和输出的组合。下输入和输出的组合。l只有只有A口可工作在方式口可工作在方式2下。下。lINTE1为为PC.bit6,INTE2为为PC.bit4。51方式2的应用:l可用于中断控制输入输出方式。可用于中断控制输入输出方式。l当当A口工作于方式口工作于方式2时,时,B口可工作于方口可工作于方式式1(此时(此时C口的剩余位都用作口的剩余位都用作B口选通口选通控制线);控制线);B口也可工作于方式口也可工作于方式0(此时(此时C口的剩余位也只能用作方式口的剩余位也只能用作方式0下的输入下的输入输出线)。输出线)。8255工作方式小结工作方式小结52四、8255芯片的应用芯片与系统的连接芯片与系统的连接芯片的初始化芯片的初始化相应的控制程序相应的控制程序例例7-3538255应用举例1 l利用利用8255实现开关检测和继电器控制电实现开关检测和继电器控制电路;路;l当开关闭合时,使继电器通电动作;开当开关闭合时,使继电器通电动作;开关断开时,继电器不动作;关断开时,继电器不动作;l系统每隔系统每隔100ms检测一次开关状态,实检测一次开关状态,实现相应的继电器控制;现相应的继电器控制;l初始状态下继电器不动作。初始状态下继电器不动作。54CSA0A1WRRDDBPA0PA7PB0PB7+5V+12VK继电器继电器384H387H388H38BHCSA0A1OUT1CLK12MHzCLK0OUT08259APICWRRDDB82538255中断请求信号中断请求信号INTRQ1R1R2D155题目分析:l使使8255的的A端口和端口和B端口均工作于方式端口均工作于方式0;l8253计数器计数器0和计数器和计数器1均工作于方式均工作于方式3,利用,利用OUT0的的输出作为计数器输出作为计数器1的时钟信号,其输出频率为的时钟信号,其输出频率为2KHz, OUT1输出频率为输出频率为10Hz(周期周期100ms);lOUT1作为中断信号,每作为中断信号,每100ms产生一次中断;产生一次中断;lCPU响应中断后检测开关状态,控制继电器的动作;响应中断后检测开关状态,控制继电器的动作;l8253两个计数器的计数初值分别为:两个计数器的计数初值分别为: CNT0:2MHz/2KHz =1000 (16位)位) CNT1:100ms/0.5ms=200 (8位)位)568255的初始化MOV DX,387HMOV AL,82H ;1 00 0 0 0 1 0OUT DX,AL XOR AL,AL ;A口输出全口输出全0MOV DX,384HOUT DX,AL578253的初始化l设置工作方式:设置工作方式:MOV DX,38BHMOV AL,36HOUT DX,ALMOV AL,56HOUT DX,AL36H = 00 11 011 0 CNT0 16位位 方式方式3l置置计数初值:计数初值:MOV DX,388HMOV AX,1000OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,389HMOV AL,200OUT DX,AL588255的控制程序(中断处理)(中断初始化程序略中断初始化程序略)8253中断服务程序中的中断服务程序中的8255控制程序段如下:控制程序段如下: MOV DX,385H ;PB口地址口地址 IN AL,DX ;读;读PB0状态状态 NOT AL ;变反;变反 MOV DX,384H ;输出到继电器;输出到继电器 OUT DX,AL 598255应用举例2l习题习题P342,第,第12题(译码器输入改为题(译码器输入改为A15-A2):):定时采集开关状态,并显示到数码管上定时采集开关状态,并显示到数码管上607.47.4可编程串行通信接口了解:了解:l串行通信的一般概念串行通信的一般概念 工作方式、同步方式、数据格式、物理标准工作方式、同步方式、数据格式、物理标准工作方式、同步方式、数据格式、物理标准工作方式、同步方式、数据格式、物理标准l串行通信的接口标准 EIA RS-232CEIA RS-232Cl可编程串行异步通信接口8250(UART) 连接、编程、应用连接、编程、应用连接、编程、应用连接、编程、应用UART: Universal Asynchronous Receiver TransmitterUART: Universal Asynchronous Receiver Transmitter*617.4.1串行通信基本概念串行通信: 每个时间单位仅传送一位信息; 每个字符(字节)的各位依次传送; 字符之间的间隔不定。优点: 传输线少,成本低,传输距离远621.串行通信工作方式单工通信单工通信只能由一方发送,例:广播只能由一方发送,例:广播半双工通信半双工通信某一时刻只能由一方发送,例:对讲机某一时刻只能由一方发送,例:对讲机全双工通信全双工通信双方可同时传输,例:电话双方可同时传输,例:电话同步通信同步通信双方对每一位的收发时序完全一致,统一时钟双方对每一位的收发时序完全一致,统一时钟异步通信异步通信收发双方时钟不统一收发双方时钟不统一63单工/双工操作发送器发送器接收器接收器发送器发送器/接收器接收器发送器发送器/接收器接收器发送器发送器/接收器接收器发送器发送器/接收器接收器单工方式:单工方式:半双工方式:半双工方式:全双工方式:全双工方式:A站站B站站64l电话网络电话网络模拟信号模拟信号,计算机,计算机数字信号数字信号。l远距离通信时需要通过普通电话网络传输远距离通信时需要通过普通电话网络传输数字信号:频带宽数字信号:频带宽电话网络:频带窄电话网络:频带窄 要使数字信号在电话网络上传输,需要进行信号变换要使数字信号在电话网络上传输,需要进行信号变换把数字信号承载到模拟信号上传输把数字信号承载到模拟信号上传输,这个模拟信号,这个模拟信号称为称为载波载波信号。信号。l调制调制把数字信号承载到载波信号上把数字信号承载到载波信号上l解调解调从载波信号中恢复出数字信号从载波信号中恢复出数字信号l调制解调器:实现调制与解调的设备调制解调器:实现调制与解调的设备*2. 调制与解调65三种调制方式根据载波根据载波 Acos( t + )的三个参数:幅度、频率、相位,产的三个参数:幅度、频率、相位,产生常用的三种调制技术:生常用的三种调制技术:幅移键控法幅移键控法 Amplitude-Shift Keying (ASK)频移键控法频移键控法 Frequency-Shift Keying (FSK)相移键控法相移键控法 Phase-Shift Keying (PSK) lASK (又称为调幅又称为调幅) 用载波信号的不同用载波信号的不同幅度幅度代表代表1和和0lFSK (又称为调频又称为调频) 用载波信号的不同用载波信号的不同频率频率代表代表1和和0lPSK (又称为调相又称为调相) 用载波信号的用载波信号的相位变化相位变化代表代表1和和0(有变化为(有变化为1,无变化,无变化为为0)660 00 01 11 10 01 10 00 00 01 10 0调幅调幅调幅调幅调频调频调频调频调相调相调相调相数字信号数字信号数字信号数字信号数字数据数字数据数字数据数字数据三种调制方式的调制波形图67l串行通信主要用于远距离数据传输。串行通信主要用于远距离数据传输。问题:干扰、衰减,信号畸变问题:干扰、衰减,信号畸变l解决方法:差错控制技术解决方法:差错控制技术检测、纠正检测、纠正l常用的数据校验方法:常用的数据校验方法:奇偶校验:奇偶校验:l以字符为单位进行校验以字符为单位进行校验l发送方使发送的每个字节中发送方使发送的每个字节中1的个数为奇数或的个数为奇数或偶数;接收方检查收到的每个字节中偶数;接收方检查收到的每个字节中1的个数的个数是否符合双方的事先约定。是否符合双方的事先约定。l奇偶校验可以检查出一个字节中发生的单个错误。奇偶校验可以检查出一个字节中发生的单个错误。l奇偶校验不能自动纠错,发现错误后需奇偶校验不能自动纠错,发现错误后需“重传重传”。3. 数据校验68循环冗余校验循环冗余校验CRC (循环冗余码循环冗余码/多项式编码多项式编码)l以数据块(帧以数据块(帧, Frame)为单位进行校验)为单位进行校验l编码思想:将编码思想:将数据块构成的数据块构成的位串看成是系数为位串看成是系数为0或或1的多项式的多项式如如110001,可表示成多项式,可表示成多项式 x5 + x4 + 1数据块构成的数据块构成的多项式除以另一个多项式多项式除以另一个多项式G(x),得到的余数,得到的余数多项式多项式R(x)就称为就称为CRC码(或称为校验和),而码(或称为校验和),而G(x)则称则称为生成多项式。为生成多项式。lCRC校验的校验的检错方式:检错方式:收发双方约定一个生成多项式收发双方约定一个生成多项式G(x),发送方在帧,发送方在帧的末尾加上校验和,使带有校验和的帧的多项式的末尾加上校验和,使带有校验和的帧的多项式能被能被G(x)整除;接收方收到后,用整除;接收方收到后,用G(x)去除它去除它,若余数为若余数为0,则传输正确,否则传输有错。,则传输正确,否则传输有错。数据校验69lCRC校验和计算方法若若G(x)为为r阶,原帧为阶,原帧为m位,其多项式为位,其多项式为M(x),则在原,则在原帧后面添加帧后面添加r个个0,帧成为,帧成为m+r位,相应多项式位,相应多项式2rM(x) 按按模2除法法用用2rM(x)除以除以G(x):商:商Q(x),余,余R(x)即即 2rM(x) = G(x)Q(x)+R(x)按按模2加法法把把2rM(x)与余数与余数R(x)相加,结果就是要传送相加,结果就是要传送的带校验和的帧的多项式的带校验和的帧的多项式T(x) T(x) = 2rM(x) + R(x)实际上,实际上,T(x) = 2rM(x) + R(x) = G(x)Q(x) + R(x) + R(x) = G(x)Q(x) (模模2运算运算) 所以,若接收的所以,若接收的T(x)正确,则它肯定能被正确,则它肯定能被G(x)除尽。除尽。数据校验70数据校验CRC校验码的检错能力:校验码的检错能力:l可检出所有奇数个错可检出所有奇数个错l可检出所有单位可检出所有单位/双位错双位错l可检出所有可检出所有G(x)G(x)长度的突发错长度的突发错常用的生成多项式:常用的生成多项式:lCRC12 = x12+x11+x3+x2+1lCRC16 = x16+x15+x2+1lCRC32 =x32+x26+x23+x22+x16+x11+x10 +x8+x7+x5+x4+x2+x+1714.同步通信与异步通信l所有串行通信都需要一个时钟信号来作为数据的所有串行通信都需要一个时钟信号来作为数据的定时参考。发送器和接收器用时钟来决定何时发定时参考。发送器和接收器用时钟来决定何时发送和读取每一个数据位。送和读取每一个数据位。l根据传输时采用的是统一时钟还是本地局部时钟,根据传输时采用的是统一时钟还是本地局部时钟,分为分为同步传输同步传输和和异步传输异步传输两种。两种。同步传输用同步传输用一个时钟脉冲一个时钟脉冲确定一个数据位确定一个数据位, 异步传输异步传输用用多个时钟脉冲多个时钟脉冲确定一个数据位确定一个数据位(如如16个个)同步传输以数据块同步传输以数据块(当作当作“位流”看待看待)为单位传输,为单位传输,异步传输以字符为单位传输,但都称为异步传输以字符为单位传输,但都称为帧(Frame) 72同步通信的时钟定时方法数据(62H)01100010同步传输先发送高位(MSB)发送方在时钟信号的下降沿发送字节接收方在时钟信号的上升沿接收字节时钟(发送时钟与接收时钟完全同步)LSBMSB73异步通信的时钟定时方法数据(62H)000011停止位异步传输先发送低位(LSB)发送方利用发送时钟来决定发送每个位的时刻接收方检测起始位的下降沿,并用它来同步接收时钟,然后利用接收时钟从每一位的中间接收该位1起始位LSBMSB0奇偶校验位00/11 1接收/发送时钟74异步通信时数据位的检测起始位波特率因子波特率因子K=16TdTc111000000000连续 8 个 0第9个仍为 0以后每隔16个Tc检测一次数据的其他位发送/接收时钟周期:Tc,数据位间隔:TdTc = Td / K, 其中K称为波特率因子(16,32,64)75异步通信的一般的一般格式每个字符由每个字符由起始位起始位、数据位数据位、校验位校验位、停止位停止位构成。构成。起始位和停止位用于字符的同步。起始位和停止位用于字符的同步。起始位最低位最高位58个数据位可选的奇偶校验位1, 11/2或2个停止位767.4.2 串行通信的接口标准l机械特性:连接器的尺寸、引脚分布机械特性:连接器的尺寸、引脚分布l信号特性:信号电平、通信速率信号特性:信号电平、通信速率l功能特性:引脚功能、控制时序功能特性:引脚功能、控制时序 最常见的串行通信标准是最常见的串行通信标准是RS-232C。77RS-232C标准l外形为外形为25针或针或9针的针的D型连接器型连接器l通信速率:波特率通信速率:波特率Baud(符号数符号数/s) 100、300、600、1200、2400、4800 9600、19.2K、33.6K、56K l信号电平:信号电平:逻辑逻辑“1”:-3V-15V逻辑逻辑“0”:+3V+15VTTL电平与电平与RS232电平转换:电平转换:lTTLRS232: MC1488lRS232TTL: MC148978主要引脚的功能79信号时序(接收)l设备握手设备握手DTR:PCM(保持,表示(保持,表示PC已可以工作)已可以工作)DSR:PCM(保持,表示(保持,表示M已可以工作)已可以工作)l监视载波信号监视载波信号DCD:PCM载波(表示数据链已建立)载波(表示数据链已建立)l接收数据接收数据RD: PCM数据调制信号数据调制信号l结束通信结束通信DCD消失、消失、PC撤除撤除DTR、Modem撤除撤除DSR80信号时序(发送)l设备握手设备握手DTR:PCM(保持)(保持)DSR:PCM(保持)(保持)l请求发送请求发送RTS:PCM(保持),(保持),M载波,在对方产生载波,在对方产生DCDCTS:PCM(保持)(保持)l发送数据发送数据TD:PCM数据调制信号数据调制信号l结束通信结束通信PC撤除撤除RTS/DTRModem撤除撤除CTS/DSR,停止发送载波,停止发送载波81RS-232C接口连接方式82RS-232C接口连接方式(续)l一种简化的连接方式(一种简化的连接方式(Null Modem)适用于双机直连适用于双机直连TDRDRTSCTSDCDGNDDTRDSRRITDRDRTSCTSDCDGNDDTRDSRRI837.4.3 可编程串行通信接口8250主要内容:主要内容: 1)8250的引脚及功能的引脚及功能 2)与系统的连接)与系统的连接 3)内部结构与内部寄存器)内部结构与内部寄存器 4)8250的编程的编程841. 8250 的引脚及功能l面向系统的引脚:面向系统的引脚:D0D7 双向数据线。与系统数据总线双向数据线。与系统数据总线DB相连接,用以传送数相连接,用以传送数据、控制信息和状态信息。据、控制信息和状态信息。CS0,CS1,CS2 片选信号,当它们同时有效时,该片选信号,当它们同时有效时,该8250芯片被选中。芯片被选中。CSOUT 片选输出信号。当片选输出信号。当8250的的CS0、CS1和和CS2同时有效同时有效时,时,CSOUT为高电平。为高电平。MR 主复位信号,复位后主复位信号,复位后8250的状态见的状态见P331表表7-5。 85 A0A0A2A2 8250 8250内部寄存器的选择信号。不同的编码内部寄存器的选择信号。不同的编码 对应于不同的寄存器。对应于不同的寄存器。 ADSADS 地址选通信号。有效时可将地址选通信号。有效时可将CS0CS0,CS1CS1,CS2CS2及及A0-A2A0-A2锁锁存于存于82508250内部。不需要锁存时,内部。不需要锁存时,ADSADS可直接接地。可直接接地。 DISTRDISTR 读选通信号。通常与系统总线的读选通信号。通常与系统总线的IORIOR信号相连接。信号相连接。 DOSTRDOSTR 写选通信号。通常与系统总线的写选通信号。通常与系统总线的IOWIOW信号相连接。信号相连接。 INTRINTR 中断请求信号。当允许中断请求信号。当允许82508250中断时,接收出错、接收中断时,接收出错、接收数据寄存器满、发送数据寄存器空以及数据寄存器满、发送数据寄存器空以及MODEMMODEM的状态的状态均能够产生有效的均能够产生有效的INTRINTR信号。信号。868250 的引脚及功能(续)l面向通信设备的引脚信号面向通信设备的引脚信号SIN, SOUT: 串行输入串行输入/输出端输出端CTS, RTS, DTR, DSR:(同(同RS232标准中的信号)标准中的信号)RLSD: 即即RS232C标准中的标准中的DCD信号信号RI:(同(同RS232标准中的信号)标准中的信号)OUT1, OUT2: 可由用户编程确定其状态的输出端可由用户编程确定其状态的输出端BAUDOUT: 波特率信号输出(频率波特率信号输出(频率=fCLK/分频值)分频值)XTAL1, XTAL2: 接外部晶振,作为基准时钟接外部晶振,作为基准时钟fCLKRCLK: 接收时钟输入(可直接与接收时钟输入(可直接与BAUDOUT相连)相连)874.3888250与8088系统的连接系统总线D7-D0DISTRDOSTRINTRMRA0A1A2ADSDISTRDOSTRCS2CS1CS0+5VCSD7-D0# IOR# IOWINTRRESETA0A1A2电平转换/驱动器14881489到RS232接口XTAL1XTAL2BAUDOUTRCLK SOUTSINRTSDTRDSRDCDCTSRI8250XTAL892. 8250的内部寄存器l共共10个可编程(寻址)的寄存器个可编程(寻址)的寄存器线路控制寄存器(线路控制寄存器(LCR) BASE+3线路状态寄存器(线路状态寄存器(LSR) BASE+5 发送保持寄存器(发送保持寄存器(THR) BASE+0(写)(写)接收缓冲寄存器(接收缓冲寄存器(RBR) BASE+0(读)(读)除数锁存器低除数锁存器低8位(位(DLL)BASE+0(DL=1)除数锁存器高除数锁存器高8位(位(DLH)BASE+1(DL=1)中断允许寄存器(中断允许寄存器(IER) BASE+1中断识别寄存器(中断识别寄存器(IIR) BASE+2Modem控制寄存器(控制寄存器(MCR)BASE+4Modem状态寄存器(状态寄存器(MSR)BASE+6908250的内部寄存器(续)l除数锁存器(除数锁存器(DLL,DLH)BASE+0,1用来保存分频系数,以获得所需的用来保存分频系数,以获得所需的波特率波特率。l波特率波特率可以简单地看成每秒传送多少二进制位可以简单地看成每秒传送多少二进制位PC机中基准时钟频率机中基准时钟频率fCLK=1.8432MHz,波特率因,波特率因子子K=16。所以,对于指定的波特率。所以,对于指定的波特率B 除数值除数值=1843200/(B16)=115200/B例如,通信速率为例如,通信速率为9600波特时,除数值波特时,除数值=12。注意:写除数前,必须把注意:写除数前,必须把LCR的最高位的最高位(DL位位)置置1918250的内部寄存器(续)l线路控制寄存器(线路控制寄存器(LCR)BASE+3决定传输时的数据帧格式(通信双方必须一致)决定传输时的数据帧格式(通信双方必须一致)D7 D6 D5 D4 D3 D2 D1 D0DL位:0正常操作1写除数寄存器0正常操作1SOUT强制为1 (Break符号)xx0无校验001奇校验011偶校验101恒为1111恒为001位停止位12位停止位107位数据位118位数据位928250的内部寄存器(续)l线路状态寄存器(线路状态寄存器(LSR)BASE+5反映传输时的通信线状态反映传输时的通信线状态 0 D6 D5 D4 D3 D2 D1 D0发送移位寄存器空发送保持寄存器空检测到Break接收缓冲寄存器满溢出错奇偶错格式错(停止位个数不符)938250的内部寄存器(续)l发送保持寄存器(发送保持寄存器(THR)BASE+0要发送的数据写入此寄存器。当发送移位寄存器要发送的数据写入此寄存器。当发送移位寄存器TSR空时,空时,THR中的内容移入中的内容移入TSR被发送出去。被发送出去。只有只有THR空时,空时,CPU才能写入下一个要发送的数据才能写入下一个要发送的数据l接收缓冲寄存器(接收缓冲寄存器(RBR)BASE+0RSR收到一个完整的数据后,就将其送入收到一个完整的数据后,就将其送入RBR中。中。CPU可从可从RBR中读取收到的数据。中读取收到的数据。RBR只能缓冲一个数据,当只能缓冲一个数据,当CPU未能及时取走上一未能及时取走上一个数据,下一个数据又送入个数据,下一个数据又送入RBR时,会产生溢出错时,会产生溢出错948250的内部寄存器(续)l中断允许寄存器(中断允许寄存器(IER)BASE+1决定哪类中断可以产生(也可禁止所有中断产生)决定哪类中断可以产生(也可禁止所有中断产生) 0 0 0 0 D3 D2 D1 D01允许RBR满中断1允许THR空中断1允许线路状态中断 (溢出错、奇偶错、格式错、Break)1允许Modem状态中断958250的内部寄存器(续)l中断识别寄存器(中断识别寄存器(IIR)BASE+2用于识别产生中断的原因用于识别产生中断的原因 0 0 0 0 0 D2 D1 D00无中断1有中断00Modem状态中断(优先级最低)01THR空中断10RBR满中断11线路状态中断968250的内部寄存器(续)lModem控制寄存器(控制寄存器(MCR)BASE+4产生产生RTS、DTR信号信号产生产生OUT1、OUT2信号信号设置循环自检状态设置循环自检状态 0 0 0 D4 D3 D2 D1 D0DTRRTSOUT1OUT2LOOP978250的内部寄存器(续)lModem状态寄存器(状态寄存器(MSR)BASE+6反映反映RS232接口的状态接口的状态CTSDSRRIRLSDCTSD7 D6 D5 D4 D3 D2 D1 D0RLSDRIDSR反映4个引脚的当前状态(反相值)反映了自上次读MSR后这4个引脚是否发生了变化(1发生了变化)988250发送数据的工作过程1)CPU(数据数据)8250的的THR ;2)TSR移空时,移空时,THR TSR,LSR中中“数据发送保持寄存器空数据发送保持寄存器空” 状态位置位状态位置位 ;3)TSR根据根据LCR中规定的格式从低到高逐位发送数据中规定的格式从低到高逐位发送数据 ;4)LSR中中“数据发送保持寄存器空数据发送保持寄存器空” 状态位可用来产生中断,也状态位可用来产生中断,也可查询该状态位,以实现数据的连续发送。可查询该状态位,以实现数据的连续发送。TSRTHR串行数据输出并行数据LSRINTLCR数据状态1)2)3)2)4)4)998250接收数据的工作过程1 1)SINSIN引脚上的串行数据逐位进入引脚上的串行数据逐位进入RSRRSR;2 2)RSRRSR根据根据LSRLSR中规定的数据位数确定是否收到了一个完整的数据,中规定的数据位数确定是否收到了一个完整的数据,收到后将数据收到后将数据RBRRBR;3 3)RBRRBR收到收到RSRRSR的数据后,将的数据后,将LSRLSR寄存器中寄存器中“ “接收缓冲寄存器满接收缓冲寄存器满接收缓冲寄存器满接收缓冲寄存器满” ”的状态位置位;的状态位置位;4 4)LSR中中“ “接收缓冲寄存器满接收缓冲寄存器满接收缓冲寄存器满接收缓冲寄存器满” ”状态位可用来产生中断,也可查询状态位可用来产生中断,也可查询该状态位,该状态位,以实现数据的连续接收。以实现数据的连续接收。RSRRBR串行数据输入并行数据LSRINTLCR数据状态1)2)3)4)1003. 8250 的初始化流程l初始化程序程序初始化程序程序例子见例子见P338-339l流程图见右图流程图见右图使LCR的最高位1写除数寄存器写LCR寄存器,同时使LCR的最高位0写MCR寄存器写IER寄存器101用BIOS功能初始化8250lPC机有两个串行接口:机有两个串行接口:COM1(基地址基地址3F8H), COM2(基地址基地址2F8H)lBIOS通过中断通过中断14H提供串行通信功能提供串行通信功能功能功能0:初始化串行接口:初始化串行接口功能功能1:发送一个字符:发送一个字符功能功能2:接收一个字符:接收一个字符功能功能3:读串行接口状态:读串行接口状态lINT14H仅提供了查询方式的通信服务仅提供了查询方式的通信服务要使用中断方式进行发送和接收必须自行编程要使用中断方式进行发送和接收必须自行编程102用BIOS功能初始化8250l功能功能0(初始化)的入口参数为:(初始化)的入口参数为:AH=0AL=初始化参数初始化参数DX=串口编号(串口编号(0=COM1, 1=COM2)l初始化参数定义如下:初始化参数定义如下:D7 D6 D5 D4 D3 D2 D1 D0波特率1001200101240011048001119600奇偶校验x0无校验01奇校验11偶校验数据位数005位016位107位118位停止位01位12位MOV AH, 0MOV AL, 初始化参数MOV DX, 0INT 14H1038250的数据发送程序(查询) LEA SI, DATA_BUFFER MOV CX, DATA_BYTESL1: MOV DX, BASE+5 ;LSR地址地址 IN AL, DX TEST AL, 00100000B ;THR空空? JZ L1 LODSB MOV DX, BASE+0 ;THR地址地址 OUT DX, AL LOOP L1 THR空?输出一个字节输出完?NYYN1048250的数据接收程序(查询) LEA DI, DATA_BUFFER MOV CX, DATA_BYTESL1: MOV DX, BASE+5 ; LSR地址地址 IN AL, DX TEST AL, 00011110B ; 有错误有错误? JNZ ERROR TEST AL, 00000001B ; 收到数据收到数据? JZ L1 MOV DX, BASE+0 ; RBR地址地址 IN AL, DX STOSB LOOP L1 有错误?读入数据收到数据?NYYN错误处理接收完?NY105用BIOS功能发送/接收数据通过通过COM1发送数据:发送数据: LEA SI, DATA_BUFFER MOV CX, DATA_BYTESL1: MOV AH, 1 ; 功能功能1 MOV DX, 0 ; COM1 LODSB ; 数据在数据在AL中中 INT 14H ; 发送发送 LOOP L1 通过通过COM1接收数据:接收数据: LEA DI, DATA_BUFFER MOV CX, DATA_BYTESL1: MOV AH, 3 ; 功能功能3 MOV DX, 0 ; COM1 INT 14H ; 读接口状态读接口状态 TEST AH, 00011110B ;有错误有错误? JNZ ERROR TEST AH, 00000001B ;有数据有数据? JZ L1 MOV AH, 2 ; 功能功能2 MOV DX, 0 ; COM1 INT 14H ; 接收数据接收数据 STOSB ; 保存数据保存数据 LOOP L1106作业:P342l7.3l7.4l7.6l7.10l7.11107
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号