微机接口课上例题一例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例2:以8086为CPU的某微机系统中使用了一块8253芯片,其通道端口地址为308H,30AH,30CH,控制口地址为30EH,3个通道使用同一输入时钟,频率为2MHz,要求完成如下功能:

利用计数器0采用硬件触发,输出宽度等于时钟周期的单脉冲,定时常数为36H;

利用计数器1输出频率为2kHz的对称方波;

利用计数器2产生宽度为0.6ms的单脉冲,

试设计该定时系统硬件电路和初始化程序。

(1)硬件电路设计

硬件电路设计主要是地址译码电路设计及时8253与CPU间的连接。根据给定的端口地址可知,地址总线低位部分的A9~A0分别为:A9A8=11,A7~A4=0000,A3A2A1=100~111,A0=0,

由它们经译码器译码产生8253的片选信号,8253的数据线D7~D0必须与系统数据总线的低8位相连,8253的端口的选择信号A1A0应连系统地址的A2A1。根据上述要求,译码器应选3-8译码器74LS138。该译码器有3个代码输入端(C,B,A),输入3位代码决定译码信号从Y0~Y7中哪一个输出,本例中显然应以Y2输出。

(2)初始化编程

根据题意要求,对3个通道的工作方式,计数初值确定如下:

由CLK0~CLK2=2MHz可得,时钟周期T=1/f=1/2MHz=0.5μs。

选计数器0:选择方式5,门控信号GA TE应接一正跳变信号,OUT端当计数为0时产生一个宽度等于时钟周期的单脉冲。计数系数为36,用BCD计数。所以,计数器0的控制字应为00011011B=1BH。

选计数器1:选择方式3,GA TE按+5V,CLK1=2MHz输出方波频率为2kHz,所以,计数常数N1=2MHz/2kHz=1000,采用BCD计数,于是计数器1的控制字为:01110111B=77H。选计数器2:选择方式1,以构成一个单稳态电路,输出脉冲宽度由计数常数N2决定,计数常数N2=600μs/0.5μs=1200,采用BCD计数,于是计数器2的控制字为:10110011B=B3H。根据以上分析可得3个计数通道的初始化程序如下。

计数通道0的初始化程序:

MOV DX,30EH ;8253的控制口地址

MOV AL,1BH ;计数通道0的控制字,低8位,方式5,BCD计数

OUT DX,AL ;控制字写入控制口

MOV DX,308H ;计数器0的端口地址

MOV AL,036H ;计数初值的低8位

OUT DX,AL ;低字节写入计数器0端口

计数通道1的初始化程序:

MOV DX,30EH ;8253的控制口地址

MOV AL,77H ;计数通道1的控制字,先写低字节,后写高字节,方式3,BCD 计数

OUT DX,AL ;控制字写入控制口

MOV DX,30AH ;计数通道1的端口地址

MOV AL,00H ;计数初值的低字节

OUT DX,AL ;低字节写入计数通道1

MOV AL,10D ;计数初值的高字节

OUT DX,AL ;高字节写入计数通道1

计数通道2的初始化程序

MOV DX,30EH ;8253的控制口地址

MOV AL,B3H ;计数通道2的控制字,先写低字节,后写高字节,方式1,BCD计数

OUT DX,AL ;控制字写入控制口

MOV DX,30CH ;计数通道的端口地址

MOV AL,00H ;计数初值的低字节

OUT DX,AL ;低字节写入计数通道

MOV AL,12D ;计数初值的高字节

OUT DX,AL ;高字节写入计数通道2

计数通道2初始化程序:

MOV AL,B0H ;计数通道2的控制字

OUT 05FH,AL ;控制字写入控制器

MOV AL,068H ;计数初值的低8位

OUT 05DH,AL ;计数初值的低8位写入计数通道2

例1:将8253的计数器1作为5ms定时器,设输入时钟频率为200kHz,试编写8253的初始化程序。

(1)计数初值N计算

已知输入时钟CLK频率为200kHz,则时钟周期为T=1/f=1/200kHz=5μs,于是计数初值N 为:N=5ms/T=5ms/5μs=1000。

(2)确定控制字

按题意选计数器1,按BCD码计数,工作于方式0,由于计数初值N=1000,控制字D5D4应为11,于是8253的控制字为:01110001B=71H。

(3)选择8253各端口地址

设计数器1的端口地址为3F82H,控制口地址为3F86H。

(4)初始化程序如下

MOV AL,71H ;控制字

MOV DX,3F68H ;控制口地址

OUT DX,AL ;控制字送8253控制寄存器

MOV DX,3F82H ;计数器1端口地址

MOV AL,00 ;将计数初值N=1000的低8位写入计数器1

OUT DX,AL

MOV AL,10 ;将N的高8位写入计数器1

OUT DX,AL

相关文档
最新文档