Upload
dorjan
View
162
Download
0
Embed Size (px)
DESCRIPTION
吉林大学工学部计算机硬件基础课程 微机原理与接口技术. 侯彦利. 第 7 章 可编程接口芯片. 可编程定时 / 计数器 8253 可编程并行接口 8255A 串行通讯基本概念. 7.1 定时 / 计数器 8253 芯片. 常用定时方法: 软件定时:采用软件编程来实现定时和计数要求 , 通用灵活 , 但占用 CPU 时间; 硬件定时:采用专用的硬件电路来实现。 定时 / 计数器从计数方式上分为加法计数器和减法计数器。 计数器启动后与 CPU 并行工作,不占 CPU 时间。. CLK 0. D 7. ~. D 0. GATE 0. OUT 0. - PowerPoint PPT Presentation
Citation preview
侯彦利
吉林大学工学部计算机硬件基础课程微机原理与接口技术 1
2
可编程定时 / 计数器 8253可编程并行接口 8255A串行通讯基本概念
第 7 章 可编程接口芯片
3
7.1 定时 / 计数器 8253 芯片常用定时方法:1. 软件定时:采用软件编程来实现定时和计数要求 , 通用灵活 , 但占用 CPU 时间;
2. 硬件定时:采用专用的硬件电路来实现。
定时 / 计数器从计数方式上分为加法计数器和减法计数器。
计数器启动后与 CPU 并行工作,不占 CPU 时间。
4
D0D7~ 数 据
总 线缓冲器
读 / 写逻 辑
控 制寄存器
计数器0
计数器1
计数器2
片内总线RD
WRA0A1
CS
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
可编程定时器 8253 的内部结构图
5
8253 的功能: 具有三个功能完全相同的独立的 16 位减法计数器;
每个计数器都包括一个 16 位的初值寄存器、一个计数执行单元和一个输出锁存器;
每个计数器的计数时钟频率最高为: 2MHZ 每个计数器可以按十进制数或二进制数预置初值; 每个计数器有六种工作方式,可通过编程设定或改
变; 每个计数器的计数定时值,可由 CPU 随时读取;
初值寄存器 计数执行单元输出锁存器
CLK
GATE
OUT
6
D0~D7 : 8 位双向数据线;CS :芯片选择;RD、WR :读写控制信号;A1 ,A0 :地址线;
A1A0=00 计数器 0
A1A0=01 计数器 1
A1A0=10 计数器 2
A1A0=11 控制寄存器CLK :计数器的时钟信号输入端 , 最高计数频率 2MHz ;GATE :门控信号;控制计数器的启动和停止;OUT :计数器输出信号;
8253 的引线及功能
7
8253 的工作原理
当置入初值后,计数执行单元开始对输入脉冲 CLK进行减 1 计数,减到 0 时从 OUT 端输出一个信号;
整个过程可以重复进行;
初值寄存器 计数执行单元
输出锁存器
CLK
GATE
OUT
8
计数器的启动的方法软启动:由程序指令启动。
MOV AX, 500 OUT 80H, AL
MOV AL, AH OUT 80H, AL
如果 GATE 为高电平,就启动计数;
硬件启动:由外部信号启动。写入初值后并不启动计数,门控信号 GATE 由低变高电平后,在 CLK 的下降沿开始计数;
9
7.1.2 计数器的工作方式
8253 一共有 6 种工作方式;在多数工作方式下,计数器每启动一次只工作一个周
期;有两种工作方式可以进行自动重复计数;
MOV AL, 0B4HOUT 43H, AL ; 控制字送入控制寄存器MOV AX, 800OUT 42H, AL ; 计数初值低 8 位送入计数器MOV AL, AHOUT 42H, AL ; 计数初值高 8 位送入计数器
10
方式 0 :计数结束中断软件启动、不自动重复计数方式;计数结束后, OUT 端输出
为高电平,可以作为中断请求信号使用;
1. 只计数一个周期;2. 在计数过程中 GATE 变为低电平,则暂停计数;3. 在计数过程中,可以随时修改计数初值;
WR
CLK
GATE
OUT
CW N=4
4 3 2 1 0
11
注意, 8253 所有的 6 个工作方式都有下列共同点:⑴ 控制字写入计数器时, OUT 端进入初始状态,不同的工作
方式 OUT 端初始状态不一定相同。⑵ 计数初值写入计数器之后,暂存在初值寄存器中,要经过
一个时钟周期的上升沿和下降沿,计数初值才进入计数执行单元,开始计数。
⑶ 通常在每个时钟脉冲的上升沿,采样门控信号 GATE 。不同的工作方式下,门控信号的作用不同。
⑷ 在时钟脉冲的下降沿,计数器减 1 。(5) 计数初值也叫时间常数。
12
方式 1 :可重复触发的单稳态触发器
硬件启动、不自动重复的工作方式;当写入控制字后, OUT 端输出高电平。写入计数初值后计数
器并不开始工作;当 GATE 端由低到高触发后,在下一个CLK 脉冲的下降沿开始计数, OUT 端立刻由高到低,计数结束后 OUT 端输出高电平;
4 3 2 1 0
13
14
方式 1 的特点:GATE 的上升沿触发计数器,计数过程中 GATE 即
使变低也不影响计数;可重复触发;
OUT 端的负脉冲宽度 = 计数初值 N×TCLK
计数器 0CLK
GATEOUT
如果 CLK=2MHz ,则: fc= 2MHzTc=1/fc=0.5x10-6 ,如果时间常数 N=1000 ,则OUT 端的负脉冲宽度 =NxTc=1000x 0.5x10-6 =500us
4 3 2 1 0
15
方式 2 :频率发生器也叫分频器;可以软件启动,也可以硬件启动,计数器自动重
复工作。在写入控制字和计数初值期间 GATE 一直为高电平,则在下一个 CLK 开始计数,既软启动;
若写入计数初值时 GATE 为低电平,则要等到 GATE 由低到高时才启动,即硬件启动;
一旦计数器启动,计数器可以自动重复工作; GATE 为低,停止计数;
WR
CLK
GATE
OUT
CW N=3
3 2 1 3 2 1
16
写入控制字后, OUT 为高电平。如果 GATE 为高,写入初值后开始减 1 计数。当计数值减到 1 时, OUT 输出变为低电平,再经过一个 CLK 之后计数值减为 0 , OUT 变为高电平,接着自动重新装入初值, 计数器重复工作。
WR
CLK
GATE
OUT
CW N=3
3 2 1 3 2 1
17
18
【例题 7-2 】设 8253 的端口地址为: 40H~ 43H ,用计数器 2 作
频率发生器,二进制计数,输入脉冲信号为 2M ,计数初值为 800 ,输出脉冲信号的频率是多少?
控制字为: 10110100B=0B4H输出脉冲信号的频率为: FOUT=FCLK/
N=2X106/800=2500Hz
19
初始化程序:MOV AL, 0B4HOUT 43H, AL ; 控制字送入控制寄存器MOV AX, 800OUT 42H, AL ; 计数初值低 8 位送入计数器 2MOV AL, AHOUT 42H, AL ; 计数初值高 8 位送入计数器 2 ,计数器启
动。
20
可以软启动,也可以硬件启动,计数器自动重复工作;写入控制字后, OUT 为高电平。如果 GATE 为高,写入初值
后开始减 1 计数。当计数值减到 N/2 时, OUT 输出变为低电平,直到计数值减为 0 ;接着自动重新装入初值, OUT 变为高电平,计数器自动重复工作。
OUT 输出对称方波:
若计数初值为奇数, OUT 输出非对称方波:GATE 由高变低,停止计数。
N/2
( N+1) /2
方式 3 -方波发生器
21
【例题 7-3 】设 8253 的端口地址为: FCF8H~ FCFFH ,利用计
数器 1 作方波发生器,给定 CLK1为 2MHz ,要求产生频率为 1KHz 的方波, BCD码计数。编程初始化 8253 。
计数器 1 工作在方式 3: 01110111B分频系数: N= FCLK/ FOUT =2×106/1000=2000
22
程序设计如下:MOV DX, 0FCFBHMOV AL, 01110111B ;
OUT DX, AL MOV DX, 0FCF9H MOV AX, 2000H ;BCD码计数初值 OUT DX, AL ; 写入计数初值低字节 MOV AL, AH
OUT DX, AL ; 写入计数初值高字节,计数器启动
23
方式 4 :软件触发选通
软件启动、不自动重复计数方式;写入控制字后, OUT 为高电平,计数器装入初值后即启动计数,计数结束时 OUT 输出宽度为 TCLK 的负脉冲,如下:WR
CLK
GATE
OUT
CW N=4
4 3 2 1 0
GATE 为低,停止计数。4 3 2 1
24
方式 5 :硬件触发选通
硬件启动、不自动重复的工作方式。 GATE 的上升沿触发计数器;计数结束时,在OUT 端输出一个脉冲宽度为 TCLK 的负脉冲信号:
WR
CLK
GATE
OUT
CW N=5
4 3 2 1 0
GATE 的上升沿,将重新计数。
25
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
数制选择:0 二进制1 BCD码
方式选择:000 -方式 0001 -方式 1X10 -方式 2X11 -方式 3100 -方式 4101 -方式 5
计数初值长度选择:00 -计数器中的数据锁存于缓冲器01 -只读 / 写低 8 位 ,高 8 位默认为 010 -只读 / 写高 8 位,低 8 位默认为 011 -先读 / 写低 8 位 后读 / 写高 8 位
计数器选择:00 -选计数器001 -选计数器110 -选计数器211 -无效
8253 的控制字
二进制计数范围: 0000~ 65536H ;初值 =0000 ,为最大计数值十进制计数范围: 0000~ 10000 ;初值 =0000 ,为最大计数值;
26
例如:利用计数器 1 作频率发生器,给定 CLK1为 2MHz ,要求产生频率为 1KHz 的脉冲。计数器 1 工作在方式 2:
0111X100B
时间常数 N= fc/fo =2×106/(1×103)=2000
程序设计如下: MOV AL,01110100B ;
OUT 83H,AL MOV AX,2000 ;先写入低字节计数值, OUT 81H,AL MOV AL,AH ;后写入高字节计数值
OUT 81H,AL… ; OUT 输出脉冲周期为 1ms
27
例如:利用计数器 2 作脉冲发生器,给定 CLK2为1MHz ,要求产生周期为 20ms 的方波。
计数器 2 工作在方式 3 : 1011X110B 计数初值 N = fc/fo=1×106 ×20×10-
3=20000=4E20H 程序设计如下:
MOV AL,10110110B ;# 2 ,方式 3 ,二进制 OUT 83H,AL MOV AL,20H :先写入低字节计数值 OUT 82H,AL MOV AL,4EH ;后写入高字节计数值 OUT 82H,AL
… ; OUT 输出周期为 20ms 的方波
28
8253 与系统的连接
D0D7~
A1
A0
IOR
IOW
D0D7~
RD
WR
A1
A0
8253GATE0
GATE1
GATE2
OUT0
OUT1
OUT2
CLK0
CLK1
CLK2CS
&
&
≥1
G
G2A
G2B
CB
A
Y0
IOWIOR
A3
A4
A5
A6
A7
A2
A8
A9
A10
A11
A12
A13
A14
A15
系统总线信号
74LS138
29
7.1.3 8253 的应用
8253 的初始化编程,主要设置两方面的内容,一是写入控制字,二是写入计数初值。
控制字写入 8253 的控制寄存器。 3 个控制字可以连续写入控制寄存器。
写入计数初值时注意两个问题:一是 3 个计数初值应写入相应的计数器中,不可混乱,二是要符合控制字的要求。
30
【例 7-4 】8253 与计算机系统的连接如图所示,三个计数器使用情况如下:CNT0 :对外部事件计数,计满 100 次向 CPU 发出中断请求。CNT1 :产生 1kHz 方波。CNT2 :标准定时,定时时间为 1s 。
31
送8259的IR0端
中断请求信号
G
G2A
G2B
CBA
74LS138
&
≥1
D0 —D7
CSY7
IOW
A1
A3
A4
A5
A6
A7
A2
A8
A10
A11
A12
A13
A14
A9
A15
A0
IOR
A1
A0
D0 —D7
RDWR
&
8253
GATE0
GATE1+5V
CLK0
CLK1
OUT0
OUT1
GATE2
外部事件产生源
CLK2
OUT2
2MHz1KHz方波
32
计数器 0应设置为方式 0 ,完成计数功能。计数器 1应设置为方式 3, CLK1 输入的时钟脉冲频
率为 2MHz ,输出频率为 1kHz 的方波,周期为1ms ;计数器 1 的计数初值为 2000 。
计数器 2 设置为方式 0 ,完成定时功能,定时 1秒,利用 OUT2向 CPU 发出一次中断请求,其输入时钟频率为 1kHz ,计数初值应为 1000 。
8253 的端口地址为 01FC~01FFH 。
33
START : MOV DX, 01FFH MOV AL, 10H OUT DX, AL ; 计数器 0 工作在方式 0 MOV DX, 01FCH MOV AL, 100 OUT DX, AL ; 计数器 0 置初值 MOV DX, 01FFH MOV AL, 76H OUT DX, AL ; 计数器 1 工作在方式 3 MOV DX, 01FDH MOV AX, 2000 OUT DX, AL MOV AL, AH OUT DX, AL ; 计数器 1 置初值
34
MOV DX, 01FFH MOV AL, 0B0H OUT DX, AL ; 计数器 2 工作在方式 0 MOV DX, 01FEH MOV AX, 1000 OUT DX, AL MOV AL, AH OUT DX, AL ; 计数器 2 置初值
35
【例题 7-6 】在 IBM PC/XT 中定时器 / 计数器芯片 8253 ,其计数器 0( CNT0)工作在方式 3, GATE0固定为高电平, OUT0 作为中断请求信号接至 8259A 中断控制器的 IRQ0 ,作为定时中断,用于时钟的时间基准。
计数器 1 工作在方式 2, GATE1固定为高电平, OUT1 的输出作为定时(约 15us)信号,用于刷新动态 RAM ,在 2ms 内可以有 132 次刷新( 128 次是系统的最低要求)。
36
计数器 2 工作在方式 3 ,输出 1KHZ 的方波,作为扬声器的音频信号源, GATE2由 8255的 PB0 控制, OUT2与 8255的 PB1 相与,这样利用 8255的PB0、 PB1 同时为高电平的时间来控制喇叭发长音还是发短音。
三个计数器的输入时钟频率一样,为 F=1.19MHZ
37
74LS138
D0 —D7
CS
IOW
IOR
A1A0
D0 —D7
RD
WR
8253
GATE0
GATE1+5V
CLK0
CLK1
OUT0
OUT1
GATE2
送8259的IR0端
CLK2
OUT2
F
自8255PB0
&
自8255PB1
38
8253 的端口地址为 040H~ 043H, 8255 的端口地址为 60H~63H, ROM- BIOS对 8253 的编程如下:
计数器 0 用于定时中断:MOV AL, 00110110B ;OUT 43H, ALMOV AL, 0 ; 计数初值为 0000 ,即为最大。OUT 40H, ALOUT 40H, AL
39
计数器 1 用于动态 RAM 的刷新:MOV AL, 01010100BOUT 43H, ALMOV AL, 18 ; 计数初值为 18OUT 41H, AL
40
计数器 2 用于产生 1KHZ 的方波送至扬声器发声,声响子程序为 BEEP ,入口地址为 FFA08H :
BEEP PROC NEARMOV AL, 10110110B OUT 43H, ALMOV AX, 1331 ; 计数初值为 1331OUT 42H, ALMOV AL, AHOUT 42H, ALIN AL, 61H ; 读取 8255B 端口MOV AH, AL ; 存在 AH
41
OR AL, 03H OUT 61H, AL ; 输出至 8255的 B 端口,使扬声器
发声SUB CX, CX ; 设置延时参数
G7: LOOP G7MOV BH, 0DEC BX ;BL 的值为控制长短声, BL= 6(长), BL= 1
(短)JNZ G7MOV AL, AH ;恢复 8255B 端口值,停止发声OUT 61H, ALRET
BEEP ENDP
42
例 7-2写出 8253 的初始化程序。其 3 个计数器的时钟频率均为 2MHz ,计数器 0 在定时 100us 后产生中断请求;计数器 1 用于产生周期为 10us 的对称方波,计数器2每 1 ms产生一个负脉冲, BCD码计数。
计数器 0 :方式 0 ,时间常数 =100us/0.5us=200控制字为: 00110000B
计数器 1 :方式 3 ,输出方波信号,时间常数 =10us/0.5us=20控制字为: 01110110B
计数器 2 :方式 2 ,时间常数为 = 1ms/0.5us=2000控制字为: 10110101B
43
MOV DX,0FF07H ; MOV AL,30H
OUT DX,AL MOV AL,76H
OUT DX,AL MOV AL,0B5H OUT DX,AL MOV DX,0FF04H ; 计数器 0 MOV AX,200 ;先写入低字节计数值,
OUT DX,AL MOV AL,AH
OUT DX,AL
8253 的编程
44
MOV DX,0FF05H ; 计数器 1 MOV AX,20
OUT DX,AL MOV AL,AH
OUT DX,ALMOV DX,0FF06H ; 计数器 2 , BCD码
计数 MOV AL, 00H
OUT DX,AL MOV AL,20H
OUT DX,AL
45
8253 的编程
例 7-1 IBM-PC/XT 中使用了一片 8253 ,其 3 个计数器的输入时钟频率均为 1.19MHz 。
计数器 0 ( CNT0)为系统的电子钟提供时间基准,它的输出作为系统的中断源,接到 8259的 IR0 端。
计数器 1( CNT1)用于 DRAM 的定时刷新;计数器 2( CNT2)作为扬声器的音频信号源,输出
不同频率的方波信号。8253 的端口地址设为 40H, 41H, 42H,43H
46
分析计数器 0 :方式 3 ,输出方波信号,时间常数 =
65536 ,置入 0000H, 1.19MHz/65536=18.2Hz ,每秒产生 18.2 次中断请求;
计数器 1 :方式 2 ,分频系数为 18, OUT1 的输出脉冲频率为 1.19/18 ,即 DRAM 的定时刷新周期为15us ;
计数器 2 :方式 3 ,控制扬声器发出 1KHz 的声音,时间常数为: 1.19MHz/1KHz=1190=04A6H
47
CNT0:MOV AL,00110110BOUT 43H,AL
MOV AL,00H OUT 40H,AL OUT 40H,ALCNT1: MOV AL, 01010100B
OUT 43H,AL MOV AL,18 OUT 41H,ALCNT2: MOV AL, 10110110B
OUT 43H,AL MOV AL,A6H OUT 42H,AL MOV AL,04H
OUT 42H,AL…
48
7.2 可编程并行接口芯片 8255
CPU 与外设的数据交换,有并行和串行传送方式。接口可分为并行接口和串行接口。 8255A 是通用 8 位可编程并行输入输出接口芯片;
49
1234567891011121314151617181920
4039383736353433323130292827262524232221
PA3PA2PA1PA0RDCSGNDA0A1PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB2
PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VCCPB7PB6PB5PB4PB3
引脚及功能 :40 引脚 , 单一 +5V 电源,双列直插式;D7~ D0 :数据信号线;CS :片选信号;A0A1 口地址选择信号;WR :写信号;RD :读信号线;Reset 复位信号高电平有效;
8255 复位后,各端口都被预置为输入状态。PA0 ~ PA7 : 端口 A 的 8 条输入输出线PB0 ~ PB7 : 端口 B 的 8 条输入或输出线PC0 ~ PC7 : 端口 C 的 8 条输入或输出线,也可以用作控制信号的输出或状态信号的输入线;
50
内部结构
PA7 ~PA0
PC7 ~PC4
PB7 ~PB0
PC3 ~PC0
A 组端口 AA 组
控制电路缓
冲器
B 组控制电路
读 / 写控制逻辑
A 组端口 C高 4 位B 组
端口 C低 4 位
B 组端口 B
内部逻辑 外设接口
RDWRA1A0RESET
CS
D7 ~D0
I/O
I/O
I/O
I/O
51
端口地址8255A 包含 A 口、 B 口、 C 口三个独立的数据端口,
及一个控制端口。各端口地址如下:A1A0=00 A 口A1A0=01 B 口A1A0=10 C 口A1A0=11 控制端口
52
数据端口的特点A 口、 B 口、 C 口可以作为三个独立的数据输入输出
通道(端口)单独使用;也可以将 A 口、 B 口作为数据输入输出口, C 口输出
控制信号或输入状态信号;A口 ---- 具有数据输入输出功能,且能锁存;B口 ---- 具有数据输入输出功能,且能锁存;C口 ---- 具有数据输入输出功能,输出时可以锁存;C 口的主要特点是可以按位进行操作;可以分为 2个 4
位的端口;既可以传送数据也可以用来输出控制信号或输入状态信号;
53
8255 与系统的连接示意图
系统总线信号
IOR
IOW
A0
A1
D0~D7
A0
A2
A15
●
●
●
A1
D0~D7
CS
A口
B 口
C口
外
设
译码
WR
RD
54
8255 的工作方式
8255 有三种工作方式:方式 0 、方式 1 、方式 2 ;方式 0 ,基本输入输出方式适合于三个端口;作为输出口时它具有锁存功能,
作为输入时不能锁存;A 口、 C 口的高 4 位、 B 口以及 C 口的低四位可分别定义为输入或输出,各端口相互独立,故共有 16
种组合。C 口可以按位进行置位和复位。
55
方式 0 最适用于无条件传送方式;也能用于查询工作方式,这时常将 C 口的高 4 位定义
为输入口,输入外设的状态信号,而将 C 口的低四位定义为输出口,输出控制信息;这时可用 A、 B
口传送数据;
方式 0 不能工作在中断方式;
56
方式 1 :选通输入输出方式: A 口、 B 口作为数据的输入口或
输出口,但数据的输入输出要在控制信号的控制下,控制信号由 C 口的某些位来提供;
方式 1 适用于程序查询和中断控制方式,它不能工作在无条件传送方式下;
57
方式 1下 A 口、 B 口均为输出
C 口的 6条线作为选通控制信号: PC3 、PC6 、PC7
配合 A 口, PC0、 PC1、 PC2配合 B 口;
接 8259
OBF :输出缓冲器满信号;ACK :外设收到数据的应答信号;INTE :中断允许状态;INTR :中断请求信号;
INTEA
PC7
PC6
PC3&
PA7~PA0
PC4PC5
IOW
OBFA
ACKA
INTRA
IOW
OBF
INTR
ACK
输出
58
IOW
OBF
INTR
ACK
输出
INTEB
PC1
PC2
PC0&
PB7~PB0
IOW
OBFB
ACKB
INTRB 接 8259
59
方式 1下 A 口、 B 口均为输入
STBA
IBFA
STB :输入选通信号;外设用它将数据锁存于输入数据缓冲器中;IBF :数据输入缓冲器满, STB 的应答信号;INTR :中断请求信号 INTR ;INTE :中断允许信号;
INTEAPC4
PC5
PC3
PA7~PA0
PC6PC7
IOR
INTRA&
INTEBPC2
PC1
PC0
PB7~PB0
IOR
STBB
IBFB
INTRB&
60
方式 2 :双向传输方式,只有 A 口可以工作在这种方式下。既
能发送数据,又能接收数据;它还要利用 C 口的 5条线作为控制信号线; A 口的输入输出均具有数据锁存能力,数据的输入输出均可以引起中断;
方式 2 适用于程序查询和中断控制方式。它不能工作在无条件传送方式下。这时 B 口可以工作在方式 0 或方式 1 , C 口剩余的
3 条线可以作为输入输出线或方式 1 下的控制线。
61
控制字
7 6 5 4 3 2 1 0
功能控制0 :位操作1 :方式选择
A组方式选择00 :方式 001 :方式 11X :方式 2
控制 A口 8 位0 :输出1 :输入
控制 C 口高 4 位0 :输出1 :输入
B组方式选择0 :方式 01 :方式 1
控制 B口 8 位0 :输出1 :输入
控制 C 口低 4 位0 :输出1 :输入
1. 方式选择控制字:
62
【例题 7-6 】设 8255 的端口地址为 FBC0~FBC3H, A 口设置方式
0 输入, B 口方式 0 输出, C 口高 4 位方式 0 输出,C 口低 4 位方式 0 输入。
控制字为: 10010001B 8255 初始化程序为: MOV DX, 0FBC3HMOV AL, 91HOUT DX, AL
63
方式选择控制字例
A 口、 B 口工作在方式 0 下: A 口输出、 B 口输入则:10000010
A 口工作在方式 0 、 B 口工作在方式 1 下: A 口输出、B 口输入则: 10000110
A 口工作在方式 1 、 B 口工作在方式 0 下: A 口输入、B 口输出则: 10110000
方式选择控制字: 80H, B4H
64
2. 按位操作控制字
7 6 5 4 3 2 1 0
置位 / 复位0 :复位1 :置位
C 口的位选择0 0 0 PC00 0 1 PC10 1 0 PC20 1 1 PC31 0 0 PC41 0 1 PC51 1 0 PC61 1 1 PC7
无关0
设置 PC0 为置位,则:00000001设置 PC4 为复位,则:00001000设置 PC3 为置位,则:00000111
设控制端口的地址为:FFF7H, 则:MOV DX,0FFF7HMOV AL,08HOUT DX,ALMOV AL,07HOUT DX,AL
65
【例题 7-7 】设 8255 的端口地址为 FBC0~FBC3H, A 口设置方式
0 输出, B 口方式 0 输入, C 口高 4 位方式 0 输出,C 口低 4 位方式 0 输入,利用 C口 PC5产生连续的方波信号,信号的高、低电平宽度可调用延时子程序 DELAY 实现。
66
控制字为: 10000011B 8255 初始化程序为:
MOV DX, 0FBC3HMOV AL, 83HOUT DX, AL
FB : MOV AL, 0BHOUT DX, AL ;PC5 置位CALL DELAY ;维持高电平MOV AL, 0AHOUT DX, AL ;PC5=0CALL DELAY ;维持低电平JMP FB ;连续输出方波信号
67
4 . 8255与 CPU 的连接8255的 D7~ D0 分别与系统总线的 D7~ D0 相连, RD、WR 分别与系统总线的 IOR和 IOW 相连, A1、 A0 与系统地址线 A1、 A0 相连, CS由系统地址总线 A2~A15译码生成。
68
8255 的应用
A2
A3
A4
IOR
IOW
A10
A12
A13
A14
A15
A5
A6
A7
A8
A9
A11
IOR
IOW
A1
A0
RESET
G1
G2A
G2B
C
B
A
Y0
74LS138
RD
WRA1
A0
CS
8255
RESETA 口
B 口
C 口
D0
D7
~ D0
D7
~
PA0
PA7~
PC0
PC7
~
PB0
PB7
~
&
≥1
&
69
8255 的端口地址为 F080~F083H 。
70
8255A的 PA0~PA7 端接有开关 K0~K7, PB0~PB7 接有 8 支 LED 发光管。端口 A 、 B 均工作在方式 0 下,根据开关状态控制 LED灯的显示。
1. 请确定 8255A 的各端口地址,写出控制字;2. 编程控制:当 K 全闭合时, 8 支灯亮;当有一个
以上 K 断开时, 8 支灯灭。
71
CS
A1A0
WR
RD
PA0
PA7
PB0
PB1
PB7
3: 8ABC
G1G2AG2B
WR
A7A6A5
A4A3A2A1A0
Y4…..
+5V
+5V
…..
IO/MRD
K0
K7
D0~D7
地址:84H,85H,86H,87H方式控制字:10010000=90H
72
编程:START: MOV AL,90H
OUT 87H,ALSTATES: IN AL,84H
AND AL,0FFHJZ HIGH ;当 K 全闭合时, 8支灯亮 ;
MOV AL,0FFH ;有一个以上 K 断开,
OUT 85H,AL ; 8支灯灭 ;
JMP DONEHIGH: MOV AL,0
OUT 85H,ALDONE :JMP STATES
73
另 :测试开关状态,控制相应的灯亮或灭;START: MOV AL,90H
OUT 87H,ALAGAIN: IN AL,84H
OUT 85H,ALJMP AGAIN
74
【例题 7-8 】利用 8255的 A 口与打印机相连,将内存缓冲区
BUFF 中的 2K 个字符打印输出。试完成相应的软硬件设计。
75
8255 控制打印机D0~ D7
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9A10
A11
A12
A13
A14
A15
IOWIOR
IOWIOR
RESET
≥1
&
74LS138
ABC
G2A
G1
G2B
Y0
&
&
A0
A1
WR
RD
RESET
D0
|D7
PA0
|PA7
PC6
PC1
CS
8255
D0
|D7
STROBE
BUSY
FBC0HFBC1HFBC2HFBC3H
76
数据
STROBE
BUSY
77
编制程序如下:START:MOV AX, SEG BUFF
MOV DS, AXMOV SI, OFFSET BUFFMOV CX, 2048MOV DX, 0FBC3HMOV AL, 81H ;8255A 初始化OUT DX, AL ; C 口高位方式 0 输出,低位方式 0
输入MOV AL, 0DH ;OUT DX, AL ;使 PC6 置位,即使选通无效
78
WAIT: MOV DX, 0FBC2H IN AL, DX ; 输入打印机的状态
TEST AL, 02H ;检测 PC1 是否为 1JNZ WAIT ; 为忙则等待MOV DX, 0FBC0H
MOV AL,[SI]OUT DX, AL ;从 A 口输出数据MOV DX, 0FBC3HMOV AL, 0CHOUT DX, AL ;STROBE 信号为低电平MOV AL, 0DHOUT DX, AL ; STROBE 信号为高电平INC SI ; 修改指针,指向下一个字符LOOP WAIT
DONE: MOV AH, 4CHINT 21H
79
用 8255 实现键盘接口
CPU 总线
8255
PC7
PC6
PC5
PC4
PC3
PC1
PC2
PC0
行 3
行 2
行 1
行 0
列 0列 1列 2列 3
K
R×4
R×4
+ 5V
矩阵式键盘接口电路原理图
80
扫描法逐行输出 0 ,然后读入列值,检查有无为 0 的位;具体步骤:1. PC7~PC4 输出全 0 ,从 PC3~PC0 读入,若读入
的数据有一位为 0 ,表明有键按下;2. 延时 20ms去抖动,重复第一步动作,若还有键闭合,则认为确实有键闭合;否则返回第一步;
3. 查找被确认的键;从第 0 行开始逐行输出 0 ,然后读入列值,检查有无为 0 的位;若无,键值加 4 ,转下一行;
81
反转法1. 将 PC7~PC4 设定为输出, PC3~PC0 设定为输入。然后 PC7~PC4 输出全 0 ,从 PC3~PC0 读入列值,若读入的数据有一位为 0 ,表明该列有键按下,保存列值;
2. 将 PC7~PC4 设定为输入, PC3~PC0 设定为输出。把保存的列值从 PC3~PC0 输出,从 PC7~PC4 读入行值,读入的数据必有一位为 0 ,保存行值。将行值和列值组合在一起,用查表的方法得到按键的键值。
82
编程:设 8255 的端口地址为 40H、 41H、 42H、43H
START: MOV AL,10000001B ;方式 0, C 口高 4 位输出,低 4 位输入OUT 43H,ALMOV AL,0OUT 42H,AL
WAIT1: IN AL,42HAND AL,0FH ;取低 4 位CMP AL,0FHJZ WALT1MOV AH,ALMOV AL,10001000B ;方式 0, C 口高 4 位输入,低 4
位输出OUT 43H,ALMOV AL,AHOUT 42H,ALIN AL,42HAND AL,0F0H ;取高 4 位OR AL,AH… ;查表求出按键的键号
83
7.4 串行通信7.4.1 串行通讯的基本概念CPU 与外设之间的信息交换,在每一个时间单位仅传
送一位信息,信息的所有位按顺序一位一位地传送,称为串行通信。
1. 串行通信的传送方式单工:单方向传送半双工:采用分时传送的办法全双工:发送和接收同时进行
A 发送器 B 接收器
单工
发送器
接收器
发送器接收器
半双工
发送器接收器
发送器接收器
全双工
84
2. 调制与解调计算机远距离的通信可以借助电话电缆来传输信息。发送:把数字信号调制在载波信号。接收:把载波信号解调成数字信号。3 种调制方法:调频、调幅、调相。调频是把数字“ 1” 与“ 0”调制成两个频率不同的模拟信号;调幅是把数字“ 1” 与“ 0”调制成不同幅度的模拟信
号,频率保持不变;调相是把数字“ 1” 与“ 0”调制成不同相位的模拟信
号,频率和幅度保持不变;
85
3. 同步通信和异步通信串行通信中有同步通信和异步通信两种基本方式。同步通信及规程:定义:由若干个字符组成一个信息组,字符间无间隔,称为帧。发送端和接收端的时钟信号频率和相位始终保持一致。
数据格式:单、双同步格式、 SDLC 同步数据链路控制规程、 HDLC 高级数据链路控制规程;
传送速率:可达几百K 波特
同步信息 数据 校验信息
CRC1数据 N CRC2数据 2……数据 1SYN2SYN1
CRC1数据 N CRC2数据 3……数据 2数据 1SYN1
86
异步通信方式及规程定义:一个字符作为一个独立的信息单元,称为帧;
字符间的间隔时间不固定 ,字符内位和位的间隔时间固定;
格式:起始位、数据位、奇偶校验位、停止位;
传送速率: 用波特率表示 bps
奇偶校验位
停止位
空闲位
起始位起始位
数据位 5 ~8
高位低位
0 1 1 00 1 1 1 0000 1
87
波特率是指每秒传送信息的位数。异步通信波特率: 75- 19200 波特,分为 10级;75, 110, 150, 300, 600, 1200, 2400, 4800,
9600, 19200如:每秒传送 120 个字符( 1 个起始位、 7 个数据位、
1 个奇偶校验、 1 个停止位,共计 10 位) 波特率= 10位 ×120 字符 /秒= 1200位 /秒
88
7.4.2 串行通信的接口标准RS-232-C标准
是 EIA 电子工业协会推荐的串行通信接口标准,接口的两端称为 DTE和 DCE, 25 芯。
特点:信号线少;多种传送速率
50、 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19.2K , 33.6K, 56K ;
传送距离远;基带传输 30~50M负逻辑: 1 -5~-15V
0 +5~+15V
2 TXD 发送3 RXD 接受7 GND
89
计算机 MODEM MODEM 计算机电话网
DTE DCE DTEDCE
RS-232-C
90
7.4.3 可编程串行通信接口 8250
8250为 UART :通用异步通信收发器;它支持异步通信规程;芯片内部设置时钟发生器,通
过编程可设置数据的传送波特率;它提供 MODEM 所需的控制信号,接收来自 MODEM的状态信息等等。
功能 :1. 通用异步收发器;2. RS-232-C标准;3. 单工、半双工、全双工;4. 方便与 MODEM连接;
91
作业:1、 3、 4、 5、 6、 9、 10、 11、 12
92
接收数据寄存器
发送移位寄存器
发送数据寄存器
接收移位寄存器
数据缓冲寄存器
读写控制逻辑
MODEM控制逻辑
接收控制逻辑
发送控制逻辑
93
利用计数器 1 作脉冲发生器,给定 CLK1为 2MHz ,产生频率为 1KHz 的脉冲。利用计数器 2 作脉冲发生器,给定 CLK2为 1MHz ,产生周期为 20ms的方波。
端口地址 80H 81H 82H 83H计数器 1 工作在方式 2 :
计数初值= 2×106/(1×103)=2000 控制字: 01110101计数器 2 工作在方式 3 :
计数初值= 1×106/(20×103)=20000 控制字: 10110110
94
程序设计如下:ST: MOV AL,01110101B ;# 1 ,方式 2, BCD码 OUT 83H,AL MOV AL,00H ;先写入低字节计数值, OUT 81H,AL MOV AL,20H ;后写入高字节计数值
OUT 81H,AL MOV AL,10110110B ;# 2 ,方式 3 ,二进制 OUT 83H,AL ; MOV AL,20H :先写入低字节计数值 OUT 82H,AL MOV AL,4EH ;后写入高字节计数值 OUT 82H,AL HLT
95
引脚 符号 功能 方向
23456782022
TXDRXDRTSCTSDSRGEDDCDDTRRI
发送数据接收数据请求发送清除发送数据设备准备好信号地数据载波检测数据终端准备好震铃信号
输出输入输出输入输入
输入输出输入
96
8255
D0D1
D7
CS
A1A0
WRRD
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
3: 8CBA
G1G2AG2B
IOW
A7A6A5
A4A3A2A1A0
Y4
VCC
例: 8255的 B 端口接有 8 支彩灯,在方式0 下顺序点亮,每灯亮 1 秒,循环工作。
IOR
口地址: 90H 、 91H、 92H、 93H
97
程序如下:方式控制字 :10000000程序如下:
MOV AL,80HOUT 93H,ALMOV AL,01H
AGAIN: OUT 91H,ALCALL DELAY ;延时 1 秒ROL AL,1JMP AGAIN