⑹ 计数过程结束
(1).设定工作方式 (2)设定计数初值(4)计数值送入计数器(5)计数过程 (6)计数结束
编程(详见P221):
00计数器0 00计数器锁存命令 000方式0 0 二进制 01计数器1 01只读写低字节 001方式1 1十进制 10计数器2 10只读写高字节 x10方式2 x11方式3 11非法 11先低后高 100 方式4 101方式5 定时中断:mov al,36h ;计数器0为方式3,采用二进制计数, ;先低后高写入计数值 out 43h,al ;写入方式控制字 mov al,0 ;计数值为0 out 40h,al ;写入低字节计数值 out 40h,al ;写入高字节计数值 定时刷新:mov al,54h ;计数器1为方式2,采用二进制计数,只写低8位计数值 out 43h,al ;写入方式控制字 mov al,18 ;计数初值为18 out 41h,al ;写入计数值 注意:编程例子见书P223起 第十一章。8255A: 并行数据传输方式
? 以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个
字长的数据
? 适合于外部设备与微机之间进行近距离、大量和快速的信息交换
11
外设数据端口:
? 端口A:PA0~PA7 A组,支持工作方式0、1、2 ? 端口B:PB0~PB7 B组,支持工作方式0、1 ? 端口C:PC0~PC7
仅支持工作方式0 A组控制高4位PC4~PC7 B组控制低4位PC0~PC3 ? 端口A:PA0~PA7 常作数据端口,功能最强大 ? 端口B:PB0~PB7 常作数据端口
? 端口C:PC0~PC7 可作数据、状态和控制端口 分两个4位,每位可独
立操作 控制最灵活,最难掌握
2. 与处理器接口 D0 ~ D7数据线 A0 ~ A1地址线 RD*读信号 WR*写信号 CS*片选信号 RESET复位信号 工作方式:
方式0输入时序 方式0输出时序
方式1输入引脚图:A端口 B端口
12
? STB*——选通信号,低电平有效。由外设提供的输入信号,当其有效时,
将输入设备送来的数据锁存至8255A的输入锁存器
? IBF——输入缓冲器满信号,高电平有效。8255A输出的联络信号。当其
有效时,表示数据已锁存在输入锁存器
? INTR——中断请求信号,高电平有效。8255A输出的信号,可用于向CPU
提出中断请求,要求CPU读取外设数据
方式1输入时序 方式1输出时序
输出引脚图:A端口: B端口
方式1输出联络信号
OBF*——输出缓冲器满信号,低有效。8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走
ACK*——响应信号,低有效。外设的响应信号,指示8255A的端口数据已由外设接受
INTR——中断请求信号,高有效。当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据. 8255A的编程见P250 写入方式控制字:示例
要求:A端口:方式1输入。C端口上半部:输出,C口下半部:输入B端口:方式0输出
方式控制字:10110001B或B1H 初始化的程序段:
mov dx,0fffeh ;假设控制端口为FFFEH mov al,0b1h ;方式控制字 out dx,al ;送到控制端口 2. 读写数据端口
初始化编程后:当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据。当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送
13
给输出设备
8255A具有锁存输出数据的能力
对输出方式的端口同样可以输入。不是读取外设数据。读取的是上次CPU给外设的数据
2. 读写数据端口:
示例利用8255A的输出锁存能力,可实现按位输出控制 对输出端口B的PB7位置位的程序段: mov dx,0fffah ;B端口假设为FFFAH in al,dx ;读出B端口原输出内容 or al,80h ;使PB7=1 out dx,al ;输出新的内容 3. 读写端口C:归纳1
C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出
在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组 3. 读写端口C:归纳2
当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用 其余引脚仍可设定工作在方式0 3. 读写端口C:归纳3
对端口C的数据输出有两种办法
通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效
通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器 系统的初始化编程:
mov al,10011001b ;方式控制字99H out 63h,al
8255A方式1与打印机接口时序配合
mov dx,0fffeh mov al,0a0h out dx,al mov al,0ch
;使INTEA(PC6)为0,禁止中断 out dx,al ??
mov cx,counter ;打印字节数送CX
14
mov bx,offset buffer ;取字符串首地址 call prints ;调用打印子程序 prints proc
push ax ;保护寄存器 push dx
print1: mov al,[bx] ;取一个数据 mov dx,0fff8h
out dx,al ;从端口A输出 mov dx,0fffch
print2: in al,dx test al,80h
;检测(PC7)为1否? jz print2
;为0,说明打印机没有响应,继续检测 inc bx
;为1,说明打印机已接受数据 loop print1
;准备取下一个数据输出
pop dx ;打印结束,恢复寄存器 pop ax ret ;返回 prints endp
第十二章:
串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传送的方式 串行通信的优势:用于通信的线路少,因而在远距离通信时可以极大地降低成本 串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送 ? 串行通信时的数据、控制和状态信息都使用同一根信号线传送 ? 收发双方必须遵守共同的通信协议(通信规程),才能解决传送速率、信
息格式、位同步、字符同步、数据校验等问题 ? 串行异步通信以字符为单位进行传输,其通信协议是起止式异步通信协议 ? 数据传输速率也称比特率(Bit Rate)
? 每秒传输的二进制位数bps
? 字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒
数
? 当进行二进制数码传输,且每位时间长度相等时,比特率还等于波特率
(Baud Rate)
2. 同步通信
? 以一个数据块(帧)为传输单位,每个数据块附加1个或2个同步字符,
最后以校验字符结束
? 同步通信的数据传输效率和传输速率较高,但硬件电路比较复杂 ? 串行同步通信主要应用在网络当中 ? 最常使用高级数据链路控制协议HDLC
15