微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.

Slides:



Advertisements
Similar presentations
微型计算机原理及应用.
Advertisements

输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
第10章 DOS功能调用与BIOS中断调用.
第四章 汇编语言 程序设计 任课教师:王晓甜
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
输入/输出及接口 输入/输出的传送方式 中断技术 80x86/Pentium中断系统 8259A可编程中断控制器 中断程序设计
本周实验安排 实验内容:(P231)人名排序的例子。
第四章 指令系统及汇编语言程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
第7章 常用数字接口电路.
单片机原理与应用.
第3章 80x86汇编语言程序设计(下).
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
第6章 DMA传输 6.1 DMA传输原理 6.2 DMA控制器8237A A的编程使用 欢迎辞.
第7章 并行接口 7.1 简单并行接口 7.2 可编程并行接口8255A 7.3 键盘接口 7.4 LED显示器接口.
第2章 MCS-51单片机指令系统与汇编语言程序设计
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第二部分 PC 微机异步通信适配器的分析和使用 一、PC中的UART 1.INS PC16450/PC16550
第4章 汇编语言程序设计 4.1 程序设计语言概述 4.2 汇编语言的程序结构与语句格式 4.3 汇编语言的伪指令
微机原理及应用 主讲:郑海春.
第15章 串行通信及接口电路.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
微机原理与接口技术 第9章 计时/计数接口.
第8章 PCH中的常规接口.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
计算机原理及系统结构 第十八讲 主讲教师:赵宏伟                 学时:64.
第7章 微型机接口技术 可编程定时/计数器 可编程并行接口 串行接口与串行通信(概念) DMA控制器接口(不做要求) 模拟量输入/输出接口.
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
第 13 章 中断系统.
第二章 模拟量输出通道 本章要点 1.模拟量输出通道的结构组成与模板通用性; 2.8位D/A转换器DAC0832的原理组成及其接口电路
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
條件處理.
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
第四章 指令系统及汇编语言程序设计.
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
第7章 I/O接口和总线 7.1 I/O接口 7.2 总线.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
可编程定时计数器.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
第八章 中断系统.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第8章 并行接口芯片 并行接口一般具有两个或两个以上的8位I/O接口。各个口的工作方式可由程序分别确定或改变,使用灵活,便于和各种外部设备连接。因此,又称可编程的外部接口(PPI) 目前各主要微处理器厂商都有自己的PPI产品,但它们的功能基本类似.
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
Presentation transcript:

微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日

微机原理与接口技术 第7章 可编程接口芯片 朱华贵 2015年11月26日

本章主要内容 1 可编程接口芯片概述 2 可编程并行接口芯片8255A 3 可编程定时器/计数器8253 4

7.1 可编程接口芯片概述 可编程接口芯片,通过软件编程来增加芯片的工作方式,使一个芯片具有灵活的多种工作方式,从而提高每个芯片的功能。 本章主要介绍几种常用可编程接口芯片: 可编程并行接口芯片8255A 可编程定时器/计数器8253 可编程串行通信接口芯片8251A

7.2 可编程并行接口芯片8255A 8255A是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口,共24位,其各端口工作方式由软件编程设定。 8255A是应用最广泛的可编程并行接口芯片,使用方便,通用性强。

7.2.1 8255A的内部结构及引脚功能 1.8255A的内部结构 8255A由数据总线缓冲器,数据端口A、端口B和端口C,A组和B组控制电路和读/写控制逻辑四部分组成。

7.2.1 8255A的内部结构及引脚功能 2.8255A的引脚功能 8255A是40个引脚双列直播插式芯片,有三个可存取数据的端口,分别是A口、B口、C口,可以通过编程来设置其工作方式;有一个控制端口,可以通控制端口设置8255A 数据端口的工作方式。

7.2.2 8255A的工作方式 A口可工作于方式0、方式1、方式2 B口可工作于方式0、方式1 C口只能工作于方式0

1.方式0—基本输入输出 在方式0下,每一个端口都作为基本的输入或输出口,端口C口的高4位和低4位以及端口A口、端口B都可独立地设置为输入口或输出口。 CPU可采用无条件传输方式与8255A交换数据。

2.方式1—单向选通输入输出 三个数据端口分为A、B两组,分别称为A组控制和B组控制。 端口A和端口B仍作为数据的输入或输出口,端口C作为联络控制信号,被分成两部分,一部分作为端口A和端口B的联络信号,另一部分仍可作为基本的输入输出口。

1)方式1输入 方式1输入时序

2)方式1输出 方式1输出时序

3.方式2—双向选通输入输出 端口A的方式2可使8255A与外设进行双向通信,既能发送数据,又能接收数据。 可采用查询方式和中断方式进行传输。

当端A口方式2和端口B方式1时,端口C各位的功能如图所示,PC7~PC3作为端口A的联络信号,PC2~PC0作为端口B的联络信号。 当端口A工作于方式2,端口B工作于方式0时,PC7~PC3作为端口A的联络信号,PC2~PC0可工作于方式0。

7.2.3 8255A的编程 1) 8255工作方式控制字(写,A1A0=11 ) D7 A组方式 00 方式0 01 方式1 1* 方式2 D6 D5 D4 D3 D2 D1 D0 A组方式 00 方式0 01 方式1 1* 方式2 端口A 0 输出 1 输入 端口C上部 B组方式 0 方式0 1 方式1 端口B 0 输出 1 输入 端口C下部

2)端口C置位/复位控制字(写,A1A0=11 )

【例7-1】在8086系统中,设8255A的A口输出,B口输入,PC1置位,PC2复位。已知:8255端口地址为60H~63H,试编程对8255A进行初始化。 解:根据题意,8255工作方式控制字为: 8255A初始化程序如下: MOV AL,82H ;方式控制字10000010B=82H OUT 63H,AL ;将控制字送入8255A控制端口,即控制寄存器中 MOV AL,03H ;C口置位控制字00000011B=03H,设置PC1=1 MOV AL,04H ;C口置位控制字00000100B=04H,设置PC2=0

7.2.4 8255A 的应用举例 【例7-2】设8255A的A口和B口工作在方式0,A口作为输入端口,接有8个开关;B口为输出端口,接有8个发光二极管。系统硬件电路如图所示,不断扫描开关Ki,当开关K0闭合时,点亮LED0、LED2、LED4、LED6,其它LED暗;当开关K1闭合时,点亮LED1、LED3、LED5、LED7,其它LED暗;当开关K0和K1同时闭合时退出。设8255A端口A、端口B、端口C及控制端口的地址分别为200H~203H。试编写程序。

解:首先确定工作方式控制字。根据题意,A口为输入端口,B口输出端口,均工作在方式0下,端口C没使用,设没有用到的控制字中对应位设置为0,所以8255A的控制字为: CODE SEGMENT ASSUME CS:CODE START:MOV AL,90H ; 8255初始化 MOV DX,203H OUT DX,AL AGAIN:MOV DX,200H IN AL,DX TEST AL,03H ; 检测K0 K1 JZ EXIT TEST AL,01H ;检测K0 JZ DISP_0

TEST AL,02H ;检测K1 JZ DISP_1 JMP AGAIN DIAP_0: MOV AL,55H ;偶位上LED亮,奇位上LED暗 MOV DX,201H OUT DX,AL DIAP_1: MOV AL,0AAH ;奇位上LED亮,偶位上LED暗 EXIT: MOV AH,4CH INT 21H CODE ENDS END START

【例7-3】硬件电路连线如图所示,8086CPU通过8255A同键盘相连,试编程序,扫描键盘按键,将按键对应的数值显示在七段LED上。设8255A的端口地址为80H~83H。

解:通过硬件电路图,可以判断出8255A口工作于方式0输出,B口未用,C口低4位输入,C口高4位输出,工作方式控制字是: 共阴极LED七段数码管显示的字符0~F的段码如表7-1所示: 显示字符 1 2 3 4 5 6 7 8 9 A B C D E F 段码(H) 3F 06 5B 4F 66 6D 7D 07 7F 6F 77 7C 39 5E 79 71

程序流程如图

A_PORT EQU 80H B_PORT EQU 81H C_PORT EQU 82H CT_PORT EQU 83H DATA SEGMENT TAB1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;定义段码表 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS:CODE START: MOV AL,10000001B MOV DX,CT_PORT OUT DX,AL MOV DX,C_PORT MOV AL,0 ;输出列信号

NO_KEY: MOV DX,C_PORT IN AL,DX AND AL,0FH CMP AL,0FH JZ NO_KEY CALL DELAY10MS JZ NO_KEY MOV BL,0 ;置初始列值为0 MOV CH,0EFH LOOP1: MOV AL,CH MOV DX,C_PORT OUT DX,AL

IN AL,DX ;读取行信号 PUSH BX MOV BH,0 ;设置初始行值0 MOV CX,4 LOOP3: SHR AL,1 JNC LOOP2 ;该行有按键 INC BH LOOP LOOP3 ROL CH,1 CMP CH,0FEH JNZ LOOP1 JMP NO_KEY

LOOP2: MOV AH,BH POP BX ;弹出列值到BL MOV BH,AH ;BH中是行,BL中是列 LOOP4: SHL BH,1 ;*4获得行值 SHL BH,1 ADD BH,DL ;键值=值行+列值 MOV AL,BH ;键值换码后显示到数码管 LEA BX,TAB1 XLAT MOV DX,A_PORT OUT DX,AL CALL DELAY10MS MOV AH,4CH INT 21H

DELAY10MS PROC NEAR ;延时子程序 PUSH BX ;现场保护 PUSH CX MOV BX,10 WAIT0: MOV CX,2801 ;内循环次数,大小由单位时间定 WAIT1: LOOP WAIT1 ;延时10MS DEC BX JNZ WAIT0 POP CX ;现场恢复 POP BX RET DELAY10MS ENDP CODE ENDS END START

7.3 可编程定时器/计数器8253 8253是Intel公司生产的通用可编程定时/计数器,定时时间与计数次数由用户事先设定。 8253的读/写操作对系统时钟没有特殊的要求,可应用于由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。

7.3.1 8253的内部结构及引脚功能 1.8253的内部结构 每片8253有3个独立的16位计数通道,每个计数通道最高计数速率可达2.6MHZ。每个计数器可编程设定6种工作方式,使用时可以根据需要选择其中的一种工作方式。每个计数通道可按二进制或十进制来计数。 定时和计数在工作原理上是相同的,都是对一个输入脉冲进行计数。

2. 8253的引脚功能 8253采用双列直插式封装,有24个引脚。 A1 A0 端口 计数器0 1 计数器1 计数器2 控制寄存器 × 计数器0 1 计数器1 计数器2 控制寄存器 × 未选中

7.3.2 8253的工作方式 8253的每个计数器都有6种工作方式:方式0~方式5。 这6种工作方式的不同点是: 输出波形不同 启动计数器的触发方式不同 计数过程中GATE信号对计数过程的影响不同

1.方式0—低电平输出 8253完成计数功能,且计数器只计一遍。控制字写入后,输出端OUT变为低电平。计数初值写入后,下一个CLK脉冲的下降沿,计数初值寄存器内容装入减1计数寄存器,开始计数,输出端OUT维持低电平。 当计数值减到0时,OUT输出端变为高电平,此信号可作为中断请求信号,并可保持到重新写入新的控制字或新的计数值为止。 计数过程中,若GATE信号变为低电平,暂停计数,减1计数寄存器值保持不变;若GATE信号重新变高,则计数器从暂停值开始继续计数;若重新写入新的计数初值,则在下一个CLK脉冲的下降沿,减1计数寄存器以新的计数初值重新开始计数。

8253方式0的时序波形图

2.方式1—低电平输出 方式1是硬件触发单稳态方式,输出单个负脉冲信号,脉冲的宽度可通过编程来设定。 写入控制字后,输出端OUT变为高电平,并保持。写入计数初值后,在GATE信号的上升沿之后的下一个CLK脉冲的下降沿,计数初值装入减1计数寄存器,同时OUT端变为低电平,开始计数。 当计数值减到0时,输出端OUT变为高电平。 计数过程中,如果CPU又送来新的计数初值,不影响当前计数过程。等到计数器计数到0,OUT端输出高电平且出现新的一次GATE信号的触发时,才会将新的计数初值装入,并计数。 如果在输出端OUT输出低电平期间,又来一个门控信号上升沿触发,则在下一个CLK脉冲的下降沿,将计数初值寄存器内容重新装入减1计数寄存器,并计数。

8253方式1的时序波形图

3.方式2—周期性负脉冲输出 方式2可产生连续的负脉冲信号,可用作频率发生器。负脉冲的宽度为一个时钟周期。 写入控制字后,输出端OUT变为高电平。若GATE为高电平,那么写入计数初值后,在下一个CLK的下降沿计数初值寄存器内容装入减1计数寄存器,开始减1计数。当减1计数寄存器的值为1时,OUT端输出低电平,经过一个CLK时钟周期,OUT端输出高电平,并自动开始一个新的计数过程。 在计数过程中,如果减1计数寄存器未减到1时GATE信号由高变低,则停止计数。但当GATE由低变高时,则重新将计数初值寄存器内容装入减1计数寄存器,并重新开始计数。 如果GATE信号保持高电平时,在计数过程中重新写入计数初值候,要等正在计数的一轮结束并输出一个CLK周期的负脉冲后,才以新的初值进行计数。

8253方式2的时序波形图

4.方式3—周期性方波输出 方式3可产生连续的方波信号,可用作方波发生器。计数初值为偶数时,输出对称方波;计数初值为奇数时,输出不对称方波。 控制字写入后,输出端OUT输出高电平。当写入计数初值后,在下一个CLK的下降沿,计数初值装入减1计数寄存器,开始计数。计数到一半时,输出端OUT变为低电平。此时,继续计数,到0时,OUT端变为高电平。之后,自动开始一个新的计数过程。 计数过程中,若GATE变为低电平,则停止计数;当GATE由低变高时,则重新启动计数过程。如果在输出端OUT为低电平时,GATE变为低电平,则减1计数器停止,同时,输出端OUT立即变为高电平。在GATE又变成高电平后的下一个时钟脉冲的下降沿,减1计数器重新得到计数初值,并计数。 计数过程中,如果写入新的计数值,不影响当前输出周期。但如果在写入新的计数值后,又受到门控上升沿的触发,则结束当前输出周期,而在下一个时钟脉冲的下降沿,减1计数器重新得到计数初值,并计数。

8253方式3的时序波形图

5.方式4—软件触发的单次负脉冲输出 方式4是软件触发的选通方式。采用方式4可产生单个负脉冲信号,负脉冲宽度为一个时钟周期。 写入控制字后,输出端OUT变为高电平,若GATE为高电平,则在写入计数初值后下一个CLK的下降沿计数初值寄存器内容装入减1计数寄存器,开始减1计数。当减1计数寄存器的值为0时,输出端OUT变为低电平,经过一个CLK时钟周期,输出端OUT变为高电平。 如果在计数时,又写入新的计数值,则在下一个CLK的下降沿此计数初值被写入减1计数寄存器,并以新的计数值作减1计数。

8253方式4的时序波形图

5.方式5—硬件触发的单次负脉冲输出 方式5是硬软件触发的选通方式。采用方式5可产生单个负脉冲信号,负脉冲宽度为一个时钟周期。 方式5的计数过程由GATE的上升沿触发。当控制字写入后,输出端OUT输出高电平,并保持。写入计数初值后,只有在GATE信号的上升沿之后的下一个CLK脉冲的下降沿,计数初值装入减1计数寄存器,开始计数。当计数到0时,输出端OUT变为低电平,并持续一个CLK周期,然后自动变为高电平。 计数过程中,若GATE端又来一个上升沿触发,则在下一个CLK脉冲的下降沿,减1计数寄存器将重新获得计数初值,并计数。 计数过程中,若写入新的计数值,但没有触发脉冲,则当前输出周期不受影响,当前周期结束后,在再次触发的情况下,才将按新的计数初值开始计数;若写入新的计数值,并在当前周期结束前又受到触发,则在下一个CLK脉冲的下降沿,减1计数寄存器将获得新的计数初值,并计数。

8253方式5的时序波形图

7.3.3 8253的初始化 1. 8253方式控制字

8253的控制寄存器和3个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。 2.8253初始化编程 1)8253初始化编程原则 8253的控制寄存器和3个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。 8253在初始化编程时必须遵守两条原则: 在对某个计数器设置初值之前,必须先写入控制字。 在设置计数初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。

2)8253的编程命令 8253的编程命令有两类: 一类是写入命令,包括设置控制字、设置计数器的初始值命令和锁存命令。 另一类是读出命令,用来读取计数器的当前值。

3)8253的初始化编程 8253初始化编程步骤是: 先写控制字到8253的控制端口。 再写计数器初值到相应的计数器端口。 【例7-5】在8086系统中,设8253的计数器0工作在方式2,二进制计数,计数初值为2000,8253的计数器1工作在方式3,BCD码计数,计数初值为100,8253端口地址为40H~43H。试编写初始化程序。

解:8253计数器0的初始化程序如下: MOV AL,34H ;方式控制字00110100B=34H OUT 63H,AL ;将控制字送入8253A控制端口63H MOV AX,2000 ;初值送AX寄存器 OUT 60H,AL ;将初值的低8位输出计数通道0端口60H MOV AL,AH ;初值的高8位送AL寄存器 OUT 60H,AL ;将将初值的高8位输出计数通道0端口60H 8253计数器1的初始化程序如下: MOV AL,57H ;方式控制字01010111B=57H MOV AL,100H ;初值100送AL寄存器,因为BCD码计数,要送100H OUT 61H,AL ;将初值的低8位输出计数通道1端口61H

7.3.4 8253应用举例 【例7-6】硬件图如图所示,。要求将一输入频率为2MHz信号,利用8253做一个秒信号发生器,其输出接一发光二极管,以0.5秒点亮,0.5秒熄灭的方式闪烁指示。设8253的通道地址为400H~403H。

MOV AL,34H ;或36H MOV DX,403H OUT DX,AL ;写计数器0方式控制字 MOV DX,400H MOV AX,20000 OUT DX,AL ;写计数器0计数初值低8位 MOV AL,AH OUT DX,AL ;写计数器0计数初值高8位 MOV AL,56H OUT DX,AL ;写计数器1方式控制字 MOV DX,401H MOV AL,100 OUT DX,AL ;写计数器1计数初值低8位

【例7-8】设计一个程序,PC机使扬声器发出500Hz频率的声音,按下ESC键声音停止。

解:PC机的发声系统以8253计数器2为核心进行控制。 CLK2的输入频率1 解:PC机的发声系统以8253计数器2为核心进行控制。 CLK2的输入频率1.193MHz,改变计数器初值可以由OUT2得到不同频率的方波输出。要产生500Hz的频率信号,计数初值这样计算: N=1.193MHz/500Hz=2386 发声系统受8255芯片B口的两个输出端线PB0和PB1的控制。PB0为1,使GATE2为1,计数器2能正常计数。PB1为1,打开输出控制门。

CODE SEGMENT ASSUME CS:CODE START: MOV AL,0B0H ;8253控制字=10110110B OUT 43H,AL ;写8253计数器2的方式控制字 MOV AX, 2386 OUT 42H, AL MOV AL, AH OUT 42, AL ;按先低8位后高8位的顺序写入 ;计数器2的计数值 NEXT: MOV AH, 01H ;单字符输入DOS功能调用 INT 21H CMP AL,1BH ;ESC键的ASCII码=1BH JZ EXIT

MOV AL,03H OUT 61H,AL ;置GATE2信号为高电平 JMP NEXT EXIT: IN AL, 61H AND AL, 0FCH OUT 61H, AL MOV AH, 4CH INT 21H CODE ENDS END START

7.4 可编程串行通信接口芯片8251A 计算机传送数据有两种方式:一种是并行通信,一种是串行通信。

并行通信一般是8位以上的数据一起传送,具体是多少位要根据设备的线宽来决定。由于并行通信方式使用的信号线较多,一般用在短距离的数据量大场合。 串行通信是指利用一条传输线将数据一位一位地按顺序分时传输。一般用于长距离的数据偏传送。

7.4.1 串行数据传送方式 单工方式 半双工方式 全双工方式

7.4.2 传输速率和传送距离 1.传输速率 在并行通信中,传输速率用每秒传输的字节数表示,单位是:Bps。 常见的标准波特率有:110bps、1200bps、9600bps和115200bps。

7.4.2 传输速率和传送距离 2.发送/接收时钟 在发送数据时,发送器在发送时钟的有效沿作用下将移位寄存器的数据按位移位串行输出; 在接收数据时,接收器在接收时钟的有效沿作用下对接收数据按位采样,并按位串行移入移位寄存器。 发送/接收时钟是对数据信号进行同步的,其频率将直接影响设备发送/接收数据的速度。发送/接收时钟频率一般是发送/接收波特率的n倍,n称为波特率因子,一般取1、16、32或64。

发送时钟与波特率时序

7.4.2 传输速率和传送距离 3.传输距离与传输速率的关系 串行通信中,传输距离随着传输速率的增加而减小。

7.4.3 同步串行通信与异步串行通信 1.异步串行通信 异步串行通信中的异步是指发送端和接收端不使用共同的时钟,也不在数据中传送同步信号,但接收方与发送方之间必须约定传送数据的帧格式和波特率。 在异步串行通信中,通信双方以一个字符(含附加位)作为数据传输单位(一个数据帧),而且发送方传送字符的时间是不定的。在传输一个字符时,总是以起始位(1位,低电平)开始,以停止位(1、1.5或2位,高电平)结束。为了使数据可靠传送,还可包含奇偶校验位。

异步串行通信中数据的帧格式

【例7-9】设数据帧为1位起始位、7位数据位、1位奇偶校验位、1位终止位,传送的波特率为9600bps。用7位数据位表示一个字符,求最高字符传送速率。 解:∵一帧数据所需要的位数=1+7+1+1=10 ∴最高字符传送速率=9600/10=960字符/秒

7.4.3 同步串行通信与异步串行通信 2.同步串行通信 在异步串行通信中数据的每一帧都需要附加起始位和停止位,因而降低了传送有效数据的效率。对于快速传送大量数据的场合,为了提高数传的效率,一般采用同步串行传送方式。 同步传送时,无需起始位、停止位。每一帧包含较多的数据,在每一帧开始处使用1-2个同步字符以表示一帧的开始。 同步传送要求对传送的每一位在收发两端保持严格同步,发送、接收端可使用同一时钟源以保证同步。

有2个同步字符的同步串行通信的数据格式

7.4.4 可编程串行通信接口芯片8251A 1.8251A的基本功能 能以同步方式或异步方式进行工作。 工作于同步方式时,每个字符可定义为5、6、7或8位,可以选择进行奇校验、偶校验或不校验。内部能自动检测同步字符实现内同步或通过外部电路获得外同步,波特率为0~64K。 工作于异步方式时,每个字符可定义为5、6、7或8位,用1位作为奇偶校验(可选择)。时钟速率可用软件定义为通信波特率的1、16或64倍。能自动为每个被输出的数据增加1个起始位,并能根据软件编程为每个输出数据增加1个、1.5个或2个停止位。异步方式下,波特率为0~19200bps。

8251A能进行出错检测,具有奇偶、溢出和帧错误等检测电路。 具有独立的接收器和发送器,因此,能够以单工、半双工或全双工的方式进行通信。并且提供一些基本控制信号,可以方便地与调制解调器连接。

7.4.4 可编程串行通信接口芯片8251A 2.8251A的内部结构 8251A主要由5个功能模块组成,包括数据总线缓冲器、接收器、发送器、读/写控制逻辑和调制解调器控制电路。8251A内部通过内部数据总线实现相互之间数据传送。

8251A读/写操作功能

7.4.4 可编程串行通信接口芯片8251A 3.8251A的引脚功能 8251A采用28个引脚双列直插式封装。

7.4.4 可编程串行通信接口芯片8251A 端 口 数据寄存器 1 方式、命令、状态寄存器 × 未选中

7.4.4 可编程串行通信接口芯片8251A 5.8251A的命令字和状态字 1)方式选择命令字

2)工作命令字

3)状态字

7.4.4 可编程串行通信接口芯片8251A 6.8251A的初始化编程 1)初始化编程步骤 第一步:芯片复位后,第一个写入奇地址端口的是方式选择命令字。约定双方的通信方式,数据格式及传输速率等参数。 第二步:如果方式选择命令字规定了8251A工作在同步方式,那么,接下来必须向奇地址端口写入规定的1个或2个同步字符。 第三步:只要不是复位命令,不论同步方式还是异步方式,接下来还需向奇地址端口写入工作命令字。

2)复位命令 要改变8251A的工作方式,必须先复位,再重新设置方式。8251A有两种复位方式:硬件复位和软件复位。 软件复位是编程中常采用的方法。软件复位的步骤是: (1)向控制/状态端口连续写入3个0; (2)写入控制字40H。

3)8251A初始化编程 异步方式下初始化编程 同步方式下初始化编程 【例】8251A工作在异步方式,波特率系数为16,数据长度为7位,偶校验,2个停止位,则方式选择命令字为:11111010B=0FAH。现要求使8251A复位出错标志、使请求发送信号有效、使数据终端准备好信号有效、发送允许TxEN有效、接收允许RxE有效,工作命令字应为:00110111B=37H。假设8251A的两个端口地址分别为80H和81H,初始化编程如下: MOV AL, 0FAH OUT 81H, AL ;设置方式选择命令字 MOV AL, 37H OUT 81H, AL ;设置命令字

【例】8251A工作在同步方式,使用两个同步字符(内同步)、奇校验、每个字符8位,则方式选择命令字应为:1CH。现要求使8251A复位错标志,允许发送和接收、使CPU己难备好且请求发送,启动搜索同步字符,则工作命令字应该是:0B7H。又设第一个同步字符为0AAH,第二个同步字符为55H。还使用上例的8251A芯片,这样要先用内部复位命令40H,使8251A复位后,再写入方式选择控制字。具体程序段如下: MOV AL, 40H OUT 81H, AL ;复位8251A MOV AL, 1CH OUT 81H, AL ;设置方式选择字 MOV AL, 0AAH OUT 81H, AL ;写入第一个同步字符 MOV AL, 55H OUT 81H, AL ;写入第二个同步字符 MOV AL, 0B7H OUT 81H, AL ;设置命令字

3)8251A的应用举例 【例7-10】试编写程序段,用异步串行通信方式输出STRING开始字符串‘Receiver ready $’,$字符串的结束标记。设8251A数据端口地址为90H,方式命令状态端口地址为91H。 MOV AL,0 OUT 91H, AL MOV AL,40H OUT 91H, AL ;写入复位命令 MOV AL,7EH ;一个停止位,偶校验,8个数据位 ;波特率因子16 OUT 91H, AL ;写入方式选择命令字

MOV BX, OFFSET STRING ;BX指向缓冲区首址 WAIT:IN AL, 81H ;读状态字 TEST AL, 1 ;测试TxRDY位 JZ WAIT ;为0,未准备好 等待 MOV AL ,[BX] ;取一个字符 CMP AL, ’ $ ’ ;判断是否是结束标志 JE EXIT OUT 90H,AL ;输出字符 JMP WAIT EXIT: …… ;结束

【例7-11】试编写程序段,用异步串行输入方式输入1000个数据,存放到内存BUF开始的单元中。要求使8251A工作在异步方式,波特率系数为16,数据长度为7位,偶校验,2个停止位。设8251的端口地址为80H和81H。 MOV AL,0FAH OUT 81H, AL ;写入方式选择字 MOV AL,37H OUT 81H, AL ;写入工作命令字 LEA BX, BUF ;BX指向缓冲区首址 MOV CX, 1000 ;设置计数器初值 WAIT0:IN AL, 81H ;读状态字 TEST AL, 2 ;测RxRDY位 JZ WAIT0 ;未收到字符等待

IN AL, 80H ;从数据口读入数据 MOV [BX],AL ;将字符保存到缓冲区 INC BX ;缓冲区指针下移一个单元 IN AL,81H ;读状态字 TEST AL, 38H ;判断有无三种错误 JNZ ERROR ;有错,则转出错处理程序 LOOP WAIT0 ;没错,判是否结束循环 JMP EXIT ;结束 ERROR: CALL ERR_PRO ;转入错误处理程序 EXIT: ……

【例7-12】编写8251异步模式下的接收和发送程序,设端口地址:80H,81H,波特率因子16,1个起始位,1个停止位,无奇偶校验,每字符数据8位,设置数据传输的波特率为9600bps。

(1)8253的初始化: 工作方式:选择方式3。 8253输出频率:fout=9600. 16=153600=153 (1)8253的初始化: 工作方式:选择方式3。 8253输出频率:fout=9600*16=153600=153.6K。 选用输入频率:CLK=1.8432MHz,即fin=1.8432MHz 计数初值:N=fin/ fout =12 (2)8251初始化设置 先对825lA软件复位,一般采用先送3个0, 再送1个40H的方法,这也是8251A的编程约定,40H可以看成是使8251A执行复位操作的实际代码。

MOV AL,00H ;复位8251A OUT 81H,AL CALL DELAY MOV AL,40H CALL DELAY ;等待8251A复位 MOV AL,4EH ;设8251A方式选择命令字 MOV AL,37H ;设8251A工作命令字

(3)数据发送子程序: 设要发送的数据通过DL寄存器器传递。源程序如下: SENDATA PROC CTXR1: IN AL,81H ;读入状态字 AND AL,01H ;查TXRDY JZ CTXR1 MOV AL,DL OUT 80H,AL ;发送 RET SENDATA ENDP

(4)数据接收子程序: RECDATA PROC ;AL存接收到的数据 CRXD1: IN AL,82H ;输入状态字 AND AL 02H ;查RXRDY? JZ CRXD1 IN AL, 80H ;接收 RET RECDATA ENDP