微机原理与接口技术.ppt

上传人:max****ui 文档编号:2915729 上传时间:2019-12-04 格式:PPT 页数:241 大小:2.79MB
返回 下载 相关 举报
微机原理与接口技术.ppt_第1页
第1页 / 共241页
微机原理与接口技术.ppt_第2页
第2页 / 共241页
微机原理与接口技术.ppt_第3页
第3页 / 共241页
点击查看更多>>
资源描述
第 8 章 常用接口技术,8.1 定时控制接口 8.2 并行接口 8.3 异步串行通信接口 8.4 模拟接口,8.1 定时控制接口,定时控制具有极为重要的作用 微机控制系统中常需要定时中断、定时检测、定时扫描等 实时操作系统和多任务操作系统中要定时进行进程调度 PC机的日时钟计时、DRAM刷新定时和扬声器音调控制都采用了定时控制技术 可编程定时器芯片 软硬件相结合、方便灵活的定时电路 软件延时方法 处理器执行延时子程序,8.1.1 8253/8254定时器,定时器(计数器):由数字电路中的计数电路构成,记录输入脉冲的个数 脉冲信号具有一定随机性,往往通过脉冲的个数可以获知外设的状态变化次数(计数) 脉冲信号的周期固定(使用高精度晶振产生脉冲信号),个数乘以周期就是时间间隔(定时) Intel 8253/8254可编程间隔定时器 3个独立的16位计数器通道 每个计数器有6种工作方式,1. 内部结构和引脚,3个相互独立的计数器通道,结构完全相同 计数器0 计数器1 计数器2 每个计数器通道 16位减法计数器 16位预置寄存器 输出锁存器,定时器外设引脚,CLK时钟输入信号 在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1 GATE门控输入信号 控制计数器工作,可分成电平控制和上升沿控制两种类型 OUT计数器输出信号 当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号,连接处理器引脚,D0D7数据线 A0A1地址线 RD*读信号 WR*写信号 CS*片选信号,2. 工作方式,8253有6种工作方式,由方式控制字确定 每种工作方式的过程类似: 设定工作方式 设定计数初值 硬件启动 计数初值进入减1计数器 每输入一个时钟计数器减1的计数过程 计数过程结束,定时器方式0:计数结束中断, 设 定 工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,定时器方式1:可编程单稳脉冲, 设 定 工 作 方 式, 设 定 计 数 初 值, 硬 件 启 动, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,定时器方式2:频率发生器(分频器),定时器方式3:方波发生器,定时器方式4:软件触发选通信号,定时器方式5:硬件触发选通信号,3. 编程:写入方式控制字,控制字写入控制字I/O地址:A1A011,00 计数器0 01 计数器1 10 计数器2 11 非法 (8253) 11 读回命令 (8254),00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节,000 方式0 001 方式1 *10 方式2 *11 方式3 100 方式4 101 方式5,0 二进制 1 十进制,方式控制字编程示例,; 8253的计数器0、1、2端口和控制端口地址:40H43H ;设置其中计数器0为方式0 ;采用二进制计数,先低后高写入计数值 mov al,30h ;方式控制字:30H00 11 000 0B out 43h,al ;写入控制端口:43H,3. 编程:写入计数值,选择二进制时 计数值范围:0000HFFFFH 0000H是最大值,代表65536 选择十进制(BCD码) 计数值范围:00009999 0000代表最大值10000 计数值写入计数器各自的I/O地址 按方式控制字规定的读写格式进行,计数值编程示例,; 8253的计数器0、1、2端口和控制端口地址:40H43H ;设置计数器0采用二进制计数 ;写入计数初值:1024(400H) mov ax,1024 ;计数初值:1024(400H) ;写入计数器0地址:40H out 40h,al ;写入低字节计数初值 mov al,ah out 40h,al ;写入高字节计数初值,8.1.2 定时器的应用,1. 定时中断,mov al,36h ; 计数器0为方式3,二进制计数 ; 先低后高写入计数值 out 43h,al ; 写入方式控制字 mov al,0 ; 计数值为0 out 40h,al ; 写入低字节计数值 out 40h,al ; 写入高字节计数值 计数器0:方式3,计数值:65536,输出方波 频率:1.19318MHz6553618.206Hz,不断产生 OUT0端接8259A的IRQ0,每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断 DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能,2. 定时刷新,需要重复不断提出刷新请求 门控总为高,选择方式2或3 2ms内刷新128次,即15.6s刷新一次 计数初值为18 mov al,54h ;计数器1为方式2 ;采用二进制计数,只写低8位计数值 out 43h,al ;写入方式控制字 mov al,18 ;计数初值为18 out 41h,al ;写入计数值,3. 扬声器控制,;发音频率设置子程序 ;入口参数:AX1.19318106发音频率 speaker proc push ax ;暂存入口参数 mov al,0b6h ;定时器2为方式3,先低后高 out 43h,al ;写入方式控制字 pop ax ;恢复入口参数 out 42h,al ;写入低8位计数值 mov al,ah out 42h,al ;写入高8位计数值 ret speaker endp,扬声器发音控制,speakon proc ;扬声器开子程序 push ax in al,61h ;读取61H端口的原控制信息 or al,03h ;D1D0PB1PB011,其他不变 out 61h,al ;直接控制发声 pop ax ret speakon endp,;扬声器关子程序 and al,0fch ;D1D0PB1PB000,其他不变,例8-1控制扬声器程序,;数据段 freq dw 1193180/600 ;给一个600Hz的频率 ;代码段 mov ax,freq call speaker ;设置扬声器的音调 call speakon ;打开扬声器声音 call readc ;等待按键 call speakoff ;关闭扬声器声音 ;子程序 ,输出:明确向哪个端口输出什么数据 输入:清楚从哪个端口输入什么数据,8.2 并行接口,并行数据传输:以计算机字长,通常是8、16或32位为传输单位,利用8、16或32个数据信号线一次传送一个字长的数据 适合于外部设备与微机之间进行近距离、大量和快速的信息交换,如微机与并行接口打印机、磁盘驱动器等 微机系统中最基本的信息交换方法,例如系统板上各部件之间的数据交换 并行数据传输需要并行接口的支持,8.2.1 并行接口电路8255,具有多种功能的可编程并行接口电路芯片 最基本的接口电路:三态缓冲器和锁存器 与CPU间、与外设间的接口电路:状态寄存器和控制寄存器 还有端口的译码和控制电路、中断控制电路 分3个端口,共24个外设引脚 共3种输入输出工作方式 方式0:基本输入输出方式 方式1:选通输入输出方式 方式2:双向选通传送方式,1. 内部结构和引脚,8255外设数据端口,端口A:PA0PA7 A组,支持工作方式0、1、2 常作数据端口,功能最强大 端口B:PB0PB7 B组,支持工作方式0、1 常作数据端口 端口C:PC0PC7 仅支持工作方式0,分两个4位,每位可独立操作 A组控制高4位PC4PC7,B组控制低4位PC0PC3 可作数据、状态和控制端口 控制最灵活,最难掌握,2. 工作方式0:基本输入输出方式,方式0输入 执行输入IN指令,输入外设数据,2. 工作方式0:基本输入输出方式,方式0输出 执行输出OUT指令,将数据送给外设,3. 工作方式1:选通输入输出方式,借助于选通(应答)联络信号进行输入或输出 只有端口A和端口B可以采用方式1 作为输入或输出的数据端口 利用端口C的3个引脚作为应答联络信号 还提供有中断请求逻辑和中断允许触发器 对输入和输出的数据都进行锁存 适用于查询和中断方式的接口电路,8255工作方式1输入引脚,A组引脚,选通输入工作时序,异步时序:没有时钟,由引脚控制信号定时 STB*和IBF是外设和8255间应答联络信号,B组引脚,8255工作方式1输出引脚,A组引脚,选通输出工作时序,异步时序:没有时钟,由引脚控制信号定时 OBF*和ACK*是外设和8255间应答联络信号,B组引脚,4. 8255的编程:写入方式控制字,控制字写入控制字I/O地址:A1A011,D7,写入方式控制字示例,要求: A端口:方式1输入 C端口上半部:输出,C口下半部:输入 B端口:方式0输出 方式控制字:10110001B或B1H 初始化的程序段: mov dx,0fffeh ;假设控制端口为FFFEH mov al,0b1h ;方式控制字 out dx,al ;送到控制端口,4. 8255的编程:读写数据端口,利用数据端口I/O地址:A1A000(A) 01(B) 10(C) 作输入接口,执行输入IN指令获取外设数据 作输出接口,执行输出OUT指令将数据送出 8255具有锁存输出数据的能力 对输出方式的端口同样可以输入 不是读取外设数据,而是上次给外设的数据 可实现按位输出控制 对输出端口B的PB7位置位的程序段 mov dx,0fffah ;B端口假设为FFFAH in al,dx ;读出B端口原输出内容 or al,80h ;使PB7D71 out dx,al ;输出新的内容,端口C的特点,C端口被分成两个4位端口 只能以方式0工作,可分别选择输入或输出 上半部和A端口编为A组 下半部和B端口编为B组 A和B端口在方式1或方式2时 C端口的部分或全部引脚将被征用 其余引脚工作在方式0,端口C的输出,通过端口C的I/O地址 向C端口直接写入字节数据 写进C端口的输出锁存器,并从输出引脚输出 对设置为输入的引脚无效 通过控制端口的I/O地址 向C端口写入位控字 使C端口的某个引脚输出1或0 或置位复位内部的中断允许触发器,示意图,端口C位控制字,返回,端口C的输入,未被A和B端口征用的引脚 定义为输入的端口读到引脚输入的信息 定义为输出的端口读到输出锁存器的信息 被A和B端口征用作为联络线的引脚 读到反映8255状态的状态字,示意图,端口C的读出内容,返回,8.2.2 并行接口的应用,端口A,B,C和控制字地址 60H,61H,62H和63H 工作在基本输入/输出方式0 端口A为方式0输入,用来读取键盘扫描码 端口B工作于方式0输出,例如控制扬声器等 端口C为方式0输入,读取系统状态和配置 系统的初始化编程: mov al,10011001b ;方式控制字99H out 63h,al,1. 用8255方式0与打印机接口,端口A为方式0输出打印数据 PC7引脚产生负脉冲选通信号 PC2引脚连接忙信号查询其状态 微处理器利用查询方式输出数据,打印机接口时序,典型的异步时序 DATA0DATA7(8位并行数据)信号 主机输出打印数据和命令 STROBE*(选通)信号 输出低有效,才能使打印机接收数据 ACK*(响应)信号 打印机接收数据结束回送负脉冲响应信号 BUSY(忙状态)信号 打印机忙于处理接收的数据,不接收新的数据,示意图,打印机时序,返回,方式0初始化程序段,mov dx,0fffeh ;控制端口地址为FFFEH mov al,10000001b ;方式控制字 out dx,al ;A端口方式0输出,端口B任意 ;C端口上半部输出、下半部输入 mov al,00001111b ;端口C复位置位控制字 out dx,al ;使PC71,即置STORE*1,打印数据子程序1,printc proc ;AH打印数据 push ax push dx prn: mov dx,0fffch ;读取端口C in al,dx ;查询打印机的状态 and al,04h ;忙否(PC2BUSY0)? jnz prn ;PC21,打印机忙,等待 mov dx,0fff8h ;PC20,打印机不忙,输出 mov al,ah out dx,al ;将打印数据从端口A输出,打印数据子程序2,mov dx,0fffeh ;从PC7送出控制低脉冲 mov al,00001110b ;使PC7STROBE*0 out dx,al nop ;产生一定宽度的低电平 nop mov al,00001111b ;使PC7STROBE*1 out dx,al ;产生低脉冲STROBE*信号 pop dx pop ax ret printc endp,2. 用8255方式1与打印机接口,端口A选通输出连接打印机 PC7OBF*输出,PC6ACK*输入,PC3INTR输出 通过PC6控制INTEA,方式1时序配合,8255的OBF*引脚对应打印机STROBE*引脚 略有差别,不能直接连接,方式1初始化程序段,mov dx,0fffeh ;设定端口A为选通输出方式 mov al,0a0h out dx,al mov al,0ch ;使INTEA(PC6)为0,禁止中断 out dx,al mov cx,counter ;打印字节数送CX mov bx,offset buffer ;取字符串首地址送BX call prints ;调用打印子程序,打印字符串子程序1,;入口参数:DS:BX字符串首地址 ;CX字符个数 prints proc push ax ;保护寄存器 push dx print1: mov al,bx ;取一个数据 mov dx,0fff8h out dx,al ;从端口A输出,打印字符串子程序2,mov dx,0fffch print2: in al,dx ;读取端口C test al,80h ;检测OBF*(PC7)为1否? jz print2 ;为0,说明打印机没有响应,继续检测 inc bx ;为1,说明打印机已接受数据 loop print1 ;准备取下一个数据输出 pop dx ;打印结束,恢复寄存器 pop ax ret ;返回 prints endp,8.2.3 键盘及其接口,键盘是微机系统最常使用的输入设备 小键盘:适用于单板机或以处理器为基础的仪器,实现数据、地址、命令及指令等输入 独立键盘:通过5芯电缆与PC微机主机连接,1. 简易键盘,线性结构键盘,矩阵结构键盘,识别按键的扫描方法,先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合(通过检查列线电位实现) 再将第1行接地,检测列线是否有变为低电位的线 如此往下一行一行地扫描,直到最后一行 扫描过程中,发现某一行有键闭合时(列线输入中有一位为0),便在扫描中途退出 通过组合行线和列线识别此刻按下哪一键,键盘扫描程序第1段:判断是否有键按下,key1: mov al,00 mov dx,rowport ; rowport行线端口地址 out dx,al ; 使所有行线为低电平 mov dx,colport ; colport列线端口地址 in al,dx ; 读取列值 cmp al,0ffh ; 判定列线是否为低电平 jz key1 ; 没有,无闭合键 ; 则循环等待(或转向其他程序片断) call delay ; 有,延迟20ms消除抖动,键盘扫描程序第2段:识别按键,mov cx,8 ; 行数送CX mov ah,0feh ; 扫描初值送AH key2: mov al,ah mov dx,rowport out dx,al ; 输出行值(扫描值) mov dx,colport in al,dx ; 读进列值 cmp al,0ffh ; 判断有无低电平的列线 jnz key3 ; 有,则转下一步处理 rol ah,1 ; 无,则移位扫描值 loop key2 ; 准备下一行扫描 jmp key1 ; 所有行都没有按键 key3: ; AL列值,AH行值,键盘扫描程序第3段:查找键代码1,key3: mov si,offset table ; SI指向键行列值表 mov di,offset char ; DI指向键代码表 mov cx,64 ; CX键的个数 key4: cmp ax,si ; 与按键的行列值比较 jz key5 ; 相同,说明查到 inc si ; 不相同,继续比较 inc si inc di loop key4 jmp key1 ; 全部不相同 ; 返回继续检测(或转向其他程序片断),键盘扫描程序第3段:查找键代码2,key5: mov al,di ; 获取键代码送AL ; 判断按键释放,没有则等待 call delay ; 按键释放,延时消除抖动 ; 后续处理 ; 键盘的行列值表:低字节是列值、高字节是行值 table word 0fefeh ; 键0的行列值 word 0fefdh ; 键1的行列值 ; 其他键的行列值 ; 键盘的键代码表 char byte ; 键0的代码值 byte ; 键1的代码值 ; 其他键的代码值,2. PC机键盘,与主机箱分开的一个独立装置 通过一根五芯电缆与主机相连 PC及PC/XT机采用83(或84)键的标准键盘,PC机键盘的工作过程,键盘电路正常工作时不断地扫描键盘矩阵 有按键,则确定按键位置之后以串行数据形式发送给系统板键盘接口电路 键按下时,发送该键的接通扫描码 键松开时,发送该键的断开扫描码 若一直按住某键,则以拍发速率(每秒230次)连续发送该键的接通扫描码,接通扫描码键盘上的位置 断开扫描码接通扫描码80H,键盘接口电路的工作过程,接收一个串行形式字符,进行串并转换 产生键盘中断IRQ1请求,等待读取键盘数据 CPU响应中断,进入09H键盘中断服务程序: 读取键盘扫描码:用IN AL,60H即可 响应键盘:系统使PB71 允许键盘工作:系统使PB70 处理键盘数据 给8259A中断结束EOI命令,中断返回,例8-2键盘中断服务程序1,09H号中断服务程序(kbint过程) 完成常规的操作 处理键盘数据 将扫描码通过查表转换为对应ASCII码送缓冲区 不能显示的按键,转换为0,且不再送至缓冲区 键盘I/O功能程序(kbget子程序) 从缓冲区中读取转换后的ASCII码 功能调用(主程序) 循环显示键入的字符,例8-2键盘中断服务程序2,键盘缓冲区 中断服务程序与子程序之间传递参数 先进先出循环队列,例8-2键盘中断服务程序3,; 数据段 buffer byte 10 dup(0) ; 键盘缓冲区 bufptr1 word 0 ; 队列头指针 bufptr2 word 0 ; 队列尾指针 ; 按扫描码顺序给出字符的ASCII码 ; 不能显示的按键为0 ; 第一个0不对应按键,仅用于查表指令 scantb byte 0,1,1234567890-=,08h ; 键盘第1排的按键,从ESC到退格 byte 0,0,789-456+1230. ; 右边小键盘,从Num Lock到Del,例8-2键盘中断服务程序4,; 代码段 mov ax,3509h ; 获取保存原中断向量表项 int 21h push es push bx cli ; 关中断 push ds ; 设置09H号新中断向量表项 mov ax,seg kbint mov ds,ax mov dx,offset kbint mov ax,2509h int 21h pop ds,例8-2键盘中断服务程序5,in al,21h ; 允许IRQ1中断 push ax and al,0fdh out 21h,al sti ; 开中断 start1: call kbget ; 调用KBGET获取按键的ASCII码 cmp al,1 jz start2 ; 是ESC键,则退出 push ax ; 保护字符 call dispc ; 显示字符 pop ax ; 恢复字符,例8-2键盘中断服务程序6,cmp al,0dh ; 该字符是回车符吗? jnz start1 ; 不是,取下个按键字符 mov al,0ah ; 是回车符,再进行换行 call dispc jmp start1 ; 继续取字符 start2: cli ; 恢复中断原状态 pop ax out 21h,al pop dx pop ds mov ax,2509h int 21h sti,例8-2键盘中断服务程序7,; KBGET子程序从缓冲区取字符送AL kbget proc push bx ; 保护BX kbget1: cli ; 关中断 mov bx,bufptr1 ; 取缓冲区队列头指针 cmp bx,bufptr2 ; 与尾指针相等否? jnz kbget2 ; 不相等,有字符 sti ; 相等,缓冲区空 jmp kbget1 ; 等待缓冲区有字符,例8-2键盘中断服务程序8,kbget2: mov al,bufferbx ; 从队列头取字符送AL inc bx ; 队列头指针增量 cmp bx,10 ; 指针指向队列末端? jc kbget3 ; 没有,转移 mov bx,0 ; 循环指向始端 kbget3: mov bufptr1,bx ; 设定新队列头指针 sti ; 开中断 pop bx ; 恢复BX ret ; 子程序返回 kbget endp,例8-2键盘中断服务程序9,; KBINT中断服务程序处理09H号键盘中断 kbint proc sti ; 开中断 push ax ; 保护寄存器 push bx in al,60h ; 读取键盘扫描码 mov bl,al ; 扫描码保存在BL in al,61h ; 使PB71,响应键盘 or al,80h out 61h,al and al,7fh ; 使PB70,允许键盘 out 61h,al,例8-2键盘中断服务程序10,test bl,80h ; 键盘数据处理 jnz kbint2 ; 是断开扫描码,退出 xor bh,bh mov al,scantbbx ; 是接通扫描码,转换 cmp al,0 ; 合法的ASCII码? jz kbint2 ; 不是,退出 mov bx,bufptr2 ; 是,取队列尾指针 mov bufferbx,al ; 存入缓冲区队列尾 inc bx ; 队列尾指针增量 cmp bx,10 ; 指针指向队列末端? jc kbint1 ; 没有,转移 mov bx,0 ; 循环指向始端,例8-2键盘中断服务程序11,kbint1: cmp bx,bufptr1 ; 缓冲区是否已满? jz kbint2 ; 队列满,退出 mov bufptr2,bx ; 队列不满,设置新的队列尾指针 kbint2: mov al,20h ; 普通中断结束命令 out 20h,al pop bx ; 恢复寄存器 pop ax iret ; 中断返回 kbint endp,示意图,队列满,返回,8.2.4 数码管及其接口,发光二极管LED是最简单的显示设备 由7段LED就可以组成的LED数码管 LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中 LED数码管可以显示内存地址和数据等,1. LED数码管的工作原理,主要部分是7段发光管 顺时针分别称为a、b、c、d、e、f、g 有的产品还附带有一个小数点h 通过7个发光段的不同组合 主要显示09 也可显示AF(16进制数) 还可显示个别特殊字符:、P 共阳极结构 共用阳极接高电平 共阴极结构 共用阴极接低电平,示意图,LED数码管的结构,返回,共阳极,共阴极,2. 单个数码管的显示,LED数码管显示一位十六进制数(4位二进制数) 硬件方法:专用的带驱动器的LED段译码器 软件方法:组成显示代码表,通过查表进行译码 ledtb byte 3fh,06h,5bh, ;显示代码表 ; 实现1个LED数码管显示 mov bx,1 ; BX要显示的数字 mov al,ledtbbx ; 换码为显示代码:ALLEBTBBX mov dx,port ; port数码管端口地址 out dx,al ; 输出显示,示意图,单个数码管的显示,返回,3. 多个数码管的显示,硬件上用公用的驱动电路来驱动各数码管 软件上用扫描方法实现数码显示 8个数码管:用2个8位输出端口控制 位控制端口:控制哪个(位)数码管显示 段控制端口:控制哪个段显示,决定具体显示什么数码 稳定数字显示:依次显示,不断重复 重复频率越高,数字显示越稳定 延时显示时间越长,显示亮度就越高 各种显示效果:控制重复频率和延时时间,位控制端口,位控制:Di0,相应位发光,段控制端口,段控制:Di0,相应段发光,依次显示8位数码管程序1,; 数据段 leddt byte 8 dup(0) ; 数码缓冲区 ; 主程序 mov si,offset leddt ; 指向数码缓冲区 call displed ; 调用显示子程序 ; 子程序:显示一次数码缓冲区的8个数码 ; 入口参数:DS:SI缓冲区首地址 displed proc push ax push bx push dx,依次显示8位数码管程序2,xor bx,bx mov ah,0feh ; 指向最左边数码管 led1: mov bl,si ; 取出要显示的数字 inc si mov al,ledtbbx ; 得到显示代码:ALLEDTBBX mov dx,segport ; segport为段控制端口 out dx,al ; 送出段码 mov al,ah ; 取出位显示代码 mov dx,bitport ; bitport为位控制端口 out dx,al ; 送出位码,依次显示8位数码管程序3,call delay ; 实现数码管延时显示 rol ah,1 ; 指向下一个数码管 cmp ah,0feh ; 是否指向最右边数码管 jnz led1 ; 没有,显示下一个数字 pop dx pop bx pop ax ret ; 8位数码管都显示一遍 ; 显示代码表,按照09、AF的顺序 ledtb byte 0c0h,0f9h,0a4h,86h,8eh displed endp,依次显示8位数码管程序4,timer = 10 ; 延时常量 delay proc ; 软件延时子程序 push bx push cx mov bx,timer ; 外循环:timer次数 delay1: xor cx,cx delay2: loop delay2 ; 内循环:216次循环 dec bx jnz delay1 pop cx pop bx ret delay endp,8.3 异步串行通信接口,串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传送的方式 串行通信的优势:用于通信的线路少,因而在远距离通信时可以极大地降低成本 串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送 通信协议(通信规程):收发双方共同遵守,解决传送速率、信息格式、位同步、字符同步、数据校验等问题 串行异步通信:以字符为单位进行传输 串行同步通信:以一个数据块(帧)为传输单位,8.3.1 异步串行通信格式,起始位每个字符开始传送的标志,起始位采用逻辑0电平,数据位数据位紧跟着起始位传送。由58个二进制位组成,低位先传送,校验位用于校验是否传送正确;可选择奇检验、偶校验或不传送校验位,停止位表示该字符传送结束。停止位采用逻辑1电平,可选择1、1.5或2位,空闲位传送字符之间的逻辑1电平,表示没有进行传送,数据传输速率,数据传输速率比特率(Bit Rate) 每秒传输的二进制位数bps 字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数 进行二进制数码传输,每位时间长度相等: 比特率波特率(Baud Rate) 过去,限制在50 bps到9600 bps之间 现在,可以达到115200 bps或更高,8.3.2 异步串行接口标准,美国电子工业协会EIA制定 1962年公布,1969年修订 1987年1月正式改名为EIA-232D 数据终端设备DTE与数据通信设备DCE标准接口 调制解调器Modem 通信线路信号与数字信号相互转换的设备 传输制式 全双工:双根传输线,能够同时发送和接收 半双工:单根传输线,不能同时发送和接收 单工:单根传输线只用作发送或只用作接收,1. 232C的引脚定义,TxD:发送数据 RxD:接收数据 RTS:请求发送 CTS:清除发送(允许发送) DTR:数据终端准备好 DSR:数据装置准备好 GND:信号地 CD:载波检测(DCD) RI:振铃指示,保护地(机壳地) TxC:发送器时钟 RxC:接收器时钟,2. 232C的连接,连接调制解调器:通过电话线路远距离通信 直接(零调制解调器)连接:进行短距离通信,不使用联络信号的3线相连,“伪”使用联络信号的3线相连,2. 232C的连接,连接调制解调器:通过电话线路远距离通信 直接(零调制解调器)连接:进行短距离通信,使用联络信号的多线相连,8.3.3 异步串行通信程序,IBM PC/XT机的UART芯片是INS 8250 后续PC机采用兼容的NS16450和NS16550 现在32位PC机芯片组兼容NS16550 实现起止式串行异步通信协议 数据位为58位,停止位1、1.5或2位 奇偶校验,具有奇偶、帧和溢出错误检测电路 支持全双工通信 8250支持的数据传输速率为509600 bps 16550支持的速率高达115200 bps,1. 8250的寄存器,9种可访问的寄存器 用引脚A0A2来寻址,DLAB位区别,8250的接收缓冲寄存器RBR,存放串行接收后转换成并行的数据,8250的发送保持寄存器THR,包含将要串行发送的并行数据,8250的除数寄存器,除数寄存器保存设定的分频系数 分频系数基准时钟频率(16比特率),8250的通信线路控制寄存器LCR,指定串行异步通信的字符格式,8250的通信线路状态寄存器LSR,提供串行异步通信的当前状态,奇偶错误PE 帧错误FE 溢出错误OE,8250的引脚,分成连接CPU的部分和连接外设的部分 注意:8250不是Intel公司的产品,所以该芯片引脚名称与前面学习的8253、8255等Intel产品有所不同,但是引脚功能却是类似的,1. 处理器接口引脚(1),数据线D0D7:在CPU与8250之间交换信息 地址线A0A2:寻址8250内部寄存器 片选线:8250设计了3个片选输入信号CS0、CS1、CS2*和一个片选输出信号CSOUT。3个片选输入都有效时,才选中8250芯片,同时CSOUT输出高电平有效。 地址选通信号ADS*:当该信号低有效时,锁存上述地址线和片选线的输入状态,保证读写期间的地址稳定,1. 处理器接口引脚(2),读控制线 数据输入选通DISTR(高有效)和DISTR*(低有效)有一个信号有效,CPU从8250内部寄存器读出数据 相当于I/O读信号 写控制线 数据输出选通DOSTR(高有效)和DOSTR*(低有效)有一个有效,CPU就将数据写入8250内部寄存器 相当于I/O写信号 8250读写控制信号有两对,每对信号作用完全相同,只不过有效电平不同而己,1. 处理器接口引脚(3),驱动器禁止信号DDIS:CPU从8250读取数据时,DDIS引脚输出低电平,用来禁止外部收发器对系统总线的驱动;其他时间,DDIS为高电平 主复位线MR:硬件复位信号RESET 中断请求线INTRPT:8250有4级共10个中断源,当任一个未被屏蔽的中断源有请求时,INTRPT输出高电平向CPU请求中断,2. 时钟信号,时钟输入引脚XTAL1:8250的基准工作时钟 时钟输出引脚XTAL2:基准时钟信号的输出端 波特率输出引脚BAUDOUT*:基准时钟经8250内部波特率发生器分频后产生发送时钟 接收时钟引脚RCLK:接收外部提供的接收时钟信号;若采用发送时钟作为接收时钟,则只要将RCLK引脚和BAUDOUT*引脚直接相连,3. 串行异步接口引脚,4. 输出线,OUT1*和OUT2*: 两个一般用途的输出信号 由调制解调器控制寄存器的D2和D3使其输出低电平有效信号 复位使其恢复为高,8250的调制解调器控制寄存器MCR,设置8250与数据通信设备联络的输出信号,循环工作方式: 4个控制输入信号在内部与4个控制输出信号相连 发送的串行数据在内部被接收 检测8250发送和接收功能,不必外连线,8250的4个控制输入信号,CTS*:允许发送,当数据通信设备已准备好接收数据终端设备的传送数据时,发送CTS有效信号来响应RTS信号 DSR*:数据装置准备好,表示数据通信设备已接通电源连到通信线路上,并处于数据传输方式 RLSD*:对应载波检测CD RI*:振铃指示,8250的调制解调器状态寄存器MSR,反映4个控制输入信号的当前状态及其变化 MSR高4位中某位为1: 相应输入信号当前为低,否则为高 MSR低4位中某位为1: 从上次CPU读取该状态字后,相应输入信号已发生改变,从高变低或反之 MCR低4位任一位置1,均产生调制解调器状态中断,当CPU读取该寄存器或复位后,低4位被清零,8250的中断允许寄存器IER,8250有4级10个中断 接收线路状态中断(4个)(D2) 奇偶错、溢出错、帧错和中止字符 接收器数据准备好中断(D0) 发送保持寄存器空中断(D1) 调制解调器状态中断(4个)(D3) 中断允许寄存器低4位控制4级中断是否允许 某位为1,则对应的中断被允许 否则,被禁止,8250的中断识别寄存器IIR,表明是否有中断 保存正在请求中断优先权最高中断级别编码,2. 初始化编程,对8250的内部控制寄存器进行编程写入 设置传输率 写入除数寄存器 设置字符格式 写入通信线路控制寄存器 设置工作方式 写入调制解调器控制寄存器 设置中断允许或屏蔽位 写入中断允许寄存器,写入除数寄存器设置传输率,mov al,80h mov dx,2fbh out dx,al ; 写入通信线路控制寄存器,使DLAB1 mov ax,96 ; 分频系数 ; 1.8432MHz(120016)9660H mov dx,2f8h out dx,al ; 写入除数寄存器低8位 mov al,ah inc dx out dx,al ; 写入除数寄存器高8位,写入通信线路控制寄存器设置字符格式,; 假设使用7个数据位、1个停止位、奇校验 mov al,00001010b mov dx,2fbh out dx,al ;写入通信线路控制寄存器 ; 同时使DLAB0,以方便下述初始化过程,异步通信适配器,IBM PC/XT机的串行异步通信适配器 以8250为核心 完成发送时的并转串和接收时的串转并以及相应的控制工作 配置了TTL电平与EIA电平转换电路等 展开异步通信适配器的 硬件电路 软件编程,异步通信适配器的接口电路,写入调制解调器控制寄存器设置工作方式,; 设置查询通信方式 mov al,03h ; 禁止中断(D30) mov dx,2fch out dx,al ; 写入调制解调器控制寄存器 ; 设置中断通信方式 mov al,0bh ; 允许中断(D31) mov dx,2fch out dx,al ; 设置查询的循环测试通信方式 mov al,13h ; 循环测试(D41) mov dx,2fch ; 禁止中断(D30) out dx,al,写入中断允许寄存器设置中断允许或屏蔽位,;禁止所有中断 mov al,0 mov dx,2f9h out dx,al ;写入中断允许寄存器(DLAB0) ;仅允许接收中断 mov al,1 mov dx,2f9h out dx,al ;写入中断允许寄存器(DLAB0),例8-3异步通信程序1,; 数据段 msg byte What you see is .,13,10,0 ; 代码段 ; 初始化编程 mov si,offset msg ; SI指向发送信息 mov bx,1 ; BX1需要发送信息 mov cx,1 ; CX1可以接收信息 ; 读取通信线路状态,查询工作 statue: mov ax,bx or ax,cx ; BXCX0,接发完成 jz done ; 转向结束,例8-3异步通信程序2,mov dx,2fdh ; 读取线路状态寄存器 in al,dx test al,1eh ; 接收有错误否? jz statue1 ; 没有错误,继续 ; 接收有错,响铃报警 mov dx,2f8h; 读出接收有误的数据, 丢掉 in al,dx mov al,07h ; 响铃控制的ASCII码 call dispc jmp statue ; 继续查询,例8-3异步通信程序3,statue1: test al,01h ; 接收到数据吗? jz statue2 ; 没有收到数据,继续 ; 已接收字符,读取该字符并显示 mov dx,2f8h ;读取输入缓冲寄存器 in al,dx cmp al,0 ; 是结尾字符吗? jnz receive xor cx,cx ; CX0,不再接收数据 jmp statue ; 继续查询 receive: and al,7fh ; 标准ASCII码取低7位 call dispc ; 屏幕显示该数据 jmp statue ; 继续查询,例8-3异步通信程序4,statue2: cmp bx,1 ; 有要发送的字符吗? jne statue ; 无字符,继续查询 test al,20h ; 能输出数据吗? jz statue ; 不能输出,继续查询 ; 保持寄存器已空,可以发送数据 mov al,si ; 获得要发送的字符 inc si cmp al,0 ; 是结尾字符吗? jnz transmit xor bx,bx ; 无发送字符,BX0 jmp statue ; 继续查询,例8-3异步通信程序5,transmit: mov dx,2f8h ; 将字符输出给发送保持寄存器 out dx,al ; 串行发送数据 jmp statue ; 继续查询 done: ; 返回DOS,What you see is what you get.,显示结果,8.4 模拟接口,模拟量连续变化的物理量,数字量时间和数值上都离散的量,8.4.1 模拟输入输出系统,8.4.1 模拟输入输出系统,传感器 将各种现场的物理量测量出来 并转换成电信号(模拟电压或电流),放大器 把传感器输出的信号放大到ADC所需 的量程范围,低通滤波器 用于降低噪声、滤去高频干扰, 以增加信噪比,多路开关 把多个现场信号分时地接通到A/D转换器,采样保持器 周期性地采样连续信号, 并在A/D转换期间保持不变,8.4.2 D/A转换器,D/A转换器(DAC) 将数字量转换成为模拟量(电压或电流) DAC芯片有多种类型 按DAC的性能:通用、高速和高精度等转换器 按内部结构:不包含、包含数据寄存器 按位数:8位、12位、16位等 按输出模拟信号:电流输出型和电压输出型,1. D/A转换原理,把每位代码按其权的大小转换成相应的模拟分量,将各模拟分量相加 1101B12312202112013 D/A转换器: 主要由电阻网络、电子开关和基准电压组成 DAC集成电路多采用R-2R梯形解码网络 输入数字量控制电子开关 使电阻网络中的不同电阻和基准电压接通 输出端产生成比例的模拟电流或电压 基准电压(参考电压VREF):稳定的电压源,D/A转换器的原理图(1),D/A转换器的原理图(2),D/A转换器的原理图(3),VaVREF VbVREF/2 VcVREF/4 VdVREF/8,I0Vd/2RVREF/(82R) I1Vd/2RVREF/(42R) I2Vd/2RVREF/(22R) I3Vd/2RVREF/(12R),D/A转换器的原理图(4),Iout1I0I1I2I3 VREF/2R(1/81/41/21) RfbR VoutIout1Rfb VREF(20212223)/24,Vout(D/2n)VREF,DAC0832的内部结构,典型的8位、电流输出型、通用DAC芯片,2. DAC0832的数字接口,8位数字输入端 DI0DI7(DI0为最低位) 输入寄存器(第1级)控制端 ILE、CS*、WR1* DAC寄存器(第2级)控制端 XFER*、WR2*,直通方式 单缓冲方式 双缓冲方式,直通锁存器的工作方式,两级缓冲寄存器都是直通锁存器 LE1,直通(输出等于输入) LE0,锁存(输出保持不变),DAC0832的工作方式:直通方式,LE1LE21 输入的数字数据直接进入D/A转换器,DAC0832的工作方式:单缓冲方式,LE11,或者LE21 两个寄存器之一始终处于直通状态 另一个寄存器处于受控状态(缓冲状态),DAC0832的工作方式:双缓冲方式,两个寄存器都处于受控(缓冲)状态 能够对一个数据进行D/A转换的同时;输入另一个数据,3. DAC0832的模拟输出,Iout1、Iout2电流输出端 Rfb反馈电阻引出端(电阻在芯片内) VREF参考电压输入端 10V10V AGND模拟信号地 VCC电源电压输入端 5V15V DGND数字信号地,单极性电压输出,设 VREF5V DFFH255时,最大输出电压: Vmax-(255/256)5V-4.98V D00H时,最小输出电压: Vmin-(0/256)5V0V D01H时,一个最低有效位电压: VLSB-(1/256)5V-0.02V,Vout(D/2n)VREF,双极性电压输出:电路,双极性电压输出:公式,取 R2R32R1 得 Vout2(2Vout1VREF) 因 Vout1(D/28)VREF 故 Vout2(D27)/27)VREF,双极性电压输出,Vmax(255-128)/1285V4.96V Vmin(0-128)/1285V-5V VLSB(129-128/1285V0.04V,Vout(D2n-1)/2n-1VREF,4. DAC芯片与主机的连接,DAC芯片相当于一个“输出设备” 不带锁存器的DAC,至少需要一级锁存器作为接口电路,mov al,buf mov dx,portd out dx,al,DAC0832单缓冲方式,DAC芯片的应用,mov dx,portd mov al,0 repeat: out dx,al inc al jmp repeat,输出正向锯齿波,8.4.3 A/D转换器,A/D转换器(ADC) 将模拟量(电压或电流)转换成为数字量 ADC芯片主要以模拟到数字转换技术来区别 有些ADC芯片不仅具有A/D转换的基本功能,还包含内部放大器和三态输出锁存器 有的还包括多路开关、采样保持器等,1. 计数器式,以最低位为增减量 单位的逐步计数法,2. 逐次逼近式,从最高位开始 的逐位试探法,3. 双积分式,两个积分阶段 实质是电压/时间变换,4. 并行式,速度快成本高 直接比较法,ADC0809的内部结构,8位逐次逼近式ADC,多路开关和三态锁存缓冲器,2. ADC0809的模拟输入,IN0IN7:8个模拟电压输入端 ADDA、ADDB、ADDC:3个地址输入线 ALE:地址锁存允许信号 提供一个8通道的多路开关和寻址逻辑 ALE的上升沿用于锁存3个地址输入的状态 译码器从8个选择一个模拟输入进行A/D转换,3. ADC0809的转换时序,4. ADC0809的数字输出,输出允许信号OE高电平有效 将三态锁存缓冲器的数字量从D0D7输出,基准电压VREF(+)5V,VREF()0V 输入模拟电压Vin1.5V N(1.50)(50)25676.8774DH,5. ADC芯片与主机的连接,ADC芯片相当于“输入设备” 需要接口电路提供数据缓冲器 转换开始需要启动信号 软件编程或硬件定时产生脉冲信号或电平信号 转换结束输出结束信号 主机获知转换是否结束,进行数据输入 查询方式:把结束信号作为状态信号 中断方式:把结束信号作为中断请求信号 延时方式:不使用转换结束信号 DMA方式:把结束信号作为DMA请求信号,6. ADC芯片的应用:中断方式,中断方式:主程序,;数据段设置缓冲区 adtemp db 0 ;给定一个临时变量 ;代码段 ;设置中断向量等工作 sti ;开中断 mov dx,220h out dx,al ;启动A/D转换 ;其他工作,中断方式:中断服务程序1,adint proc ;中断服务程序 sti ;开中断 push ax ;保护寄存器 push dx push ds mov ax,data ;设置数据段DS的段地址 mov ds,ax mov dx,220h in al,dx ;读取A/D转换后的数字量 mov adtemp,al ;送入缓冲区,中断方式:中断服务程序2,mov al,20h ;给中断控制器发送EOI命令 out 20h,al pop ds ;恢复寄存器 pop dx pop ax iret ;中断返回 adint endp,7. ADC芯片的应用:查询方式,查询方式程序1,;数据段 counter equ 8 buf db counter dup(0) ;设立数据缓冲区 ;代码段 mov bx,offset buf ;BX缓冲区偏移地址 mov cx,counter ;CX检测的数据个数 mov dx,220h ;从IN0开始转换 start1: out dx,al ;启动A/D转换 push dx,查询方式程序2,mov dx,238h ;循环查询是否转换结束 start2: in al,dx ;读入状态信息 test al,80h ;D71,转换结束否? jz start2 ;没有结束,则继续查询 pop dx ;转换结束 in al,dx ;读取数据 mov bx,al ;存入缓冲区 inc bx inc dx loop start1 ;转向下一个模拟通道 ;数据处理,掌握8253引脚、工作方式、编程和应用 熟悉8255A的结构特点和引脚功能 掌握8255A的方式0/1的编程及应用 掌握简易键盘编程和理解PC机键盘的工作原理 掌握LED数码管编程 掌握起止式通信协议、232C引脚定义和连接 了解8250的内部寄存器功能 理解异步通信适配器的初始化编程和通信程序 了解模拟输入输出系统 熟悉DAC0832和ADC0809 理解DAC和ADC芯片与主机连接问题 掌握ADC芯片的应用,教学要求,第8章 常用接口技术,第8章 习题,8.1 简答题 8.2 判断题 8.3 填空题 8.6 8.10 8.11 8.12 8.14 8.20 8.21,DMA控制器8237A,每个8237A芯片有4个DMA通道,就是有4个DMA控制器 每个DMA通道具有不同的优先权 每个DMA通道可以分别允许和禁止 每个DMA通道有4种工作方式 一次传送的最大长度可达64KB 多个8237A芯片可以级连,扩展通道数,8237A的内部结构和引脚,内部结构和外部引脚都相对
展开阅读全文
相关资源
相关搜索

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


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

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


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