接口技术 第8章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(a)方式4-正常计数
(b)方式4-GATE信号的作用
(c)方式4-计数过程中改变计数值
(a)方式5-正常计数
(b)方式5-GATE信号的作用
(c)方式5-计数过程中改变计数值
8.3 定时/计数器应用实例
8.3.1
8253的编程逻辑 每个计数器都要进行初始化 方式控制字写入到控制字寄存器 写入计数初值到对应的计数寄存器 用CPU输入指令可读取任一计数寄存器的 计数值。 锁存当前计数值有两种方法: 利用GATE信号使计数过程暂停。 向8253写入一个方式控制字,令8253通 道的锁存器锁存。
返回本节
8.2.4 8253的方式控制字
8253的方式控制字有4个主要功能:
★
★
选择计数器的计数方式。
确定计数器的工作方式。
★
★
确定计数器数据的读写格式。
选择计数器。
返回本节
8253 控制字格式
(a)方式0-正常计数
(b)方式0-GATE信号的作用
(c)方式0-计数过程中改变计数值
根据要求,选择方式0来实现,计数初 值N=100 MOV DX, 203H;设置方式控制字 MOV AL, 10H;设定为工作方式O,二进制,
只写入低字节计数值
OUT MOV MOV OUT
DX, AL; DX, 200H;设置计数初值 AL, 64H;计数初值为100 DX, AL
3.8253计数通道的级联使用
8253 在PC/XT中的应用
(1)计数器0——日时钟计时
CLK0频率为1.19318MHz。方式3,初值N0=0,即65536
OUT0端的频率为 CLK/N0=1.19318MHz/65536=18.2Hz 与8259A的IR0端,使计算机每秒产生18.2次中断, 也就是每隔约55ms产生一次0级中断。 CPU以此作为时间基准,在中断服务程序中对该中断 次数进行计数,计数单元为16位(两字节),实际初 始值为0,每中断一次计数单元加l,因此,当计满产 生进位时,表示己产生了65536次中断,所经过的 时间约为65536/18.2≈3600秒=1小时。
3.
可编程的器定时/计数器
可编程定时/计数器是一个具有计数和定时功能
的专用芯片。
返回本节
8.2 可编程定时/计数器8253
3个结构完全相同的16位减计数器,分别
是0#、1#和2#。
每个计数器可独立工作,二进制计数器和
十进制计数器。
每个计数器有六种工作方式。 8253在使用前必须先向其写控制字。向
计数器1定时向DMA提供动态RAM刷新请求信号, CLK1频率为1.19318MHZ, 方式2(频率发生器), N1=18(即0012H), OUT1端输出一负脉冲序列,其周期为 18/1.19318MHZ=15.8us, 使CP每隔15.08us产 生一个正脉冲,送到DMA控制器8237A,由DMA 控制器定时的对系统中DRAM进行一次刷新操作。 OUT1端的负脉冲频率为 1.19318MHZ/18=66.287 8kHz。计数器1的端 口地址为41H。
上电后BIOS对8253计数器0的初始 化程序段为:
MOV AL, 36H;计数器0的控制字,先写低字节,
后写高字节,方式3,二进制计数
OUT MOV OUT OUT
43H, AL;控制字写入控制口 AL, 00H;计数初值设定为65536 40H, AL;写入低字节 40H, AL;写入高字节
(2)计数器1——动态RAM刷新定时
第8章 定时计数技术
8.1 概述
8.2 可编程定时计数器8253
返回本章首页
8.1 概述
实现定时和计数的方法有三种: 1.
完全硬件定时
用数字电路中的分频器将系统时钟进行适当的分
频产生需要的定时信号;
2.
完全软件定时
利用CPU执行指令都需要几个固定的指令周期的
原理,运用软件编程的方式进行定时。
其写控制字设定其工作方式就叫作可编程。
返回本节
8253的内部结构示意图
计数器内部逻辑图
8253的引脚信号图
A1A0编码与8253内部寄存器的对应关系
表6-9 8253寄存器寻址 /CS /RD /WR A1 A2 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 寄存器选择和操作 写入计数器0 写入计数器1 写入计数器2 写入控制字寄存器 读计数器0 读计数器1 读计数器2
2.8253计数功能的应用
例2:用8253通道0记录外部事件的发生 次数,每输入一个高脉冲表示事件发生 1次。当事件发生100次后就向CPU提出 中断请求(边沿触发),假设8253片选信 号的I/O地址范围为200H~203H,如 图8-12。
8253 用于外部事件的计数
8053初始化程序段如下:
(a)方式1-正常计数
(b)方式1-GATE信号的作用
(c)方式1-计数过程中改变计数值
(a)方式2-正常计数
(b)方式2-GATE信号的作用
(c)方式2-计数过程中改变计数值
(a)方式3-计数值为偶数时的波形
(b)方式3-计数值为奇数时的波形
(c)方式3-GATE信号的作用
(d)方式3-计数过程中改变计数值
[例8-3]已知8253的CLK1=1MHz、 /CS=320H~323H,要求用8253连续产生 10秒的定时信号。 8253的一个通道的最大计数范围为65536, 而初值N=10/10-6=107,超过了8253一 个通道的最大计数值,因此可以使用2个 8253通道级连。级连线路如图8-13所示, 若级连后2个通道的初值为N1和N2,则
返回本节
8.3.2 8253的实际应用
例1:设频率为10kHz,采用定时中断方
式每隔10ms完成一次扫描键盘的工作。 解:采用8253定时器的通道0来实现 8253的端口地址为10H~13H。 (1)选择工作方式:选用方式2来实现 (2)确定计数初值
己知 fCLK0=10kHz,则TCLK0=0.1ms N=TOUT0/TCLK0=10ms/0.1ms=100(64H)
(3)初始化编程
返回本节
8253 用于定时中断
初始化程序段如下:
方式控制字为00010100B,即14H。
MOV AL, 14H;通道0,写入初值低8位,高8位置0,
方式2,二进制计数
OUT 13H, AL;写入方式到控制字寄存器 MOV AL, 64H; OUT 10H, AL;写入计数初值低8位到通道0
G7: LOOP G7 DEC B1 JNZ G7 MOV AL, AH OUT 61H, AL RET BEEP: ENDP
N=N1×N2
8253 用于通道的级联
设计数器初值N1=500, N2=20000,使用方式 2,二进制计数,则通道1、2的初始化程序:
MOV DX, 323H MOV AL, 74H;01110100B,通道1,写入16位初值,
方 式2,二进制计数
OUT MOV MOV OUT MOV OUT
DX, AL; 写入通道2方式字 DX, 322H AX, 20000 DX, AL; 写入通道2初值低8位 AL, AH; DX, AL; 写入通道2初值高8位
4.8253在PC机中的应用
IBM PC/XT机中使用了1个8253,系统 中8253的端口地址为40H~43H,3个 通道的时钟输入频率为1.19318MHz(系 统时钟PCLK的二分频)。3个计数通道分 别用于日时钟计时,DRAM刷新定时和 扬声器的音调控制。
8.2.3 8253计数器的计数启动方式 和计数结束方式
软件启动计数方式:
GATE=1,写入计数初值后,
开始减计数 硬件启动计数方式:由计数控制端GATE加一个从 低电平到高电平变化的上跳沿控制开始减计数。 一次性计数方式:减计数单元减至0后不能自动 将原计数初值寄存器中的初值装入减计数单元, 不能重新开始新的一轮计数。 自动重装方式:如减计数单元减至0后,能自动 将原初值寄存器中的初值自动装入减计数单元, 并重新开始新一轮计数。
上电后系统BIOS对计数器1的初始化 程序段:
MOV OUT MOV OUT AL, 54H 43H, AL AL, 12H 41H, AL
例如:ROM BIOS中有一个声响子程序BEEP,它将 计数器2编程为方式3,作为方波发生器输出约1KHZ 的方波,经滤波驱动后推动扬声器发声
BEEP: PROC MOV AL, 10110110B OUT 43H, AL MOV AX, 0533H OUT 42H, AL MOV AL, AH OUT 42H, AL IN AL, 61H MOV AH, AL OR AL, 03H OUT 61H, AL SUB CX, CX
DX, AL ;写入通道1方式字 DX, 321H; AX, 500; DX, AL;写入初值低8位到通道1 AL, AH; DX,AL;写入初值高8位到通道1
MOV DX, 323H MOV AL, 0B4H;10110100B,通道2,写入16位初值,
方式2,二进制计数
OUT MOV MOV OUT MOV OUT