《常用可编程数字接口电路.ppt》由会员分享,可在线阅读,更多相关《常用可编程数字接口电路.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、可编程接口技术C H A P T E R8本 章 内 容1 13 32 24 4概 述可编程定时器/计数器Intel 8253可编程并行接口芯片Intel 8255A可编程串行输入/输出接口Ins 8250第一节 概 述 可编程数字接口电路根据其可编程数字接口电路根据其在系统中所起的作在系统中所起的作用用可分为两大类:可分为两大类:专用接口芯片专用接口芯片专为某类外设的某种功能而设计的专用接口芯片,不需要进行任何设置;可编程接口芯片可编程接口芯片(如图8-1所示)在多种场合使用,通过对芯片的设置来确定工作模式、工作状态和功能。第一节 概 述(续)从它们的结构上看,可以把一个接口分为两部分:从它
2、们的结构上看,可以把一个接口分为两部分:左半部分接口与左半部分接口与系统总线相连,系统总线相连,包括总线收发器包括总线收发器及读写控制逻辑及读写控制逻辑右半部分接口与右半部分接口与各种各种I/O设备相设备相连,包括状态寄连,包括状态寄存器、控制寄存存器、控制寄存器、数据输入器、数据输入/输出锁存器和缓输出锁存器和缓冲器。冲器。图8-1通用接口芯片第二节 可编程定时器/计数器Intel8253基本概念:定时定时:产生符合时间要求的信号的过程;产生符合时间要求的信号的过程;计数计数:对一些脉冲信号或外部事件的数量进对一些脉冲信号或外部事件的数量进 行统计的过程;行统计的过程;第二节第二节 可编程定
3、时器可编程定时器/计数器计数器 Intel 8253 Intel 8253定时器和计数器在工作方式上有许多相似之处:作为计数器,输入的计数信号是随机的,作为计数器,输入的计数信号是随机的,计数的是外部脉冲信号;计数的是外部脉冲信号;作为定时器,输入的脉冲信号具有周期性,作为定时器,输入的脉冲信号具有周期性,计数的是内部基准时钟产生的脉冲。计数的是内部基准时钟产生的脉冲。一个定时电路可一个定时电路可完成计数功能。完成计数功能。第二节第二节 可编程定时器可编程定时器/计数器计数器 Intel 8253 Intel 8253计算机系统中的定时方法包括:软件定时软件定时:通过通过CPUCPU执行一个循
4、环程序获得;执行一个循环程序获得;优点:节省硬件资源;优点:节省硬件资源;缺点:降低了缺点:降低了CPUCPU的效率。的效率。不可编程:不可编程:硬件定时硬件定时 可编程:可编程:由计数器等元器件组建由计数器等元器件组建的一个专用的计时电路。的一个专用的计时电路。由大规模集成电路芯片构由大规模集成电路芯片构成,定时时间及定时方式成,定时时间及定时方式可通过软件编程灵活设置。可通过软件编程灵活设置。Intel 8253 Intel 8253 的内部结构及外部引脚的内部结构及外部引脚Intel 8253的特点:具有具有3 3个独立的个独立的1616位定时位定时/计数通道(计数器计数通道(计数器0
5、0,计数,计数器器1 1和计数器和计数器2 2););每个通道有每个通道有6 6种工作方式,可实现精确定时及对外部种工作方式,可实现精确定时及对外部脉冲计数,由程序进行设置选择;脉冲计数,由程序进行设置选择;每个通道的计数器均可以按照二进制或每个通道的计数器均可以按照二进制或BCDBCD码计数;码计数;每个计数器的计数速率可达每个计数器的计数速率可达2MHz2MHz(Intel 8254Intel 8254最高最高计数速率达计数速率达10MHz10MHz););可由软件设置延时时间的长短;可由软件设置延时时间的长短;所有输入输出都与所有输入输出都与TTLTTL兼容。兼容。Intel 8253的
6、内部结构Intel 8253的内部结构如图8-2a所示。计数器计数器0 02 2是三是三个定时器个定时器/计数器计数器通道,内部结构通道,内部结构相同,如相同,如图图8-2b8-2b所示。所示。数据总线缓冲器是数据总线缓冲器是Intel 8253Intel 8253与系统与系统数据总线连接的数据总线连接的8 8位位双向三态缓冲器。双向三态缓冲器。读读/写逻辑电路写逻辑电路接收来自系统总接收来自系统总线的信号。线的信号。控制字寄控制字寄存器存器Intel 8253的外部引脚Intel 8253Intel 8253的外部引脚如图的外部引脚如图7-2c7-2c所示。所示。D D7 7D D0 0:八
7、:八位双向三位双向三态数据线;态数据线;A A1 1、A A0 0:用于:用于寻址三个计数寻址三个计数器和控制字寄器和控制字寄存器。存器。这三个信号分别这三个信号分别是写、读和片选是写、读和片选信号。信号。CLKCLK0 0CLKCLK2 2:计数脉冲信计数脉冲信号输入。号输入。GATEGATE0 0GATEGATE2 2:门:门控信号输入引脚。控信号输入引脚。OUTOUT0 0OUTOUT2 2:计数器计数器0 02 2的的计数结束输出计数结束输出引脚。引脚。Intel 8253Intel 8253的工作方式的工作方式每个通道都具有六种工作方式,需注意以下几点:当控制字写入当控制字写入Int
8、el 8253Intel 8253时,其内部所有的控制逻时,其内部所有的控制逻辑电路立即复位,输出端辑电路立即复位,输出端OUTOUT进入初始状态;进入初始状态;软启动:软启动:计数器的启动计数器的启动 硬启动:硬启动:多数情况下,计数器启动一次只工作一个周期,但多数情况下,计数器启动一次只工作一个周期,但有两种方式可供选择,若选择则自动重复计数。有两种方式可供选择,若选择则自动重复计数。用输出指令向计数器赋初值启用输出指令向计数器赋初值启动计数;动计数;写入计数初值后计数器并未启写入计数初值后计数器并未启动,需门控信号动,需门控信号GATEGATE变成高电变成高电平时才能启动;平时才能启动;
9、Intel 8253Intel 8253的初始化编程的初始化编程 通过初始化编程可确定Intel 8253各通道的工作方式及计数初值。工作方式的确定通过向Intel 8253控制寄存器中写入控制字来完成。1.8253 1.8253控制字格式(如控制字格式(如图图8-48-4所示)所示)2.2.初始化编程初始化编程u 对计数器设置初值前,必须先写控制字以确定工作方式。u 初值设置时,要符合控制字中的格式规定。在对8253编程的过程中,有两种情况:对8253执行写操作,即写入控制字和计数初值,规定和启动计数器工作,为初始化编程;对8253执行读操作,读出的是指定通道的当前计数值。Intel 825
10、3Intel 8253的初始化编程的初始化编程Intel 8253Intel 8253的初始化编程的初始化编程【例8-1】设计8253初始化程序。要求满足使计数通道0工作在方式1,二进制计数,计数值为805AH。设:口地址为4A0H4A3H,CPU为8088。控制字控制字:00110010B00110010B初始化编程:初始化编程:MOV DXMOV DX,4A3H4A3HMOV ALMOV AL,32H32HOUT DXOUT DX,ALALMOV DXMOV DX,4A0H4A0HMOV ALMOV AL,5AH5AHOUT DXOUT DX,ALALMOV ALMOV AL,80H80H
11、OUT DXOUT DX,ALALIntel 8253Intel 8253的工作方式的工作方式1.方式0-计数结束时中断方式CW N=443210WRCLKGATEOUTCW N=332210WRCLKGATEOUTCW N=332120WRCLKGATEOUT1N=22.方式1 可编程单脉冲方式CW N=221210WRCLKGATEOUT0CW N=221432WRCLKGATEOUT0N=43.方式2 速率发生器方式CW N=332132WRCLKGATEOUT134.方式3 方波发生器方式CW N=442424WRCLKGATEOUT245.方式4 -软件触发选通方式CW N=4432
12、10WRCLKGATEOUT6.方式5 硬件触发选通方式CW N=443210WRCLKGATEOUTGATEGATE信号功能表信号功能表表表8-28-2GATEGATE信号功能表信号功能表Intel 8253Intel 8253的工作方式(续)的工作方式(续)表表8-38-382538253工作方式一览表工作方式一览表【例【例8-18-1】用】用8253(8253(地址地址40H40H43H)43H)将将5MHz5MHz的方波信的方波信号变为号变为1Hz1Hz的脉冲。的脉冲。图图8-58-5系统连接图系统连接图初值初值=F=FCLKCLK/F/FOUTOUT=5MHz/1Hz=5MHz/1H
13、z=5106=51066553665536,怎么办?,怎么办?方法:方法:将将2 2个个T/CT/C(定时器(定时器/计计数器通道)级联,数器通道)级联,T/C0T/C0采用方采用方式式3 3产生连续分频方波,做产生连续分频方波,做T/C1T/C1的的CLKCLK,T/C1T/C1采用方式采用方式2 2产产生生1Hz1Hz脉冲。两个脉冲。两个T/CT/C的的GATEGATE统统一控制。一控制。程序如下:程序如下:MOV AL,00110111B;T/C0控制字 OUT 43H,ALMOV AX,5000H;T/C0 初值OUT 40H,ALMOV AL,AHOUT 40H,ALMOV AL,0
14、1110101B ;T/C1 控制字 OUT 43H,AL MOV AX,1000H ;T/C1初值OUT 41H,ALMOV AL,AHOUT 41H,AL图图8-6 8-6 系统连接图系统连接图D7D0WRRDA0A1A3A4A5A6A7CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT28253ABC74LS138Y2G1G2AG2BD7D0IOWIORA1A2A0A8A9【例8-2】系统如图所示,CLK0的时钟频率是8KHz,编程使其产生周期为9s,占空比为5:9的方波,并计算T/C0最大定时时间。TCLK0=1/fCLK0=1/8000=0.125ms最
15、大定时时间:最大定时时间:655360.25ms 8.192sMOV AL,00110111B ;T/C0 控制字 OUT 96H,ALMOV AX,8000H ;T/C0 初值OUT 90H,ALMOV AL,AHOUT 90H,ALMOV AL,01110111B ;T/C1 控制字OUT 96H,ALMOV AX,9H ;T/C1初值OUT 92H,ALMOV AL,AHOUT 92H,AL初始化程序如下:初始化程序如下:第三节第三节 可编程并行接口芯片可编程并行接口芯片Intel 8255AIntel 8255A从从数数据据传传输输的的形形式式上上区区分分,通通信信有有两两种种方方式式
16、:并并行通信与串行通信。行通信与串行通信。并行通信并行通信:n:n位二进制数通过位二进制数通过n n条数据线同时传输。条数据线同时传输。优优点点:传传输输速速度度快快、效效率率高高。常常用用于于数数据据传传输输速速度度要求高而传输距离较短的场合。要求高而传输距离较短的场合。Intel Intel 8255A8255A即即IntelIntel公公司司生生产产的的8 8位位可可编编程程并并行行接接口芯片。口芯片。Intel 8255A 的内部结构图8-78255A内部结构框图三个三个8 8位并行输入输出端位并行输入输出端口:口:8255A(8255A(端口端口A A、端口、端口B B、端口端口C)
17、C)有有A A、B B、CC三个三个8 8位位并行输入输出端口。并行输入输出端口。A A口、口、B B口通常作为独立的口通常作为独立的8 8位位I/OI/O端口使用,端口使用,CC口也可以作为口也可以作为一般的一般的8 8位位I/OI/O端口使用,也端口使用,也可以做为可以做为2 2个个4 4位的位的I/OI/O端口端口使用使用 。各端口的功能见各端口的功能见表表7-47-4。数据总线缓数据总线缓冲器是一个冲器是一个双向三态的双向三态的8 8位缓冲器位缓冲器A A组和组和B B组控制电路接受读组控制电路接受读/写控写控制逻辑的信号并根据制逻辑的信号并根据CPUCPU送入的送入的控制字,决定各端
18、口的工作方式。控制字,决定各端口的工作方式。A A组控制电路控制组控制电路控制A A口和口和CC口的高口的高4 4位位(PC(PC7 7PCPC4 4);B B组控制电路控组控制电路控制制B B口和口和CC口的低口的低4 4位位(PC(PC3 3PCPC0 0)。读读/写控制逻辑用于管写控制逻辑用于管理数据、控制字或状态理数据、控制字或状态字通过相应端口在字通过相应端口在CPUCPU与外设之间的传送。与外设之间的传送。Intel 8255A的外部引脚Intel 8255AIntel 8255A芯片采用芯片采用4040脚双列直插式封装,单一脚双列直插式封装,单一5V5V电源,全部输入电源,全部输
19、入/输出均与输出均与TTLTTL电平兼容。电平兼容。1.1.与外设相连的数据线与外设相连的数据线2.2.读写控制线读写控制线3.3.与系统相连的数据总线与系统相连的数据总线CSCS:片选信号:片选信号RDRD:读信号:读信号WRWR:写信号:写信号RESETRESET:复位信号:复位信号A1A1、A0A0:地址线,与系统总线的低两位相:地址线,与系统总线的低两位相接,实现对接,实现对Intel 8255AIntel 8255A片内端口的寻址;片内端口的寻址;Intel 8255AIntel 8255A控制字及工作方式控制字及工作方式Intel 8255AIntel 8255A的控制端口可以接收
20、两个控制字:工作的控制端口可以接收两个控制字:工作方式控制字和对端口方式控制字和对端口CC的置位的置位/复位控制字。复位控制字。1.1.工作方式控制字(如工作方式控制字(如图图8-88-8所示)所示)2.2.置位置位/复位控制字(如复位控制字(如图图8-98-9所示)所示)Intel 8255AIntel 8255A具有三种工作方式:具有三种工作方式:方式方式00基本输入输出方式;基本输入输出方式;方式方式11选通输入输出方式;选通输入输出方式;方式方式22双向传送方式。双向传送方式。特点:单向并行传输方式,可以为输出口或输入口;8位A口、8位B口、C口高4位和C口低4为可独立设置成输入或输出
21、方式;各端口输出时具有锁存功能,输入时一般无锁存。Intel 8255AIntel 8255A的工作方式的工作方式0 0 基本输入或输出方式基本输入或输出方式Intel 8255AIntel 8255A的工作方式的工作方式1 1 选通输入或输出方式选通输入或输出方式工作特点;工作特点;uA A口工作于方式口工作于方式1 1输入时(如输入时(如图图8-108-10所示)所示)uA A口工作于方式口工作于方式1 1输出时(如输出时(如图图8-118-11所示)所示)方式方式1 1使用方法:使用方法:u中断方式中断方式u查询方式查询方式图图8-12 8-12 方式方式2 2工作时的信号定义工作时的信
22、号定义INTE1(PC6)INTE2(PC4)PC4PC5PC6PC7PC3PA0PA7&1OBFA(输出缓冲器)ACKA(应答)STBA(请求输入数据)IBFA(输入缓冲器满)INTRAIntel 8255AIntel 8255A的工作方式的工作方式2 2 双向输入输出方式双向输入输出方式各端口工作方式为:各端口工作方式为:A A口为输出,方式口为输出,方式0 0;B B口未用;口未用;CC口低位输入,高位输出。口低位输入,高位输出。地址分配:地址分配:A口:口:00D0HB口:口:00D2HC口:口:00D4H控制口:控制口:00D6H【例【例8-48-4】Intel 8255AIntel
23、 8255A作为连接打印机的接口,作为连接打印机的接口,工作于方式工作于方式0 0。系统连接如图。系统连接如图8-138-13所示。所示。程序如下:程序如下:pp:MOV AL,81HOUT0D6H,AL ;设置;设置8255工作方式工作方式LPST:INAL,0D4H;读;读PC2即即BusyANDAL,04H;判断;判断PC2=0?否,则循环等待?否,则循环等待JNZLPSTMOV AL,CL;将被打印字符送;将被打印字符送ALOUT0D0H,AL;将;将AL从从A口输出口输出【例【例8-58-5】用】用8255A8255A作为打印机接口,编制程序实现作为打印机接口,编制程序实现打印打印6
24、 6个字符个字符“HELLO”“HELLO”。(。(CPUCPU为为80888088最小工作最小工作模式,口地址为模式,口地址为0C0H0C7H)0C0H0C7H)。图图8-148-14Intel 8255AIntel 8255A作为打印机接口作为打印机接口D7D0IORIOWA1A2RESETIRQA3A4A5A6A7D7D0WRRDA0A1RESETPC3CSABCG2AG2BG1&Y0PA7PA0D0D7PC0PC7PC6STBACKBUSY8255A打印机0C0H0C7H准备工作:1)设置中断向量表;2)允许8255A中断;3)允许CPU响应中断。参考程序:DA SEGMENTDATA
25、 DB HELLO!DA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DA;主程序;8255初始化:MA:MOV AL,10100000B OUT 0C6H,AL MOV AL,00000001B OUT 0C6H,AL;设置中断向量表,并开;设置中断向量表,并开8255A8255A中断中断XOR AX,AXMOV DS,AXMOV AX,OFFSET INTPRGMOV WORD PTR2CH,AXMOV AX,SEG INTPRGMOV WORD PTR2EH,AXMOV AL,00001101BOUT 0C6H,AL;设置数据缓冲区指针及计数器;设置数据缓冲区指
26、针及计数器MOV AX,SEG DATAMOV DS,AXMOV DI,OFFSET DATAMOV CX,6Intel 8255A的工作方式方式1应用举例;对中断控制器初始化对中断控制器初始化 .;如果数据没打印完,开如果数据没打印完,开CPU中中断,并等待中断到来,否则转断,并等待中断到来,否则转入入STOP0HH:CMP CX,0 JZ STOP0 STI JMP HH;禁止;禁止8255A发出中断请求,并发出中断请求,并退出系统退出系统STOP0:MOV AL,00001100B OUT 0C6H,AL MOV AH,4CH INT 21H;中断服务程序:;中断服务程序:INTPRG
27、PROC MOV AL,DI OUT 0C0H,AL MOV AL,00000000B OUT 0C6H,AL INC AL OUT 0C6H,AL INC DI DEC CX IRETINTPRG ENDPCODE ENDS END MA1.1.串行通信的两种通信方式串行通信的两种通信方式(1 1)异步通信方式)异步通信方式在进行异步传送时,收、发双方约定,以一个起始位表示在进行异步传送时,收、发双方约定,以一个起始位表示传输字符的开始,用停止位表示传输字符的结束,其格式传输字符的开始,用停止位表示传输字符的结束,其格式如如图图8-158-15所示。所示。(2 2)同步通信方式)同步通信方式
28、同步方式通信时,要求发送方和接收方以同一频率的时钟同步方式通信时,要求发送方和接收方以同一频率的时钟信号采样通信线上的数据信号,所以要求发送方一方面要信号采样通信线上的数据信号,所以要求发送方一方面要发送数据信号,同时还要发送一个用于同步的时钟信号。发送数据信号,同时还要发送一个用于同步的时钟信号。图图8-168-16显示了同步传输的数据格式。显示了同步传输的数据格式。第四节可编程串行输入输出接口8250串行通信基本概念2.2.串行通信中的数据传送方式,如串行通信中的数据传送方式,如图图8-178-17所示。所示。3.3.串行通信的通信速率串行通信的通信速率1)1)传输率传输率定义:每秒钟传送
29、二进制数的位数,以位秒定义:每秒钟传送二进制数的位数,以位秒(bps)(bps)为单位。为单位。2)2)波特率波特率定义:信号每秒改变的次数。定义:信号每秒改变的次数。波特率表示通信线路状态的变化率,是衡量传输通道频宽的波特率表示通信线路状态的变化率,是衡量传输通道频宽的指标。指标。串行通信接口图8-25可编程串行接口的典型结构数据总线数据总线收发器收发器控制信控制信号逻辑号逻辑控制寄存器控制寄存器状态寄状态寄存器存器输入、输输入、输出移位寄出移位寄存器存器数据输数据输入寄存入寄存器器数据输出寄数据输出寄存器存器可编程串行通信接口可编程串行通信接口Ins 8250Ins 82502.Ins 8
30、2502.Ins 8250的外部引脚的外部引脚与系统总与系统总线连接的线连接的引脚引脚一般接系统复位信号一般接系统复位信号RESETRESET,用以复位芯,用以复位芯片内部寄存器及有关片内部寄存器及有关信号,见信号,见表表8-68-6。与外部通信设备相连的引脚与外设调制解调器相连的引脚可编程串行通信接口可编程串行通信接口Ins 8250Ins 82501.82501.8250的内部结构的内部结构:u 数据总线缓冲器数据总线缓冲器u 寻址及控制逻辑寻址及控制逻辑u 发送器发送器u 接收器接收器u 调制调制/解调器控制电路解调器控制电路u 通信线控制寄存器和通信线状态寄存器通信线控制寄存器和通信线
31、状态寄存器u 波特率发生控制电路波特率发生控制电路u 中断控制逻辑中断控制逻辑8250的内部寄存器82508250内部共有内部共有1010个可寻址的个可寻址的8 8位寄存器,在片选有效位寄存器,在片选有效时,由地址线时,由地址线A A0 0A A2 2和读和读/写控制信号选择要访问的寄写控制信号选择要访问的寄存器。存器。特征位处于线路控制寄存器的最高位即特征位处于线路控制寄存器的最高位即DLABDLAB位,当位,当DLAB=1DLAB=1时,寻址两个除数寄存器。当时,寻址两个除数寄存器。当DLAB=0DLAB=0时,寻时,寻址发送寄存器(写操作时)址发送寄存器(写操作时)/接收寄存器(读操作时
32、)接收寄存器(读操作时)和中断允许寄存器。和中断允许寄存器。第一组第一组 实现数据传输实现数据传输1.发送保持寄存器发送保持寄存器2.接收缓冲寄存器接收缓冲寄存器第二组第二组 用于工作方式、通信参数设置用于工作方式、通信参数设置1.通信线控制寄存器通信线控制寄存器2.除数寄存器除数寄存器3.MODEM控制寄存器控制寄存器4.中断允许寄存器中断允许寄存器第三组第三组 状态寄存器状态寄存器1.通信线状态寄存器通信线状态寄存器2.MODEM状态寄存器状态寄存器3.中断识别寄存器中断识别寄存器8250的内部寄存器8250的初始化编程在利用在利用82508250进行数据通信前,要对进行数据通信前,要对8
33、2508250进行进行初始化编程。具体步骤如下:初始化编程。具体步骤如下:1.1.对线路控制寄存器编程,使对线路控制寄存器编程,使DLAB=1DLAB=1。2.2.通过设置除数寄存器,确定通信速率。通过设置除数寄存器,确定通信速率。3.3.设置通信线控制寄存器,使设置通信线控制寄存器,使DLAB=0DLAB=0,确定,确定通信的数据格式。通信的数据格式。4.4.若使用中断通信方式设置中断允许寄存器。若使用中断通信方式设置中断允许寄存器。5.5.根据实际需要,确定根据实际需要,确定MODEMMODEM控制寄存器。控制寄存器。8250的初始化编程【例【例8-58-5】82508250端口地址为端口
34、地址为3F8H3F8H3FFH3FFH,若要求,若要求82508250以以19200bit/s19200bit/s进行异步通信,每字符为一位,二个停止位,进行异步通信,每字符为一位,二个停止位,采用奇校验,允许所有中断,则初始化程序为:采用奇校验,允许所有中断,则初始化程序为:;初始化编程;初始化编程;设置波特率为;设置波特率为19200MOVDX,03FBH;8250控制寄存器地址送控制寄存器地址送DXMOVAL,80H;置;置DLAB=1,设置除数寄存器,设置除数寄存器OUTDX,ALMOVAX,0006H;波特率为;波特率为19200bpsMOVDX,03F8H;除数寄存器地址送;除数寄
35、存器地址送DXOUTDX,AL;送除数低;送除数低8位位MOVAL,AHINC DXOUTDX,AL;送除数高;送除数高8位位8250的初始化编程;设置通信的数据格式;设置通信的数据格式MOVAL,0EH;7位数据位,奇校验,位数据位,奇校验,2位停止位位停止位MOVDX,03FBH;8250控制寄存器地址送控制寄存器地址送DXOUTDX,AL;设置中断允许控制字,;设置中断允许控制字,MOVAL,0FHMOVDX,03F9H;中断允许寄存器地址送;中断允许寄存器地址送DXOUTDX,AL;设置;设置MODEM控制字控制字MOVAL,0BH;OUT2引脚为低电平,工作于中断方式,引脚为低电平,
36、工作于中断方式,;DTR和和RTS引脚有效引脚有效MOVDX,03FCHOUTDX,AL8250的应用在利用在利用82508250进行串行通信时,可以采用查询和中断两种数据进行串行通信时,可以采用查询和中断两种数据传送方式。传送方式。【例【例8-68-6】编制接收键盘字符并回显的程序。要求用户没有】编制接收键盘字符并回显的程序。要求用户没有输入字符就不发送,若有字符输入则发送数据,接收后就输入字符就不发送,若有字符输入则发送数据,接收后就显示字符。要求程序循环读取显示字符。要求程序循环读取82508250的通信状态寄存器,数的通信状态寄存器,数据传输错误就显示一个问号据传输错误就显示一个问号“
37、?”。如果按下。如果按下ESCESC键返回键返回DOSDOS,程序如下:,程序如下:8250的应用;查询通信线状态;查询通信线状态STATUE:MOV DX,2FDH ;读通信线路状态寄存器;读通信线路状态寄存器INAL,DXTESTAL,1EH ;接收有错误否;接收有错误否?JNZERROR;有错,则转错误处理;有错,则转错误处理TESTAL,01H ;接收到数据吗;接收到数据吗?JNZRECEIVE ;是,转接收处理;是,转接收处理TESTAL,20H ;保持寄存器空吗;保持寄存器空吗?JZ STATUE;不空,循环查询;不空,循环查询;检测键盘输入;检测键盘输入MOVAH,0BH;检测键
38、盘有无输入字符;检测键盘有无输入字符INT21HCMPAL,0JZ STATUE;无输入字符,循环等待;无输入字符,循环等待MOVAH,01H;有输入字符,读取字符;有输入字符,读取字符INT16H;采用;采用01号号DOS功能调用,则有回显功能调用,则有回显CMPAL,1BHJZDONE;是;是ESC键,程序返回键,程序返回DOS8250的应用;发送数据;发送数据MOVDX,2F8H;将字符输出给发送保持寄存器;将字符输出给发送保持寄存器OUTDX,AL;串行发送数据;串行发送数据JMPSTATUE;继续查询;继续查询;接收数据;接收数据RECEIVE:MOV DX,2F8H;从输入缓冲寄存
39、器读取字符;从输入缓冲寄存器读取字符INAL,DXANDAL,7FH;传送标准;传送标准ASCII码(码(7个数据位),个数据位),;所以仅取低;所以仅取低7位位PUSHAX;保存数据;保存数据;显示数据;显示数据MOVDL,AL;屏幕显示该数据;屏幕显示该数据MOVAH,2INT21HPOPAX;恢复数据;恢复数据CMPAL,0DH;数据是回车符吗;数据是回车符吗?JNZSTATUE;不是,则循;不是,则循环环MOVDL,0AH;是,再进行换行;是,再进行换行MOVAH,2INT21HJMPSTATUE;继续查询;继续查询8250的应用;接收错误处理;接收错误处理ERROR:MOVDX,2F
40、8H;读出接收有误的数据,丢掉;读出接收有误的数据,丢掉INAL,DXMOVDL,?;显示问号;显示问号MOVAH,2INT21HJMPSTATUE;继续查询;继续查询DONE:END;查询式通信;查询式通信;发送字符在;发送字符在CL中。若收到字中。若收到字符,暂存于符,暂存于ALKEEP_TRY:MOV DX,3FDH IN AL,DX TEST AL,1EH;检查出错误否;检查出错误否 JNE ERROR_ROUTINE;转出错处理;转出错处理 TEST AL,1;检查收到新数否;检查收到新数否JNZ RECEIVE;转接收;转接收TEST AL,20H;检测可否发送字节;检测可否发送字
41、节JZKEEP_TRY;重新检查;重新检查MOVDX,3F8HMOVAL,CLOUT DX,ALJMP SHORT KEEP_TRY8253各计数器的内部结构图图8-2b8-2b返回82538253控制字格式控制字格式图8-48253控制字格式返回8255A8255A端口功能端口功能表8-48255A端口功能返回Intel 8255AIntel 8255A工作方式控制字工作方式控制字图图8-88-8Intel 8255AIntel 8255A工作方式控制字格式工作方式控制字格式返回Intel 8255AIntel 8255A置位置位/复位控制字复位控制字图8-9置位/复位控制字格式返回Inte
42、l 8255A Intel 8255A 方式方式1 1输入的信号输入的信号图8-10方式1输入的信号返回Intel 8255A Intel 8255A 方式方式1 1输出的信号输出的信号图8-11方式1输出的信号返回 Intel 8255AIntel 8255A双机通信连接图双机通信连接图图8-16双机通信连接图返回 Intel 8255A主发、从收时序图图8-17主发、从收时序图返回主机定时中断子程序流程图主机定时中断子程序流程图图8-18主机定时中断子程序流程图返回图8-19主机接收、发送子程序流程图返回并行通信和串行通信图8-20并行通信和串行通信返回异步通信数据帧格式图8-15异步通信
43、数据帧格式返回起始位起始位数据位奇偶校验位奇偶校验位停止位同步传送的数据格式图8-16同步传送的数据格式返回串行通信的四种方式图8-17串行通信的4 种方式返回串行通信对信号的调制和解调图8-24串行通信使用MODEM对信号进行调制和解调返回Ins 8250Ins 8250内部寄存器复位后状态内部寄存器复位后状态表表8-68-6Ins 8250Ins 8250内部寄存器复位后状态内部寄存器复位后状态返回通信线控制寄存器图图8-298-29通信线控制寄存器通信线控制寄存器返回MODEM控制寄存器图图8-308-30MODEMMODEM控制寄存器控制寄存器返回中断允许寄存器图图8-318-31中断允许寄存器中断允许寄存器返回波特率与除数的关系表表8-88-8波特率与除数的关系波特率与除数的关系返回通信线状态寄存器图图8-328-32通信线状态寄存器通信线状态寄存器返回MODEM状态寄存器图图8-338-33MODEMMODEM状态寄存器状态寄存器返回中断识别寄存器图图8-348-34中断识别寄存器中断识别寄存器返回输入设备输入设备打印设备打印设备PB0-PB7PB0-PB7PC7PC7PC1PC1PC2PC2PC6PC6PA0-PA7PA0-PA7图图8-13 8-13 打印机连接示意图打印机连接示意图返回
限制150内