微机原理教学PPT 常用输入输出接口电路教学PPT.ppt_第1页
微机原理教学PPT 常用输入输出接口电路教学PPT.ppt_第2页
微机原理教学PPT 常用输入输出接口电路教学PPT.ppt_第3页
微机原理教学PPT 常用输入输出接口电路教学PPT.ppt_第4页
微机原理教学PPT 常用输入输出接口电路教学PPT.ppt_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术,第8章 常用输入/输出接口电路,胡飞虎 电气工程学院工业自动化系117室 email: 课程网站地址:,一、并行通信概述,计算机为什么需要i/o接口电路? (1)外部设备种类繁多,有机械式,有机电式,还有电子式的。不同外部设备之间性能各异,对数据传送的要求也各不相同的,无法按统一格式进行。 (2)外部设备的数据信号是多种多样的。 (3)外设的数据传送有近距离的,也有远距离的。 (4)外部设备的工作速度快慢差异很大。 无法实现外部设备与cpu进行直接的同步数据传送,而必须在cpu和外设之间扩展接口电路,通过接口电路对cpu与外设之间的数据传送进行协调。因此接口电路就成了数据i/o操作的核心内容。,一、并行通信概述,接口电路主要有如下几项功能: (1)速度协调 由于速度差异,数据的i/o传送只能以异步方式进行,即只能在确认外设已为数据传送作好准备的前提下才能进行i/o操作。而要知道外设是否准备好,就需要通过接口电路产生或传送外设的状态,以此进行cpu与外设之间的速度协调。 (2)数据锁存 接口电路中需设置锁存器,以保存输出数据直至为输出设备所接收。因此数据锁存就成为接口电路的一项重要功能。 (3)数据转换 需要使用接口电路进行数据信号的转换。其中包括:模/数转换、数/模转换、串/并转换和并/串转换。,一、并行通信概述,(4)三态缓冲 只允许当前时刻正在进行数据传送的数据源使用数据总线,其它数据源都必须与数据总线处于隔离状态。为此要求接口电路能为数据输入提供三态缓冲功能。,接口与端口 接口则特指计算机与外设之间在数据传送方面的联系。其功能主要是通过电路实现的。因此称之为接口电路。 一个接口电路中可能包括有多个端口,例如保存数据的数据端口、保存状态的状态端口和保存命令的命令端口等,因此一个接口电路就对应着多个端口地址。,一、并行通信概述,数据口(输入/输出):双向 状态口:只能由cpu读入。 控制口:只能由cpu写出。 每个口由译码电路分配一个唯一的地址。,外设经接口与总线相连,其连接必须遵循:输入要三态,输出要锁存,一、并行通信概述,(1)数据口 用于完成输入与输出数据。 接口使用的数据有: (a)数字量 如键盘等的二进制表示的数或ascii码表示的数和字符。 (b)模拟量 要经过adc和dac转换为数字量或模拟量。 (c)开关量 以一位二进制表示的量。 (2)控制口 控制口为一个输出接口,用于控制外设的启(start)、停止(stop)或数据的选通(stb)等。 (3)状态口 cpu通过这个端口了解外设状态。输入外设是否准备好(ready),转换是否结束(eoc);输出装置是否忙(busy)。,一、并行通信概述,1 数据通信的并行与串行: “通信”泛指计算机与接口电路之间的信息沟通与数据交换。 在通信中,若数据按n个位(常用8位或16位)同时传送信息,则称之为并行通信。能实现并行通信的接口电路,就称之为并行i/o接口电路。 如所传送数据是按逐位发送或接收的,则称为串行通信。实现串行通信的接口电路称为串行i/o接口电路。 在同样的工作节拍下,并行通信的数据传送率要比串行通信的高,但并行传送仅适合于近距离快速数据通信的场合。,一、并行通信概述,一、并行通信概述,2 可编程的接口电路:,一、并行通信概述,(1)数据缓冲寄存器 分为输入和输出缓冲寄存器两种。前者的作用是将外设送来的数据暂时存放,以便处理器将它取走;后者的作用是用来暂时存放处理器送往外设的数据。有了数据缓存器,就可以在高速工作的cpu与慢速工作的外设之间起协调、缓冲作用,实现数据传送的同步。 (2)控制寄存器 用于存放处理器发来的控制命令和其它信息,以确定接口电路的工作方式和功能。控制寄存器是写寄存器,其内容只能由处理器写入,不能读出。,一、并行通信概述,(3)状态寄存器 用于保存外设现行各种状态信息。它的内容可以被处理器读出,从而使处理器了解外设状况。特别当cpu以程序查询方式同外设交换数据时,状态寄存器更是必不可少的。cpu通过查询外设的忙/闲、就绪/不就绪等状态,才能正确地与之交换信息。 以上三种寄存器是接口电路中的核心部分。通常所说的端口,大都指这些寄存器。 (4)数据总线缓冲器 用于实现接口芯片内部总线和cpu系统总线的连接。该缓冲器是双向的,实现数据的输入/输出或命令的输出及状态的读入。,一、并行通信概述,(5)地址总线缓冲与译码 锁存来自地址总线的地址信号,并通过译码寻址各端口。 (6)内部控制逻辑 用于产生一些接口电路内部的控制信号,实现系统控制总线与内部控制信号之间的变换。 (7)对外联络控制逻辑 用于产生/接收cpu和外设之间数据传送的同步信号。这些联络握手信号包括微处理器一边的中断请求和响应,总线请求和响应,以及外设一边的准备就绪和选通等控制与应答信号。,二、可编程并行接口电路8255,二、可编程并行接口电路8255,(1)数据端口 8255a共有三个8位口,其中a口和b口是单纯的数据口,供数据i/o使用。而c口则既可以作数据口,又可以作控制口使用,用于实现a口和b口的控制功能。 数据传送中a口所需的控制信号由c口高位部分(pc7pc4)提供,因此把a口和c口高位部分合在一起称之为a组;同样理由把b口和c口低位部分(pc3pc0)合在一起称之为b组。,二、可编程并行接口电路8255,(2)总线接口电路 (a)数据总线缓冲器 数据总线缓冲器为8位双向三态缓冲器,可直接和cpu的数据线相连,与i/o操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。 (b)读/写控制逻辑 cs片选信号(低电平有效) rd读信号(低电平有效) wr写信号(低电平有效) a0、a1端口选择信号。8255a共有四个可寻址的端口(即a口、b口、c口和控制寄存器),二、可编程并行接口电路8255,8255a端口选择及工作状态,(c)控制逻辑电路 控制逻辑电路包括a组控制和b组控制,合在一起构成8位控制寄存器。用于存放各口的工作方式控制字。,二、可编程并行接口电路8255,8255a的控制寄存器及其工作方式 (1)控制字寄存器 8255a的控制字有:工作方式控制字和c口置位/复位控制字两种。 1)工作方式控制字 其中d0d2控制b组,d0、d1分别确定端口c的低4位及端口b的输入输出方向,d2确定端口b的工作方式,可以选择端口b为方式0或方式1。 d3d6控制a组,d3、d4用来设置端口c的高四位及端口a的输入输出方向,d5、d6用来选择a口的工作方式为三种工作方式之一。 最高位d7是工作方式控制字标志,必须是1。,二、可编程并行接口电路8255,8255的方式字(写入 a1、a0 = 11),d0,d1,d2,d3,d4,d5,d6,d7,pc3 pc0 1:输入 0:输出,b口 1:输入 0:输出,b组工作方式 0:方式0 1:方式1,pc7 pc4 1:输入 0:输出,a口 1:输入 0:输出,a组工作方式 00:方式0 01:方式1 1:方式2,d7 = 1 特征位,b组,a组,二、可编程并行接口电路8255,2) c口置位/复位控制字,(写入 a1a0 = 11),d0,d1,d2,d3,d4,d5,d6,d7,1:置位 0:复位,c口选择,000:pc0 001:pc1 010:pc2 011:pc3 100:pc4 101:pc5 110:pc6 111:pc7,任选(可1可0),d7 = 0 (特征位),方式0:基本 i/o 方式 (查询时,任选c口做连络信号) 方式1:选通i/o 方式(可查询或中断,固定c口做连络信号) 方式2:双向i/o方式(只用于a口,pc3 pc7做连络信号),二、可编程并行接口电路8255,(2)8255的工作方式 a)方式0 基本的输入输出工作方式 a口、b口及c口高低4位均可工作在方式0,而且a口、b口、c口高/低四位是相互独立的,可以分别由程序设定为输入或输出。因此,可以有24=16种输入/输出组合。 端口作为输出口时,输出数据与端口的引脚是直通的。用方式0可以实现cpu与外设接口的无条件数据传送。,二、可编程并行接口电路8255,(b)方式1 选通输入/输出方式 a口和b口分别用于数据的输入/输出。而c口则作为数据传送的联络信号。a口和b口的联络信号都是三个,如果a或b只有一个口按方式1使用,则剩下的另外13位口线仍然可按方式0使用。如果两个口都按方式1使用,则还剩下2位口线,这两位口线仍然可以进行位状态的输入输出。 方式1适用于查询或中断方式的数据i/o。,二、可编程并行接口电路8255,pa7pa0,pc4,pc5,pc3,intea pc4,与门,ibfa,rd,d7d0,a口方式1输入与b口方式1输入时相应的联络信号,pb7pb0,pc2,pc1,pc0,inteb pc2,与门,rd,d7d0,ibfb,stbb,intrb,外设,外设,二、可编程并行接口电路8255,二、可编程并行接口电路8255,方式1下输出端口的联络信号,ack acknowledge, obf output buffer full 响应信号,低电平有效 输出缓冲器满,高电平有效,二、可编程并行接口电路8255,(c)方式2 双向数据传送方式 只有a口才能选择这种工作方式,这时a口既能输入数据又能输出数据。在这种方式下需使用c口的五位线作控制线。方式2适用于查询或中断方式的双向数据传送。 如果把a口置于方式2下,b口可以工作在方式0或方式1。若b口工作在方式1,pc02仍为该口的联络线。,二、可编程并行接口电路8255,二、可编程并行接口电路8255,d)8255a状态字由端口c读出,可以通过读端口c得到相关的状态信息,供程序查询。,i/o,intea,ibfa,intrb,ibfb,inteb,intra,i/o,a)a口、b口方式1输入:,d7 d6 d5 d4 d3 d2 d1 d0,b)a口、b口方式1输出:,i/o,intea,obfa,intrb,obfb,inteb,intra,i/o,d7 d6 d5 d4 d3 d2 d1 d0,c)a口方式2:,x,inte出,obfa,intra,x,x,inte入,ibfa,d7 d6 d5 d4 d3 d2 d1 d0,a组 b组,a组 b组,二、可编程并行接口电路8255,例1:对8255a各口作如下设置:a口方式0,b口方式0,从a口输入从b口、c口输出。(8255a c口的地址为63h) 工作方式控制字10010000,即90h。初始化程序段为: mov al,#90h ;设b口、 c口输出, a口输入 ; a口、b口为方式0 out 63h,al in al,60h;从a口输入 out 61h,al ;从b口输出 out 62h,al ;从c口输出,二、可编程并行接口电路8255,例2:把c口的第六位pc5置为1。 mov al,#00001011 ;pc5置位 out 63h,al,例3:设控制寄存器地址为ppi_cs mov al,00001110b out ppi_cs,al; pc7=0 mov al,00001111b out ppi_cs,al ; pc7=1 mov al,00001110b out ppi_cs,al ; pc7=0 执行上述程序后,在8255a的pc7输出一个窄脉冲。,例4,(1)a口:方式0,输出;b口:方式0,输入,8255a各端口地址:a口320h;b口321h ;c口322h ;控制寄存器323h,a9 a8 a7 a6 a5 a4 a3 a2 a1 a0 1 1 0 0 1 0 0 0 x x,工作方式控制字:1000 0010b,二、可编程并行接口电路8255,初始化及应用程序片段:, mov dx,323h ;初始化 mov al,10000010b out dx,al sub dx,2 ;dx=321h,指向b口 in al,dx not al ;各位取反,闭合时为0,点亮led应为1 dec dx ;dx320h,指向a口 out dx,al ,三、可编程计数器/定时器8253,定时控制在微机系统中具有极为重要的作用,计数是许多过程控制领域常用的功能 定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔 计数电路如果记录外设提供的脉冲信号时,它主要反映脉冲的个数,又称为计数器,定时功能的实现方法: (1)软件延时:利用微处理器执行一个延时程序段实现,不用硬件,但占用cpu时间、定时精度不高,随系统时钟频率改变 (2)不可编程的硬件定时:功能简单、定时时间在一定范围改变。 (3)可编程的硬件定时:软硬件结合、用可编程芯片构成一个方便灵活的定时电路,具有多种工作方式、能输出多种控制信号。,三、可编程计数器/定时器8253,8253/8254定时计数器,3个独立的16位计数器通道 每个计数器有6种工作方式 按二进制或bcd码计数 每个计数器占用一个端口地址,三个控制寄存器共用一个端口地址。,三、可编程计数器/定时器8253,(1)clk时钟输入信号: 此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1 (2) gate门控输入信号: 控制计数器工作,可分成电平控制和上升沿控制两种类型 (3) out计数器输出信号: 当一次计数过程结束(计数值减为0),此引脚产生一个输出信号,计数初值存于计数器寄存器; 在计数过程中,减法计数器的值不断递减,而cr中的计数初值不变。 输出锁存器用于写入锁存命令时,锁定当前计数值,三、可编程计数器/定时器8253,三、可编程计数器/定时器8253,8253的编程 (1)8253加电后的工作方式不确定 (2)8253必须初始化编程,才能正常工作 写入控制字 控制字写入控制字i/o端口地址(a1a011) 写入计数初值 计数值写入计数器各自的i/o端口地址 读取计数值,三、可编程计数器/定时器8253,8253的控制字格式,sc1,sc0,rw1,rw0,m2,m1,m0,bcd,计数器 读写操作 工作方式选择 十/二进制,d7 d6 d5 d4 d3 d2 d1 d0,选择 控制 选择,0 0 选0计数器 0 1 选1计数器 1 0 选2计数器 1 1 非法,0 0 将计数器中的数据锁存到缓冲器 0 1 选计数器的低8位字节 1 0 选计数器的高8位字节 1 1 计数器两次操作(先低8位、后高8位),000 方式0 001 方式1 010 方式2 011 方式3 100 方式4 101 方式5,0 选择二进制计数 1 选择十进制计数,三、可编程计数器/定时器8253,写入计数值 (a)选择二进制 计数值范围:0000hffffh 0000h是最大值,代表65536 (b)选择十进制(bcd码) 计数值范围:00009999 0000代表最大值10000,三、可编程计数器/定时器8253,读取计数值 (1)对8位数据线,读取16位计数值需分两次 (2)计数在不断进行,应该将当前计数值先行锁存,然后读取: 向控制字i/o地址:给8253写入锁存命令 从计数器i/o地址:读取锁存的计数值,三、可编程计数器/定时器8253,例:,mov al, 0011 0111b ; 对0计数器送控制字 out 43h,al ;采用工作方式3,按十进制计数 mov ax,1234h ;16位计数值,相当于对clk脉冲的分频系数 out 40h,al ;先送低8位计数值 mov al,ah out 40h,al ;再送高8位计数值 mov al,1001 0100b ;对2计数器送控制字 out 43h,al ;采用工作方式2 mov al,61h ;仅送8位计数值 out 42h,al,已知: 0计数器地址:40h 0计数器地址:41h 0计数器地址:42h 控制寄存器地址:43h,三、可编程计数器/定时器8253,读某个计数器的当前计数值至cpu,d7,sc1,x,x,x,x,0,0,d6,d5,d4,d3,d2,d1,d0,sc0,选择 计数器,锁存命令,无意义,也不影响原设置,例: count equ 040h ;设0计数器的地址为40h lpcn: mov al,1000 0100b ;对2计数器送锁存命令 out count+3,al in al,count+2 ;先读低8位 mov ah,al in al, count+2 ;再读高8位 xchg ah,al cmp ax,55aah ;比较确定是否等待 jnz lpcn,三、可编程计数器/定时器8253,8253的工作方式:,d7,d6,d4,d3,d0,d1,d2,d5,bcd,m2 m1 m0,rl1 rl0,计数器 读写操作 工作方式选择 十/二 选择 控制 (000 101) 进制选择,1)方式0 计数结束产生中断 2)方式1 可编程的单次脉冲 3)方式2 分频方式 4)方式3 方波发生器 5)方式4 软件触发的选通方式 6)方式5 硬件触发的选通方式,sc1 sc0,方式0计数结束产生中断 当cpu发出控制字并将计数初值送完后,计数器即开始工作,输出信号out变为低电平。当ce计数器减到零,out立即输出高电平。用户可利用此上升沿向cpu申请中断。 可用gate控制计数过程。高电平允许计数;低电平停止计数,计数值保持不变。当gate恢复高电平,可继续进行计数。 在计数器工作期间,如又重复写入计数初值,则计数器将按新装入的初值重新工作。 方式0计数周期只有一次,当ce减到零,则自动停止计数。,方式1程序可控单稳态工作方式 控制字设定后out变为高电平,写入计数初值后并不立即开始计数,由gate启动计数。gate信号上升沿出现后的下一个时钟周期的下降沿out变低电平,开始减1计数。计数到0时out恢复成高电平。 out输出负脉冲的宽度为计数初值所规定的clk脉冲周期数的宽度。方式1计数周期仅一次。当再给一个启动gate则又重新开始新一轮计数。计数器工作期间如gate信号上升沿出现,计数器会重装计数初值并重新开始计数。 如计数期间写入新的计数初值,要等当前计数值减至零,且gate再次出现上升沿后才将cr中新的初值装入ce,按新的初值开始计数工作。,方式2计数分频工作方式 方式2如同一个n分频计数器,如计数初值为n,则每n个输入脉冲(clk)就输出一个脉冲。方式2反复计数,分频输出。 若gate维持为高电平,写入控制字后out变高电平。写入计数初值后即开始计数。当计数到ce=1时,out端输出宽度为一个时钟周期的负脉冲。然后又自动重装初值,开始下一轮计数。 计数过程中可由gate控制暂停(gate=0)或重启(gate=1)。 当gate为高电平,在计数过程中可写入新的计数初值,对现行计数没有影响。当现行计数结束后,才将新的初值从cr装入ce中,开始新的计数。,方式3方波频率发出器 方式3在计数过程中,out输出方波波形,前一半为高电平、后一半为低电平。然后不断重复。 当gate=1,送入控制字后out变为高电平。置入cr初值后下一个clk下降沿开始计数。当初值n=偶数时,out输出是高、低对称方波;当n=奇数时,out输出为近似方波。 计数过程中可由gate控制暂停或重启计数。若在out高电平期间,gate变低,则暂停计数过程,直到gate变高,计数器又重装初值开始计数。而在out为低电平期间,gate变低,out输出立即变高电平。而当gate变高电平后,计数又重新从初值开始计数。,方式4软件触发选通方式 是一种由cpu写入计数初值即靠程序启动计数的工作方式。 送入控制字后out变为高电平。当写入计数初值后计数器开始计数(即软件启动)。计数到0后停止计数。out输出为低电平,持续一个clk脉冲周期后再恢复成高电平不变。这种方式计数是一次性的。只有当cpu再将计数初值写入cr计数器,才会启动另一次计数过程。 gate为高电平时允许计数;低电平时停止计数。gate恢复成高电平后,从原先初值开始作减1计数。 计数时若写入新的初值,不影响当前计数状态。当计数结束输出一个负脉冲后,计数器按新写入的计数初值开始计数。,方式5硬件触发选通方式 与方式1类似,写入控制字及装入初值后不能启动计数。只有在gate脉冲的上升沿才能触发计数。 写入控制字后out为高电平,写入初值后并不立即计数,仅当gate上升沿出现后启动计数。计数到0后out输出一个时钟周期的低电平后恢复高电平,并停止计数。 当计数中出现gate脉冲,重装初值并重新开始计数。 当计数中写入新的计数初值,只要不出现gate脉冲,对当前计数没有影响。只有当gate脉冲出现后,才能将cr中初值装入ce,开始新的计数。,三、可编程计数器/定时器8253,8253工作方式05的输出波形,由软件触发计数 (送新的计数值) 方式0、方式4 由硬件触发计数 (由gate触发) 方式1、方式5 分频计数器输出(产生序列脉冲) 方式2、方式3,三、可编程计数器/定时器8253,8253gate信号的控制作用与输出波形说明,三、可编程计数器/定时器8253,gate输入信号对每种工作方式的影响,mov dx,0307h;0计数器 mov al,0011 0000b out dx,al mov dx,0304h mov al,0abh out dx,al mov al,23h out dx,al mov dx,0307h;1计数器 mov al,0101 0010b out dx,al mov al,0abh mov dx,0305h out dx,al,例1:8253初始化程序设计。 0计数器地址304h,方式0,二进制计数,计数初值23abh; 1计数器地址305h,方式1,二进制计数,计数初值abh; 2计数器地址306h,方式3,产生40khz,已知clk2时钟频率2mhz,mov dx,0307h;2计数器 mov al,1011 0110b out dx,al mov al,32h ;送初值低8位 mov dx,0306h out dx,al mov al,00h ;送初值高8位 out dx,al,分频系数: 2mhz 40khz,= 5032h,例2:8253在ibm pc/xt中的应用,0#计数器(方式3,预置计数值为0)为电子钟提供时间基准 1#计数器(方式2, 预置计数值为18)用于动态ram刷新定时 2#计数器(方式3,预置计数值533h)用于产生音频磁带和扬声器频率信号,0#计数器 mov al,00110110b;pclk经二分频后,送到clk的脉冲频率为1.1931816mhz out 43h,al ;0计数器,工作方式3(方波发生器) mov al,0 ;0计数器预置计数值0216 out 40h,al ;out0输出脉冲的频率为18.2hz(周期为55ms) out 40h,al,计数器0:定时中断 (1)计数器0:方式3,计数值:65536,输出频率为1.19318mhz6553618.206hz的方波 (2)门控为常启状态,这个方波信号不断产生 (3) out0端接8259a的irq0,用作中断请求信号 (4)每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断 (5) dos系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能,1#计数器 mov al,01010100b;1计数器,工作方式2(分频器) out 43h,al mov al,18 ;预置计数值为18,out1输出脉冲频率为66.2878khz out 41h,al ; (每隔15.12产生一个宽度为840的负脉冲),计数器1:定时刷新,(1)需要重复不断提出刷新请求,门控总为高,选择方式2或3,(2) 2ms内刷新128次,即15.6s刷新一次,计数初值为18,2#计数器 mov al,10110110b;2计数器,工作方式3(方波发生器) out 43h,al mov ax,533h ;预置计数值为533h,out2输出脉冲频率为896hz out 42h,al mov al,ah out 42h,al,计数器2:扬声器控制 (1)计数器2的输出控制扬声器的发声音调 (2)计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声 (3)扬声器还受控于并行接口(8255芯片),(1)写出8255a、8253中各可寻址的i/o端口地址:,地址译码: a7 a6 a5 a4 a3 a2 a1 a0 1 1 1 c b a x x,8255a由y1输出作为片选信号: a7 a6 a5 a4 a3 a2 a1 a0 1 1 1 0 0 1 0 0 a口 pa55 1 1 1 0 0 1 0 1 b口 pb55 1 1 1 0 0 1 1 0 c口 pc55 1 1 1 0 0 1 1 1 控制寄存器 pctrl,8253由y6输出作为片选信号: a7 a6 a5 a4 a3 a2 a1 a0 1 1 1 1 1 0 0 0 0计数器 t/c#0 1 1 1 1 1 0 0 1 1计数器 t/c#1 1 1 1 1 1 0 1 0 2计数器 t/c#2 1 1 1 1 1 0 1 1 控制寄存器 t/cctrl,i/o接口编程题,74ls138,(2)设外部时钟pclk2mhz,若由8253的0#计数器每隔2ms产生一次定时中断,以进行扫描一次键盘。试编写相应的接口初始化程序。 t/c#0 equ 0f8h t/cctrl equ 0fbh mov al,00110100b out t/ccrtl,al mov ax,4000 ;预置计数值2mhz(1/2ms) out t/c#0,al mov al,ah out t/c#0,al,(3)根据上述键盘i/o操作的要求, 8255a的初始化程序: mov al,1000 0010b ;a口、b口方式0,a口输出、b口输入 out pctrl,al ;当端口地址为8位可直接输出,超过8位用dx间接寻址,8255a由y1输出作为片选信号: a7 a6 a5 a4 a3 a2 a1 a0 1 1 1 0 0 1 0 0 a口 pa55 1 1 1 0 0 1 0 1 b口 pb55 1 1 1 0 0 1 1 0 c口 pc55 1 1 1 0 0 1 1 1 控制寄存器 pctrl,8253由y6输出作为片选信号: a7 a6 a5 a4 a3 a2 a1 a0 1 1 1 1 1 0 0 0 0计数器 t/c#0 1 1 1 1 1 0 0 1 1计数器 t/c#1 1 1 1 1 1 0 1 0 2计数器 t/c#2 1 1 1 1 1 0 1 1 控制寄存器 t/cctrl,键扫描子程序scan填空:,scan proc far mov cx,4;预置行扫描计数值 mov bl,0feh;给bl置初值,以扫描第0行 l1: mov al,bl out pa55 ,al ;由8255a的a口输出行值 call delay ;调用延时子程序 in al,pb55 ; 从b口输入数据 and al,0fh ;屏蔽输入数据的高4位 cmp al,0fh ;测试是否有键入 jnz l2 ;有键入,转至l2 rol bl,1 ; bl寄存器的值循环移位 loop l1 jmp done ; 程序若能执行到此处,说明 无 (有/无)键入 l2: call get_key done: ret scan endp,8255a由y1输出作为片选信号: a7 a6 a5 a4 a3 a2 a1 a0 1 1 1 0 0 1 0 0 a口 pa55 1 1 1 0 0 1 0 1 b口 pb55 1 1 1 0 0 1 1 0 c口 pc55 1 1 1 0 0 1 1 1 控制寄存器 pctrl,例:8255a、8253综合应用 某交流调速控制系统由intel 8086 cpu及8255a、8253等i/o接口电路构成,如图8-19所示,其工作过程简述如下:,该系统由电动机、变频调速和反馈控制电路构成。电动机的转速信号由转速传感器转换为电信号,经信号调理电路变换为05 v的电压信号输入a/d转换器(adc)。 8253用作定时控制,每隔0.5秒启动一次a/d转换,采集转速信号,a/d转换结束后由eoc引脚向cpu发出中断请求intr,在中断服务程序中进行调速控制。 中断服务程序完成如下任务,读入a/d转换结果,调用子程序proc_data计算瞬时转速、转差率和调控参数,并据此调节电机转速;如果转差率超过5%,则报警指示灯点亮;如果转差率小于5%,则清除报警信号;若转差率超过10%,则终止电机运行。 运行指示灯(绿色led)由c口pc0位控制,指示系统是否正常运行;报警指示灯(红色led)由c口pc1位控制,指示有无报警提示。系统初始化后,运行指示灯点亮。 c口pc2位输出高电平时,变频调速控制电路启动工作,电动机运行。,mov dx,23h mov al,0011 0110b ;计数器0,工作方式3 out dx,al mov al,1011 0100b ;计数器2,工作方式2 out dx,al mov dx,20h mov ax,1000 ;计数初值为1000 out dx,al xchg ah,al out dx,al mov dx,22h mov ax,1000 ;计数初值为1000 out dx,al xchg ah,al out dx,al,(1)已知时钟信号pclk频率为2mhz,0#计数器采用工作方式3、初始值为1000,2计数器采用工作方式2,8253的端口地址为20h23h,则8253的初始化程序为:,mov dx,83h mov al,1000 0010b out dx,al ;设置工作方式 mov al,0xxx 0000b out dx,al ;置pc0 = 0 mov al,0xxx 0011b out dx,al ;置pc1= 1 mov al,0xxx 0101b out dx,al ;置pc2 = 1,(2)设8255a采用基本i/o工作方式、端口地址为8083h,则8255a的初始化,启动调速控制电路,设置各指示灯的初始状态的程序为:,(3)数据处理子程序proc_data,完成瞬时转速、转差率和调控参数的计算。 设a/d转换结果x与转速n的对应关系为:n = x*30;额定转速ne对应的a/d转换结果为xe,转差率r用百分值表示, r = 100*(x - xe)/xe。 设程序中额定转速用符号常量rated_speed表示,对应的调控参数的基准值用符号常量rated_ctrl表示;调控参数的数值每增加1,预期转速将提高1%; 试编写该子程序代码;具体要求: 子程序的入口参数:al,其内容为a/d转换结果; 出口参数:ah,其内容为转差率(有符号数),al,其内容为调控参数。,proc_data proc far push bx mov bl, rated_speed/30 ;计算xe,转速3000对应 100 sub al, bl ;计算(x xe) mov ah, 100 imul ah ;计算 100 *(x-xe) idiv bl ;计算转差率100 * (x-xe)/xe mov ah, al ;出口参数:转差率 neg al add al, rated_ctrl ;出口参数:调控参数 pop bx ret proc_data endp,(4)按照上述的工作过程描述,试完成下面的中断服务程序; adcint:push ax push dx mov dx,81h ;输入a/d转换结果 in al,dx call far proc_data ;调用数据处理子程序 mov dx,80h _(out dx,al) ;输出调速控制参数 and ah,ah _(jns next1) neg ah ;计算转差率的绝对值 next1: cmp ah,10 _(ja / jg error),cmp ah,5 _(ja / jg alarm) normal: mov al, 0000 0011b ;置红灯灭输出值 jmp next2 alarm: mov al, 0000 0010b ;置红灯亮输出值 jmp next2 error: _(mov al,0xxx 0100b) ;关闭变频调速电路,终止电机运行 next2: mov dx,83h out dx,al pop dx pop ax iret,四、串行通信及接口电路,1 串行通信的基本概念,所谓串行通讯是指外设和计算机间使用一根数据信号线一位一位地传输数据,每一位数据都占据一个固定的时间长度。,“串行”是指外设与接口电路之间的信息传送方式,cpu与接口之间仍按并行方式工作。 为了保证数据传输的正确性,要求通信双方遵循某种约定的规范(即,通信协议),四、串行通信及接口电路,四、串行通信及接口电路,信息传输的检错和纠错,串行数据在传输过程中,由于干扰可能引起信息的出错 如何发现传输中的错误,叫检错。 发现错误后,如何消除错误,叫纠错 最简单的检错方法是奇偶校验,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。 奇校验:所有传送的数位(含字符的各数位和校验位)中,1的个数为奇数 偶校验:所有传送的数位(含字符的各数位和校验位)中,1的个数为偶数 奇偶校验能够检测出1位误码,但是不能纠错。,四、串行通信及接口电路,串行数据传输方式,(a)全双工方式,通讯双方能同时进行发送和接收操作,四、串行通信及接口电路,(b)半双工方式,只有1根数据线传送数据信号,要求通讯双方的发送和接收由电子开关切换。,(c)单工方式,只允许数据按照一个固定的方向传送,四、串行通信及接口电路,传输速率,在串行通讯中,用波特率来描述数据的传输速率 波特率,即每秒钟传送的二进制位数,简写为bps,接收时钟/发送时钟是波特率的倍数,称为波特率因子。 例如波特率因子为32,则32个时钟脉冲移位1次。波特率与发送/接收时钟的关系为:,例:波特率=9600bps,波特率因子=16,则 接收时钟和发送时钟频率=960016=153600hz,四、串行通信及接口电路,信号的调制和解调,数字信号的频带宽,而普通通信线路频带较窄,如电话线频带范围仅3003400hz 所以采用普通通信线路进行远程数据通信时,需要在发送端用调制器(modulator)把数字信号转换为模拟信号,模拟信号经通信线路传送到接收方,接收方再以解调器(demodulator),把模拟信号变为数字信号。 大多数情况下,调制器和解调器合在一个装置中,称为调制解调器modem,四、串行通信及接口电路,在通讯中,modem起着传输信号的作用,是一种数据通讯设备,简称dce 接收设备和发送设备称为数据终端设备,简称dte。,四、串行通信及接口电路,串行通信的类型,串行通讯可以分为两种类型:同步通讯、异步通讯,(a)同步通讯,同步通信是一种连续串行传送数据的通信方式,一次通信所传送一帧信息可含有若干个数据字符,由同步字符、数据字符和校验字符组成。同步字符位于帧开头;数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符(如由16位二进制数组成的crc循环校验码)有1或2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信要求发送时钟和接收时钟保持严格的同步。,四、串行通信及接口电路,(b)异步通讯,以收发一个字符为一帧,构成独立的通信单位。每个字符由若干二进制信息组成。在异步串行通信中,每个字符传送的时刻是任意的,每帧字符之间可以有间隔,但一旦开始传送后则要求字符帧的各位必须按预定的时钟进行收发。,传输一个字符时,以起始位开始,然后传输字符本身的各位,接着传输校验位,最后以停止位结束该字符的传输。一次传输的起始位、字符各位、校验位、停止位构成一组完整的信息,称为帧(frame) 帧与帧之间可有任意个空闲位,四、串行通信及接口电路,异步通信规程,又称为异步通信协议,它规定通信双方以一帧为数据传输单位。,异步通讯可以采用正逻辑或负逻辑,异步通讯的信息格式,起始位 逻辑0 1位 数据位 逻辑0或1 5位、6位、7位、8位 校验位 逻辑0或1 1位或无 停止位 逻辑1 1位、1.5位或2位 空闲位 逻辑1 任意数量,四、串行通信及接口电路,异步串行通信数据传输格式,四、串行通信及接口电路,1)起始位 1位,以逻辑“0”表示。当传输线上没有数据时呈现为逻辑“1”。通信线上出现的从逻辑“1”到“0”下降沿,是发送与接收双方开始位同步的标志信号。接收端在检测到帧起始位后,便开始准备接收后续的数据了。 2)数据位 当发送端输出起始位后,紧接着发送58个二进制数据位。每帧数据首先发送帧数据的最低位,最后发送最高位,并以此为序在接收端将接收到的数据转换为并行数据。 3)奇偶校验位 1位或不用。奇偶校验是一种用于对有限错误的检测方法。偶校验是指组成一帧数据中逻辑“1”的个数为偶数,奇校验是指组成一帧数据中“1”的个数为奇数。 4)停止位 1位、1.5位或2位,以逻辑“1”表示。接收端在收到停止位后,表示收/发一帧数据结束。随后,通信线可以紧接着开始下一帧数据传送,也可以恢复为空闲的逻辑“1”状态,直至下一帧数据传送的到来。,四、串行通信及接口电路

温馨提示

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

评论

0/150

提交评论