8253的初始化编程

合集下载

微型计算机原理及接口技术第8章8253

微型计算机原理及接口技术第8章8253

计数器/定时器的内部结构
8253内部包含三个完全一样的计数器/定时器通道, 每个通道的工作是完全独立的
每个通道包含:
① 一个8位控制字寄存器:由编程设定该通道的工作方式、读 写格式和数制
② 一个16位计数初值寄存器:由程序设定初始计数值,可分 成高8位和低8位两个部分,可作8位寄存器使用
③ 一个计数器执行部件(实际的计数器):实际上是一个16 位减法计数器,它的起始值是初始寄存器的值,由程序设 定。可分成高8位和低8位两个部分
优点:电路结构简单,价格便宜,通过 改变电阻或电容值,可以在一定的定时 范围内改变定时时间
缺点:电路在硬件已连接好的情况下, 定时时间和范围就不能由程序来控制和 改变,而且定时精度也不高
555定时器外部引脚和内部结构
可编程硬件定时
定时原理:利用可编程定时器/计数器芯 片附加硬件电路实现定时
输出信号的波形由工作方式决定,同时还要受 到GATE引脚上的门控信号控制,它决定是否 允许计数
计数器/定时器的定时功能
当加到CLK引脚上的脉冲为精确的时钟脉 冲,可实现定时的功能。
定时时间决定于计数脉冲的频率和计数 器的初值。
定时时间=时钟脉冲周期×预置的计数初值
计数器/定时器的计数功能
方式1:可编程单稳态输出方式
写入控制字后OUT初始状态:高电平 门控信号GATE的作用:①高电平或低电平均不起作用;
②只有在GATE发生由低到高的正跳变,输出OUT由高
到低跳变,并开始计数;③在计数过程中,若GATE产 生负跳变,不影响计数;④在计数器回0之前,GATE 又产生由低到高的正跳变,8253又将初始值装入,重 新开始计数,使生成脉冲加宽。 计数过程中OUT状态:保持低电平 计数结束OUT状态:发生由低到高的正跳变。 计数器回0后,是否重新计数:否 应用:用于定时

微机原理 可编程计数器定时器8253及应用

微机原理  可编程计数器定时器8253及应用
教材第八章内容
第八章 可编程计数器/定时器8253及应用 8-1 8253工作原理
一、8253的内部结构与引脚信号 二、8253的初始化编程
三、8253的工作方式
四、8253与系统的连接
8-2 8253的应用举例
一、8253定时功能举例 二、8253计数功能举例
1
第八章
定时/计数技术概述
计算机中常用到定时功能,如:动态RAM刷新、
第八章
二、8253的初始化编程

8253的初始化编程按顺序分两步完成:
1、写入控制字

2、写入计数初值
初始化编程的几点说明: 对3个计数通道的初始化编程没有先后顺序
若是16位数,必须用两条OUT指令来完成,且先送低8
位数据,后送高8位数据。 若计数初值为0时,要分成两次写入。0在二进制计数
18
第八章
8253方式3
4、方式3——方波发生器
时序图
计数初值为偶数时的波形
CW=16H WR CR=4 CLK GATE LSB=4
OUT
CRCE 4
CRCE 2
19
CRCE
2 4
CRCE 2 4
CRCE 2 4
4
第八章
8253方式3 计数初值为奇数时的波形
CW=16H WR
LSB=5 CR=5
CLK GATE
OUT CRCE 5 4 CRCE 2 5 CRCE CRCE 4 2 5
2
5
20
第八章
8253方式4
5、方式4——软件触发选通
时序图
CW=18H WR
LSB=2 CR=2
LSB=2 CR=2
CLK GATE OUT CRCE 2 1 CRCE 0 2 1 0 0

计算机第八章 8253(2008)

计算机第八章 8253(2008)

(n-1)/2
(n+1)/2
n=奇数
n×TCLK
方式4 方式5
软件触发选通 硬件触发选通
写入计数初值后开始计数 GATE上升沿触发计数
负脉冲
负脉冲
17
初始OUT、GATE、是否重装初值汇总表
起始OUT端 GATE信号电平 是否自动重装初 值
方式0 计数器结束 中断方式
方式1 可编程单稳 态输出方式
3
三、可编程的硬件定时:8253芯片 CPU只需设定8253的工作方式,设定计数初值,启 动定时器开始工作后,CPU即可去做别的工作。 1、对8253设定计数初值→启动工作→时间到,自 动形成输出信号→ 向CPU提出中断请求或启动设 备工作 2、特点:提高了CPU的利用率,定时精度高
四、计数 : 8253芯片 计数脉冲信号由外部事件提供。
13
五、8253的工作方式(6种)
① 写入控制字,同时影响OUT端电平,为起始OUT端 电平 ② 写入计数初值n,使WR变为低电平,在WR的上升 沿时,将n→计数初值R ③ 当GATE有效,再在下一个CLK时钟脉冲的下降沿, 将n→计数执行部件,开始减1计数(计数器随着 时钟脉冲的输入而递减计数) 1.方式0 计数结束中断方式 写入计 数初值 OUT输出端波形 计数结束 写入控制字 详见后
GATE1
整形 CLK0 a
光 敏 电 阻
响应
OUT1 GATE0 +5V
光源 工件
23
没有工件通过:Ua≈5V(H) 有工件通过:Ua=0(L) 通道0:方式2 比率发生器 计数方式,每通过50个工件申 请一次中断 通道1:方式3 方波发生器 通道GATE1由8255A的PA0控制, 当GATE1为高电平,输出方波,扬声器响。 在中断服务程序中控制GATE高电平的时间。 ②控制字设置 通道0:0 0 0 1 0 1 0 1 n0=50 通道1:0 1 1 1 0 1 1 1 n1=2M/2000=1000>256 主程序:MOV AL ,00010101B OUT 46H ,AL; 送控制字 MOV AL ,50H OUT 40H ,AL; 送初值 MOV AL ,01110111B; 送控制字 OUT 46H ,AL

8253、8255A、8259A初始化程序

8253、8255A、8259A初始化程序

8253、8255A、8259A初始化程序8253的初始化程序1.确定端口地址:0310H、0312H、0314H、0316H2.确定工作方式(假设工作方式为):通道0,方式3通道1,方式1通道2,方式53.确定计数值:通道0:N0=1MHz/2KHz=500通道1:N1=480us/(1/1mhz)=480通道2:N2=264确定控制字:通道0:00110111B通道1:01110011B通道2:10011011B对3个通道的初始化程序如下:;通道0初始化程序MOV DX, 316HMOV AL,00110111BOUT DX,ALMOV DX,310HMOV AL,00HOUT DX, ALMOV AL,05HOUT DX,AL;通道1的初始化程序MOV DX, 316HMOV AL, 001110011B OUT DX, ALMOV DX, 312HMOV AL, 80HOUT DX, ALMOV AL, 04HOUT DX, AL;通道2初始化程序MOV DX, 316HMOV AL, 10011011B OUT DX, ALMOV DX, 314HMOV AL,26HOUT DX,AL; MOV AL,00H; OUT DX,AL8255A初始化程序对8255A进行初始化,要求端口A工作于方式1,输入;端口B 工作于方式0,输出;端口C的高4位配合端口A工作,低4位为输入。

1.确定控制字端口地址:006CH。

2.确定工作方式:端口A,工作方式1,输入端口B,工作方式0,输出端口C,C0为输入,C4为配合工作3.确定方式选择控制字:1 011 100 1H(B9H)对3个端口的初始化程序如下MOV AL,B9HMOV DX,006CHOUT DX,AL另一个8255A初始化程序已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:1.确定端口地址控制字以及PC口置位复位端口,8BH2.确定工作方式3.确定方式选择控制字MOV AL,80HOUT 8BH,ALMOV AL,ODHOUT 8BH,ALMOV AL,06HOUT 8BH,AL在8259A内部有两组寄存器:一组为命令寄存器,用于存放CPU写入的初始化命令字ICW1~ICW4(initialization command words);另一组为操作命令寄存器,用于存放CPU写入的操作命令字OCW1~OCW3(operation command words)。

8253 的初始化及编程_微型计算机原理及应用教程(第2版)_[共2页]

8253 的初始化及编程_微型计算机原理及应用教程(第2版)_[共2页]

276
表9-8 253读/写操作及端口地址
9.4.3 8253的初始化及编程
每个计数器可通过输入/输出指令对其进行访问。

8253有两种工作状态,即计数模式、定时模式;有两个计数方式,即按二进制计数、按十进制(BCD码计数);还有6种工作方式,即方式0、方式1、方式2、方式3、方式4、方式5。

1.8253的初始化
使用8253必须首先进行初始化编程,初始化编程的工作有两点:一是向控制寄存嚣写入方式控制字,以选择计数器,确定工作方式,指定计数器计数初值的长度和装入顺序以及计数初值的码制;二是向已选定的计数器按方式控制字的要求写入计数初值。

如前所述,在有些方式下,写入计数初值后此计数器就开始工作了,而有的方式需要外界门控制信号的触发启动。

在初始化编程时,某一计数器的控制字和计数初值是通过两个不同的端口地址写入的。

任一个计数器的控制字都写入控制字寄存器(地址总线低3位A2A1A0=110),由控制字中的D7D6来确定是哪一个计数器的控制字;而计数初值是由各个计数器的端口地址写入的。

初始化编程的步骤如下。

(1)写入计数器控制字,规定计数器的工作方式。

(2)写入计数初值。

①若规定只写低8位,则写入的为计数初值的低8位,高8位自动置0。

②若规定只写高8位,则写入的为计数初值的高8位,低8位自动置0。

③若是16位计数初值,则分两次写入,先写入低8位,再写入高8位。

【例9-18】 8253初始化编程举例。

若要用计数器0,工作在方式1,按二—十进制计数,计数初值为5080H,则初始化编程的步骤如下。

(1)确定计数器控制字,控制字格式如下。

微机原理与接口技术82558253初始化编程原

微机原理与接口技术82558253初始化编程原

微机原理与接口技术8255 8253初始化编程原微机原理与接口技术--8255|8253初始化编程原理解析000微机原理与接口技术研究方向:指令数据在计算机中是如何传输的;(1)控制总线(2)地址总线(3)数据总线在计算机中要研究数据是如何传输的,就是知道计算机是如何寻址的(地址译码)、CPU与外设是如何进行数据交互的、CPU中的控制器是如何控制外设进行数据传输的;一、8253芯片74LS138芯片的工作原理:当一个选通端(G1)为高电平,另外选通端G2A、G2B为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端一低电平译出;(1)8253与8086CPU的连接方式注意:z如果8253与8位数据总线的微机相连,只要将A1A0分别与地址总线的最低两位A1A0相连即可。

z如果系统采用的是8086CPU,则数据总线为16位。

CPU在传送数据时,总是将低8位数据送往偶地址端口,将高8位数据送到奇地址端口。

偶地址端口的数据总是通过低8位数据总线送到CPU,奇地址端口的数据总是通过高8位数据总线送到CPU。

当仅具有8位数据总线的存储器或I/O接口芯片与8086的16位数据总线相连时,既可以连到高8位数据总线,也可以接在低8位数据总线上。

在实际设计系统时,常将这些芯片的数据线D7~D0接到系统数据总线的低8位,这样,CPU就要求芯片内部的各个端口为偶地址(地址总线的A0=0)。

应改用地址总线中的A2A1实现端口选择,即将A2连到8253的A1引脚,而将A1与8253的A0引脚相连。

(如上如所示)例题解析:5.若8253的地址为:04H-07H,要使计数器2工作于方式2,按二进制计数,计数值为02F0H,写出初始化程序。

若要读取通道1的16位计数值,写出其程序。

(1)初始化程序的步骤二、初始化编程步骤和门控信号的功能1.8253的初始化编程步骤接通电源时,8253处于未定义状态,在使用之前,必须用程序把它们初始化为所需的特定模式,这个过程称为初始化编程。

8253的初始化编程

8253的初始化编程

8253的初始化编程8253的初始化编程内容:一是首先向控制寄存器写入控制字,以选定计数通道(三个中之一),规定该计数的工作方式和计数方式以及计数初值的长度和装入顺序(初值写入方式);二是向已选定的计数器按控制字的要求写入计数初值.8253初始化的要求:(1)对每个计数器,控制字必须写在计数值之前.这是因为计数器的读/写格式由它的控制字决定.(2)计数值必须按控制字所规定的格式写入.若控制字规定只写8位,只需写入一次(8位)计数值即可(规定写低8位则高8位自动置0,规定写高8位则低8位自动置0);规定写16位时必须写两次,先写低8位,后写高8位.当初值为0时,也要分两写入,因在二进制计数时,“0”表示65336,在BCD码计数时“0”表示10000=104.(3)对所有方式计数器都可以在计数过程中或计数结束后改变计数值,重写计数值也必须遵守控制字所规定的格式,并且不会改变当前计数器的工作方式.(4)计数值不能直接写到减1计数器中,而只能写入计数值寄存器中,并由写操作WR之后的下一个CLK脉冲将计数值寄存器的内容装入减1计数器开始计数.(5)初始化编程必须明确各个计数器的控制字和计数值不是写到同一个地址单元.各个计数器的控制字各自独立确定,但它们都写入同一个端口地址(控制字寄存器)中,各个计数器的计数值则根据需要独立确定并写入各自计数器的相应寄存器中.例1:设8086系统中8253的三个计数器的端口地址为060H,062H和064H,控制口地址为066H,要求计数器0为方式 1,按BCD计数;计数初值为1800D,计数器1为方式0,按二进制计数;计数初值为1234H,计数器2为方式3,按二进制计数;当计数初值为065H时,试分别写出计数器0,1,2的初始化程序.计数器0的初始化:计数0的控制字:00100011B=23HMOV AL,23H ;计数器0的控制字OUT 0 66H,AL ;控制字写入8253的控制器MOV AL,18H ;取计数初值的高8位,低8位00可不送OUT 060H,AL ;计数初值送计数器0端口计数器1和初始化:计数器1的控制字:01110000B=70HMOV AL,70H ;计数器的控制字:方式0,送高8位和低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制器MOV AL,034H ;取计数初值的低8位OUT 062H,AL ;计数初值的低8位,写入计数器1端口MOV AL, 12H ;取计数初值的高8位OUT 062H,AL ;计数初值的高8位写入计数器1端口计数器2的初始化:计数器2的控制字:10010110B=96HMOV AL,96H ;计数器2的控制字96H:方式3,只送低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制口MOV AL,056H ;计数初值的低8位OUT 064H,AL ;计数初值的低8位写入计数器2的端口例2:要求读出计数器2的当前计数值,并检查是否为全“1”.8253在读取计数器的当前计数值时,必须分两步进行.首先发一锁存命令(即控制字中RL1RL0=00),将当前计数值锁存到输出锁存器中.第二步执行读操作,即用IN指令将锁存器中内容读入CPU.假设计数初值只有低8位,设其程序段如下(控制口地址为066H,计数器2的口地址为064H):KEEP:MOV AL,80H ;计数器2的锁存命令OUT 066H,AL ;锁存命令写入控制寄存器IN AL,064H ;读输出锁存器中的当前计数值(从计数器2端口读)CMP AL,0FFH ;比较当前计数值是否为全“1”JME KEEP ;非全“1”继续读HLT ;为全“1”暂停8253的应用举例例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位写入计数器1OUT DX,ALMOV AL,10 ;将N的高8位写入计数器1OUT DX,AL例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的片选信号CS, 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,门控信号GATE应接一正跳变信号,OUT端当计数为0时产生一个宽度等于时钟周期的单脉冲.计数系数为36,用BCD计数.所以,计数器0的控制字应为00011011B=1BH.选计数器1:选择方式3,GATE按+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 ;低字节写入计数通道1MOV 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。

8253A和8255A的初始化及相关操作

8253A和8255A的初始化及相关操作

8253A的初始化CODE SEGMENTASSUME CS:CODETCONTRO EQU 004BHTCON2 EQU 004AHCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0500HSTART: JMP TCONTTCONT: CALL FORMATCALL LEDDISPMOV DX, TCONTROMOV AL,0B7HOUT DX,ALMOV DX, TCON2MOV AL,00OUT DX,ALMOV AL,10HOUT DX,ALHLTLEDDISP: MOV AL,90HMOV DX, CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07HJA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DA TA1]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D4FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START8255A的初始化CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOCPT EQU 0072HIOBPT EQU 0071HCONTPORT EQU 00DFHDATAPORT EQU 00DEHDA TA1 EQU 0500HSTART: JMP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV AL,89HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPTIN AL,DXMOV DX,IOBPTOUT DX,ALMOV CX,0FFFFHDELAY: LOOP DELAYJMP IOLED1LEDEISP: MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07HJA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DA TAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND STARTCODE SEGMENTASSUME CS:CODESTART: MOV AL, 82HMOV DX, 0073HOUT DX, ALS: MOV DX, 0071HIN AL, DXMOV DX, 0072HNOT ALOUT DX, ALMOV CX, 0FFFFHDELAY: LOOP DELAYJMP SCODE ENDSEND STARTCODE SEGMENTASSUME CS:CODESTART: MOV AL, 82HMOV DX, 0073HOUT DX, ALMOV AL,0FEHMOV DX, 0072HS:OUT DX, ALROR AL,1DELAY: LOOP DELAYJMP SCODE ENDSEND START利用8253A实现信号灯CODE SEGMENTASSUME CS:CODESTART: MOV AL, 89HMOV DX, 0073HOUT DX, ALS: MOV DX, 0072HIN AL, DXMOV AH, ALAND AH, 80HJZ SAND AL, 03HCMP AL, 00HJZ LIFTCMP AL, 01HJZ RIGHTCMP AL,02HJZ INCRMCMP AL,03HJZ DECM1JMP SDECM1: JMP DECMLIFT: MOV AL, 0FEHL1: MOV DX, 0071HOUT DX, ALROL AL, 1MOV AH,ALMOV CX, 0FFFFHDELAY1: LOOP DELAY1MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ SAND AL, 03HCMP AL, 00HJZ L2JZ RIGHTCMP AL,02HJZ INCRMCMP AL,03HJZ DECML2: MOV AL, AHJMP L1RIGHT: MOV AL, 0FEHR1: MOV DX, 0071H OUT DX, ALROR AL, 1MOV AH,ALMOV CX, 0FFFFH DELAY2: LOOP DELAY2 MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ SAND AL, 03HCMP AL, 00HJZ LIFTCMP AL, 01HJZ R2CMP AL,02HJZ INCRMCMP AL,03HJZ DECMR2: MOV AL,AHJMP R1INCRM: MOV AL, 0FEH I1: MOV DX, 0071HOUT DX, ALDEC ALMOV AH,ALMOV CX, 0FFFFH DELAY3: LOOP DELAY3 MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ S1AND AL, 03HJZ LIFTCMP AL, 01HJZ RIGHTCMP AL,02HJZ I2CMP AL,03HJZ DECMI2 : MOV AL,AHJMP I1DECM: MOV AL, 0FEHE1: MOV DX, 0071HOUT DX, ALINC ALMOV AH, ALMOV CX, 0FFFFH DELAY4: LOOP DELAY4 MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ S1AND AL, 03HCMP AL, 00HJZ LIFT2CMP AL, 01HJZ RIGHT2CMP AL,02HJZ INCRMCMP AL,03HJZ E2E2: MOV AL, AHJMP E1S1: JMP SLIFT2: JMP LIFTRIGHT2: JMP RIGHT CODE ENDSEND START。

微机原理-8253

微机原理-8253

8253工作方式特点: 8253工作方式特点: 工作方式特点
方式0 在写入控制字后,输出端即变低,计数结束后, 方式0,在写入控制字后,输出端即变低,计数结束后,输 出端由低变高,常用该输出信号作为中断源。 出端由低变高,常用该输出信号作为中断源。 方式1 用来产生单脉冲。 方式1,用来产生单脉冲。 方式2 用来产生序列负脉冲,每个负脉冲的宽度与CLK脉冲 方式2,用来产生序列负脉冲,每个负脉冲的宽度与CLK脉冲 CLK 的周期相同。 的周期相同。 方式3 用来产生连续的方波。方式2和方式3 方式3,用来产生连续的方波。方式2和方式3都实现对时钟 脉冲进行n分频。 脉冲进行n分频。 方式4和方式5 波形相同,都在计数器回0 方式4和方式5的波形相同,都在计数器回0后,从OUT端输出 OUT端输出 一个负脉冲,其宽度等于一个时钟周期。 一个负脉冲,其宽度等于一个时钟周期。 方式0 方式0、1和4,计数初值装进计数器后,仅一次有效。方式2,3 计数初值装进计数器后,仅一次有效。方式2 在减1计数到0值后,8253会自动将计数值重装进计数器 会自动将计数值重装进计数器。 和5,在减1计数到0值后,8253会自动将计数值重装进计数器。
可编程定时器/计数器8253
8253可编程定时器 计数器的主要性能: 可编程定时器/计数器的主要性能 可编程定时器 计数器的主要性能: 个独立的16位计数器 有3个独立的 位计数器 个独立的 工作方式可编程控制 计数脉冲频率0~2MHz 计数脉冲频率 可以按二进制或BCD码计数 可以按二进制或BCD码计数 使用单一+5V电源 电源 使用单一
方式2:频率发生器(n分频器)
CLK
WR
GATE OUT
n=4
4
3 2
1 0 4 3

微机原理——8253

微机原理——8253

1、若8253的地址为04H~07H,要使用计数器1工作在方式0,仅用8位二进制计数,计数值为128,初始化程序为(可能端口地址,工作方式,计数器初始值会改变)解:MOV AL , 50HOUT 07H , ALMOV AL , 80HOUT 05H , AL2、试编写一段程序,按下列要求设置如下图中8254的三个计数器;计数器0:二进制计数,在操作方式0下操作,计数初值为1234H解:MOV AL , 30HOUT 4CH , ALMOV AL , 34HOUT 40H , ALMOV AL , 12HOUT 40H , AL3、要求8253输出周期为100ms的方波。

设系统时钟为2MHz,口地址为1E0H~1E3H,CPU 为8088解:计数器初值N=100ms /(1/ 2MHz )=20×10000>65535,故需要两个计数通道协助完成,设选用通道0和通道1MOV AL , 17HMOV DX , 1E3HOUT DX , ALMOV AL , 20HMOV DX , 1E0HOUT DX , ALMOV AL , 57HMOV DX , 1E3HOUT DX , ALMOV AL , 00MOV DX , 1E1H4、若8253的地址为04H~07H,要使用计数器0工作在方式1,按BCD计数,计数值为3000,初始化程序为解:MOV AL , 23HOUT 07H , ALMOV AL , 30HOUT 04H , AL5、若8253的地址为04H~07H,要使用计数器2工作在方式2,按二进制计数,计数值为02F0H,初始化程序为解:MOV AL , 0B4HOUT 07H , ALMOV AL , 0F0HOUT 06H , ALMOV AL , 02HOUT 06H , AL6、用计数器0,工作在方式1,按BCD码计数,计数值为5080H,初始化编程如下,端口地址为F8H~FBHMOV AL , 33HOUT 0FBH , ALMOV AL , 80HOUT 0F8H , ALMOV AL , 50HOUT 0F8H , AL7、设8253芯片的端口地址为230H~233H。

8253习题参考答案解析

8253习题参考答案解析

计数器0的初值:5000 MOV AL,34H MOV DX,0FFF3H OUT DX,AL MOV AX,5000 MOV DX,0FFF0H OUT DX,AL MOV AL,AH OUT DX,AL
开放IRQ4中断片段: IN AL,21H AND AL,0EFH OUT 21H,AL
计数器1初值:1000 MOV AL,78H MOV DX,0FFF3H OUT DX,AL MOV AX,1000 MOV DX,0FFF1H OUT DX,AL MOV AL,AH OUT DX,AL
补充1:某系统中8253芯片的通道0~通道2和控制字端口地 址分别为FFF0~FFF3H。定义通道0工作在方式2, CLK0=5MHZ,要求输出OUT0=1KHZ频率波。定义通道 1工作在方式4,用OUT0作计数脉冲,计数值为1000,计 数到0,向CPU发中断请求信号,接于IRQ4。编写8253 两个通道的初始化程序及中断向量、中断屏蔽位设置的程 序,并画出两计数通道的连接图。 分析:
题5-13 可编程计数器8253的级联是什么意思?什么时候会 用到级联。 答:8253的通道间,一个通道的输出OUT作为其它通道的 输入CLK,这种情况就称为级联。 当定时或计数初值大于一个通道的最大计数初值时,需 要通道级联来扩大计数范围。
题5-14、8253的片选信号如图所示: ①列出8253内各计数器及控制字寄存器的一组地址。 ②现有1MHz方波,利用这片8253产生1KHz方波,说明如 何实现(利用的计数器、工作方式及计数初值),写出对 8253编程的有关内容。
选择3A0~3A3H这组地址: 用计数器0,工作方式3 计数初值为:1MHZ/1KHZ=1000
8253初始化程序片段如下:
MOV MOV OUT MOV MOV OUT MOV OUT AL,36H ;0011 0110B DX,3A3H DX,AL AX,1000 DX,3A0H DX,AL AL,AH DX,AL

8253工作方式以及应用举例

8253工作方式以及应用举例

第27课 8253工作方式以及应用举例8253的六种工作方式,8253的实际应用举例。

本课主题:教学目的:掌握8253六种工作方式的特点以及使用方法,通过实际应用举例强化8253的使用方法。

教学重点:8253的硬件连接和软件初始化方法。

教学难点:8253的在系统中的应用。

授课内容:8253的每个通道都有6种不同的工作方式,下面分别进行介绍。

1.方式0--计数结束中断方式(Interrupt on Terminal Count)2.方式1--可编程单稳态输出方式(Programmable One-short)3.方式2--比率发生器(Rate Generator)4.方式3--方波发生器(Square Wave Generator)5.方式4--软件触发选通(Software Triggered Strobe)6.方式5--硬件触发选通(Hardware Triggered Strobe)由上面的讨论可知,6种工作方式各有特点,因而适用的场合也不一样。

现将各种方式的主要特点概括如下:对于方式0,在写入控制字后,输出端即变低,计数结束后,输出端由低变高,常用该输出信号作为中断源。

其余5种方式写入控制字后,输出均变高。

方式0可用来实现定时或对外部事件进行计数。

方式1用来产生单脉冲。

方式2用来产生序列负脉冲,每个负脉冲的宽度与CLK脉冲的周期相同。

方式3用于产生连续的方波。

方式2和方式3都实现对时钟脉冲进行n分频。

方式4和方式5的波形相同,都在计数器回0后,从OUT端输出一个负脉冲,其宽度等于一个时钟周期。

但方式4由软件(设置计数值)触发计数,而方式5由硬件(门控信号GATE)触发计数。

这6种工作方式中,方式0、1和4,计数初值装进计数器后,仅一次有效。

如果要通道再次按此方式工作,必须重新装入计数值。

对于方式2、3和5,在减1计数到0值后,8253会自动将计数值重装进计数器。

8.2 8253的应用举例一、8253定时功能的应用例子1(用8253产生各种定时波形在某个以8086为CPU的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频率为1MHz。

8253的工作方式解析

8253的工作方式解析

8253的工作方式1.方式0 计数结束产生中断8253用作计数器时一般工作在方式0。

所谓计数结束产生中断,是指在计数值减到0时,输出端(OUT)产生的输出信号可作为中断申请信号,要求CPU进行相应的处理。

方式0有如下特点:① 当控制字写进控制字寄存器确定了方式0时,计数器的输出(OUT端口)保持低电平,一直保持到计数值减到0。

② 计数初值装入计数器之后,在门控GATE信号为高电平时计数器开始减1计数。

当计数器减到0时输出端OUT才由低变高,此高电平输出一直保持到该计数器装入新的计数值或再次写入方式0控制字为止。

若要使用中断,可以计数到0的输出信号向CPU发出中断请求,申请中断。

③ GATE为计数控制门,方式0的计数过程可由GATE控制暂停,即GATE=1时,允许计数;GATE=0时,停止计数。

GATE 信号的变化不影响输出OUT端口的状态。

④ 计数过程中,可重新装入计数初值。

如果在计数过程中,重新写入某一计数初值,则在写完新计数值后,计数器将从该值重新开始作减1计数。

2.方式1 可编程的单拍负脉冲可编程的单拍负脉冲又称为单稳态输出方式,简称单稳定时。

方式1的特点是:① CPU写入控制字后,计数器输出OUT端为高电平作为起始电平,在写入计数值后计数器并不开始计数(不管此时GATE 是高电平还是低电平),而要由外部门控GATE脉冲上升沿启动,并在上升沿之后的下一个CLK输入脉冲的下降沿开始计数。

② GATE上升沿启动计数的同时,使输出OUT变低,每来一个计数脉冲,计数器作减一计数,直到计数减为 0时,OUT 输出端再变为高电平。

OUT端输出的单拍负脉冲的宽度为计数初值乘以CLK端脉冲周期。

设计数初值为N,则单拍脉冲宽度为N个CLK时钟脉冲周期。

③ 如果在计数器未减到0时,GATE又来一触发脉冲,则由下一个时钟脉冲开始,计数器将从初始值重新作减1计数。

当减至0时,输出端又变为高电平。

这样,使输出脉冲宽度延长。

微型计算机原理与接口技术第八章课后答案

微型计算机原理与接口技术第八章课后答案

第八章1. 8253芯片有哪几个计数通道?每个计数通道可工作于哪几种工作方式?这些操作方式的主要特点是什么?答:8253内部包含3个完全相同的计数器/定时器通道,即0~2计数通道,对3个通道的操作完全是独立的。

8253的每个通道都有6种不同的工作方式。

方式0——计数结束中断方式:当对8253的任一个通道写入控制字,并选定工作于方式0时,该通道的输出端OUT立即变为低电平。

要使8253能够进行计数,门控信号GATE 必须为高电平。

经过n十1个脉冲后,计数器减为0,这时OUT引脚由低电平变成高电平。

OUT引脚上的高电平信号,一直保持到对该计数器装入新的计数值,或设置新的工作方式为止。

在计数的过程中,如果GATE变为低电平,则暂停减1计数,计数器保持GATE有效时的值不变,OUT仍为低电平。

待GATE回到高电平后,又继续往下计数。

方式1——可编程单稳态输出方式:当CPU用控制字设定某计数器工作于方式1时,该计数器的输出OUT立即变为高电平。

GATE出现一个上升沿后,在下一个时钟脉冲的下降沿,将n装入计数器的执行部件,同时,输出端OUT由高电平向低电平跳变。

当计数器的值减为零时,输出端OUT产生由低到高的正跳变,在OUT引脚上得到一个n个时钟宽度的负单脉冲。

在计数过程中,若GATE产生负跳变,不会影响计数过程的进行。

但若在计数器回零前,GATE又产生从低到高的正跳变,则8253又将初值n装入计数器执行部件,重新开始计数,其结果会使输出的单脉冲宽度加宽。

方式2——比率发生器:当对某一计数通道写入控制字,选定工作方式2时,OUT端输出高电平。

如果GATE为高电平,则在写入计数值后的下一个时钟脉冲时,将计数值装入执行部件,此后,计数器随着时钟脉冲的输入而递减计数。

当计数值减为1时,OUT端由高电乎变为低电平,待计数器的值减为0时,OUT引脚又回到高电平,即低电平的持续时间等于一个输入时钟周期。

与此同时,还将计数初值重新装入计数器,开始一个新的计数过程,并由此循环计数。

可编程定时器计数器8253及其应用

可编程定时器计数器8253及其应用

合用标准文案第八章可编程准时器 / 计数器 8253 及其应用【回顾】可编程芯片的看法,端口的看法。

【本讲重点】准时与计数的基本看法及其意义,准时/ 计数器芯片 Intel8253的性能归纳,内、外面结构及其与CPU的连接。

准时与计数1.准时与计数在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于准时工作状态,也许对外面过程进行计数。

准时或计数的工作实质均表现为对脉冲信号的计数,若是计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于必然的时间,这一过程即为准时,若是计数的对象是与外面过程相对应的脉冲信号(周期能够不相等),则此时即为计数。

2.准时与计数的实现方法(1)硬件法特地设计一套电路用以实现准时与计数,特点是需要开销必然硬设备,而且当电路制成此后,准市价及计数范围不能够改变。

(2)软件法利用一段延时子程序来实现准时操作,特点,无需太多的硬设备,控制比较方便,但在准时期间, CPU不能够从事其余工作,降低了机器的利用率。

(3)软、硬件结合法即设计一种特地的拥有可编程特点的芯片,来控拟定时和计数的操作,而这些芯片,拥有中断控制能力,准时、计数到时能产生中断央求信号,所以准时期间不影响CPU的正常工作。

准时/计数器芯片Intel8253Intel8253是8086微机系统常用的准时/计数器芯片,它拥有准时与计数两大功能。

一、 8253 的一般性能归纳1.每个 8253 芯片有 3 个独立的 16 位计数器通道;2.每个计数器通道都能够依照二进制或二—十进制(BCD码) 计数;3.每个计数器的计数速率能够高达2MHz;4.每个通道有 6 种工作方式,能够由程序设定和改变;5.所有的输入、输出电平都与TTL 兼容。

二、 8253 内部结构8253 的内部结构如图8-1 所示,它主要包括以下几个主要部分:图 8-1 8253的内部结构1.数据总线缓冲器实现 8253 与 CPU数据总线连接的 8 位双向三态缓冲器,用以传达 CPU向 8253 的控制信息、数据信息以及 CPU从 8253 读取的状态信息,包括某时辰的实时计数值。

可编程定时计数器8253

可编程定时计数器8253
节 OUT DX,AL;写入计数值高字节 MOV AL,10110100B;二进制,方式2,写入16位数,计数器2 MOV DX,04C6H;控制口地址
OUT DX,AL MOV AL,04H;计数值低字节 MOV DX,04C4H;设置计数器2地址 OUT DX,AL;写入计数值低字节 MOV AL,03H;计数值高字节 OUT DX,AL;写入计数值高字节
8位的控制寄存器 16位的初值寄存器 16位计数执行单元CE 16位输出锁存器OL
CLK:计数时钟,输入。用于输入定时脉冲或计数脉 冲信号。计数器用其下降沿作减1计数。
GATE:门控信号,输入,由外部信号通过GATE端控 制计数器的启动计数和停止计数的操作。
OUT:输出信号。在不同的模式下,可输出不同波形。
8253的工作方式-方式4(软件触发选通)
软件启动,不自动重复
8253的工作方式-方式4(软件触发选通)
GATE为低
8253的工作方式-方式4(软件触发选通)
计数过程中重新写入计数初值
8253的工作方式-方式5(硬件触发选通)
硬件触发选通方式,完全由GATE端引入 的触发信号控制定时和计数
MOV AL,00011010B;二进制,方式5,写低字节,计数器0 MOV DX,04C6H;设置8253控制口地址 OUT DX,AL;写入工作方式控制字 MOVAL,46H;计数值的低字节 MOVDX,04C0H;设置8253计数器0地址 OUT DX,AL;写入计数值的低字节 MOV AL,01110011B;BCD数,方式1,写16位数,计数器1 MOV DX,04C6H;设置8253控制器地址 OUT DX,AL;写入工作方式控制字 MOV AL,00H;计数值低字节 MOV DX,04C2H;设置8253计数器1地址 OUT DX,AL;写入计数值低字节

8253计数器初始化编程

8253计数器初始化编程

8253计数器级联
FIN0=2MHz,FOUT0提供 微秒刷新信号(1000Hz), FOUT1提供秒刷新信号(1Hz), FOUT2提供分刷新信号,计数 器0工作在方式3下,二进制计数; 计数器1工作在方式2下,BCD码 计数;计数器2工作在方式2下, 二进制计数。
N0=2000 N1=1000 N2=60
A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0(01,10,11)
83ECH,83EDH,83EEH,83EFH
初始化编程
• MOV DX, 83EFH • MOV AL, CW0 • OUT DX,AL • ;写时间常数 • MOV DX, 83ECH • MOV AX, 1000 • OUT DX, AL • MOV AL,AH • OUT DX,AL
8253计数器初始化编程
步骤:先写入控制字,在写时间常数
以计数器0为例:
;写入控制字(通过控制口地址) MOV DX, CONTROL; 假设CONTROL为控制口地址 MOV AL, CW0 ;CW0为计数器0的控制值 OUT DX,AL ;写时间常数 MOV DX, CONT0;CONT0为计数器0的端口地址 MOV AX, N0;N0为计数器0的时间常数,16位 OUT DX, AL MOV AL,AH OUT DX,AL
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8253的初始化编程
8253的初始化编程内容:一是首先向控制寄存器写入控制字,以选定计数通道(三个中之一),规定该计数的工作方式和计数方式以及计数初值的长度和装入顺序(初值写入方式);二是向已选定的计数器按控制字的要求写入计数初值.
8253初始化的要求:
(1)对每个计数器,控制字必须写在计数值之前.这是因为计数器的读/写格式由它的控制字决定.
(2)计数值必须按控制字所规定的格式写入.若控制字规定只写8位,只需写入一次(8位)计数值即可(规定写低8位则高8位自动置0,规定写高8位则低8位自动置0);规定写16位时必须写两次,先写低8位,后写高8位.当初值为0时,也要分两写入,因在二进制计数时,“0”表示65336,在BCD码计数时“0”表示10000=104.
(3)对所有方式计数器都可以在计数过程中或计数结束后改变计数值,重写计数值也必须遵守控制字所规定的格式,并且不会改变当前计数器的工作方式.
(4)计数值不能直接写到减1计数器中,而只能写入计数值寄存器中,并由写操作WR之后的下一个CLK脉冲将计数值寄存器的内容装入减1计数器开始计数.
(5)初始化编程必须明确各个计数器的控制字和计数值不是写到同一个地址单元.各个计数器的控制字各自独立确定,但它们都写入同一个端口地址(控制字寄存器)中,各个计数器的计数值则根据需要独立确定并写入各自计数器的相应寄存器中.
例1:设8086系统中8253的三个计数器的端口地址为060H,062H和064H,控制口地址为066H,要求计数器0为方式 1,按BCD计数;计数初值为1800D,计数器1为方式0,按二进制计数;计数初值为1234H,计数器2为方式3,按二进制计数;当计数初值为065H时,
试分别写出计数器0,1,2的初始化程序.
计数器0的初始化:
计数0的控制字:00100011B=23H
MOV AL,23H ;计数器0的控制字
OUT 0 66H,AL ;控制字写入8253的控制器
MOV AL,18H ;取计数初值的高8位,低8位00可不送
OUT 060H,AL ;计数初值送计数器0端口
计数器1和初始化:
计数器1的控制字:01110000B=70H
MOV AL,70H ;计数器的控制字:方式0,送高8位和低8位,二进制计数
OUT 066H,AL ;控制字写入8253的控制器
MOV AL,034H ;取计数初值的低8位
OUT 062H,AL ;计数初值的低8位,写入计数器1端口
MOV AL, 12H ;取计数初值的高8位
OUT 062H,AL ;计数初值的高8位写入计数器1端口
计数器2的初始化:
计数器2的控制字:10010110B=96H
MOV AL,96H ;计数器2的控制字96H:方式3,只送低8位,二进制计数
OUT 066H,AL ;控制字写入8253的控制口
MOV AL,056H ;计数初值的低8位
OUT 064H,AL ;计数初值的低8位写入计数器2的端口
例2:要求读出计数器2的当前计数值,并检查是否为全“1”.
8253在读取计数器的当前计数值时,必须分两步进行.首先发一锁存命令(即控制字中RL1RL0=00),将当前计数值锁存到输出锁存
器中.第二步执行读操作,即用IN指令将锁存器中内容读入CPU.
假设计数初值只有低8位,设其程序段如下(控制口地址为066H,计数器2的口地址为064H):
KEEP:MOV AL,80H ;计数器2的锁存命令
OUT 066H,AL ;锁存命令写入控制寄存器
IN AL,064H ;读输出锁存器中的当前计数值(从计数器2端口读)
CMP AL,0FFH ;比较当前计数值是否为全“1”
JME KEEP ;非全“1”继续读
HLT ;为全“1”暂停
8253的应用举例
例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
例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的片选信号CS, 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,门控信号GATE应接一正跳变信号,OUT端当计数为0时产生一个宽度等于时钟周期的单脉冲.计数系数为36,用BCD计数.所以,计数器0的控制字应为00011011B=1BH.
选计数器1:选择方式3,GATE按+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。

相关文档
最新文档