《微机原理与接口技术》第五章——定时器/计数器和8253A

虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!

第1节——定时器和计数器的概念

计数/Counter:统计某对象的数量(典型的计数对象是脉冲)

定时/Timer:定时的本质是计数。当计数对象出现的“时间间隔”固定且已知,则

                     定时时间=计数数量×时间间隔

第2节——8253A的结构和工作原理

8253A的结构和基本特点

①有3个16位相互独立的计数器:T0, T1, T2

②每个计数器都可以按照二进制二—十进制计数

③每个计数器可设置6种不同的工作方式

④每个计数器可以预置计数初值(时间常数)

⑤计数器的当前计数值可被CPU读出

8053A的外部引脚【24脚,+5V】

功能引脚(面向CPU的信号线)

功能引脚(面向I/0的信号线)

①数据总线D0~D7

三态输出/输入线:数据、命令和状态

⑥时钟信号CLK

计数的对象:每输入1个脉冲便计数1次。

CLK 0、CLK 1、CLK 2

②片选线(CS)

低电平有效。由地址译码的结果控制

⑦门控信号GATE

控制计数的启动、暂停、禁止

具体功能和工作方式有关

GATE0、GATE1、GATE2

③ 读信号(RD)

低电平有效。对8253A寄存器进行读操作

⑧计数器输出OUT

输出特定波形标识定时或计数完毕或计数过程

OUT0、OUT1、OUT2

④写信号(WR)

低电平有效。对8253A寄存器进行写操作

 

⑤地址线A1A0

接到系统地址总线的A1A0

A1A0用于选择8253A内部寄存器。

 

8253A内部有6个模块

①3个独立的计数器

        结构完全相同,完成计数过程

②数据总线缓冲器

        与CPU数据总线D0~D7相连

             写入命令字

             写入计数初值

             读出计数初值或当前值

③控制命令寄存器

         接收控制命令,选择计数器及设定工作方式

④读写逻辑

         根据CPU读/写信号地址信号选择数据传输方向和端口

计数器工作原理

通过控制命令结合GATE,以某种特定方式对CLK脉冲进行计数并在OUT端输出相应波形。

计数初值C的确定

计数初值C决定了计数的次数或定时的长度

①单纯的计数:直接设定

②作为定时用,把时间L转成相应的计数C

假设时钟周期为TCLK (或频率fCLK)

C = L / TCLK = L * fCLK

例: 定时 5ms , 时钟1.19318MHz,

则 C = L * fCLK = 5*10-3 * 1.19318 * 106 = 5965

 

8253A的端口选择和操作

端口选择:4个端口:T0,T1,T2,控制端口

CS

片选

RD

读操作

WD

写操作

A1

地址线

A0

地址线

选中的对象

操作

0

1

0

0

0

T0

写入“计数初值”

0

1

0

0

1

T1

写入“计数初值”

0

1

0

1

0

T2

写入“计数初值”

0

1

0

1

1

控制寄存器

写“工作方式控制字”

0

0

1

0

0

T0

读“当前计数值”

0

0

1

0

1

T1

读“当前计数值”

0

0

1

1

0

T2

读“当前计数值”

0

0

1

1

1

三态

 

1

×

×

×

×

三态

 

0

1

1

×

×

三态

 

第3节——8253A的初始化和基本操作

●控制端口:工作方式控制字(选择计数器并设定工作方式)

①选择计数器:T0,T1或T2

②确定读写数据方式(8位或16位,字节位置和顺序)

③确定计数器的工作方式(方式0~5)

④确定计数的机制(二进制码或BCD码)

●T0或T1或T2端口:设定计数初值

写入计数初值:向选定的计数器写入计数初值

工作方式控制字(CW)

①选择计数器:T0,T1或T2

②确定读写数据方式(8位或16位,字节位置和顺序)

③确定计数器的工作方式(方式0~5)

④确定计数的机制(二进制码或BCD码)

D7

D6

D5

D4

D3

D2

D1

D0

SC1

SC0

RW1

RW0

M2

M1

M0

BCD

计数器选择

读写数据方式

工作方式

码制

0 0 :T0

0 1 :T1

1 0 :T2

1 1 :不用

00:不用(锁存

0 1 :低8位

1 0 :高8位

1 1 :先低后高

0 0 0 :方式0

0 0 1 :方式1

X 1 0 :方式2

X 1 1 :方式3

1 0 0 :方式4

1 0 1 :方式5

0 :二进制

1 :BCD

课堂作业1

工作方式控制字  芯片地址304(即304~307且控制端口307

例: T1 ,方式0,二进制,计数初值BYTEH:BYTEL。

MOV DX, 307H                ; 命令口,把16位数据307H送到DX寄存器

MOV AL, 01110000B      ;工作方式控制字,把控制字0111000B送到AL寄存器

OUT DX, AL                    ;把AL中的控制字写入命令寄存器

MOV DX, 305H                ; T1数据口,把305H送到DX寄存器

MOV AL, BYTEL             ;计数初值低字节

OUT DX, AL

MOV AL, BYTEH            ;计数初值高字节

OUT DX, AL

●8253A的基本操作:

①获取当前计数值:直接读取或锁存命令

②获得工作状态:获得状态字

③通过向控制端口写特定的字完成

●锁存命令:

 

课堂作业2

锁存命令  芯片地址304(即304~307且控制端口307)

例:读出T2当前计数值(16位),并装入AX寄存器。

MOV DX, 307H              ;命令口            

MOV AL, 10000000B    ;T2的锁存命令

OUT DX, AL                  ;写入命令寄存器

MOV DX, 306H             ;T2数据口

IN AL, DX                     ;读T2的当前计数值的低8位

MOV BL , AL

IN AL, DX                     ;读T2的当前计数值的高8位

MOV AH, AL

MOV AL , BL

第4节——8253A的工作方式和应用 

●工作方式:方式0~方式5

●工作方式的主要差异:

①OUT信号或波形

②计数的启动方式(软件启动、硬件启动(GATE))

③初值(/重新)装入的生效方式

 

●方式0:计数结束中断方式

基本特点:典型的事件计数用法

①写入工作方式控制字(CW, Control Word)

         OUT开始变成高电平

②写计数初值C初值寄存器

         下一个CLK周期把C装入减1计数器

         GATE高电平时立即开始计数。

③计数期间OUT维持低电平。

④当减1计数器减到0时OUT变为电平。

⑤当重新写入C后,立即开始新一轮计数

       OUT再次变成低电平

       计数期间,如果重写计数写计数值,立即重新开始计数。

GATE:高电平:允许/继续计数 ;低电平:禁止计数

⑦OUT可作中断请求信号【特点:被响应后才变低】

例子:计数初值C=4

方式1 

同方式0很类似

①写入控制字CW后,OUT变电平。

②写入计数初值C

③GATE上跳时,C装入减1计数器,开始计数,OUT变

④整个计数过程中OUT维持低电平,直到计数结束才变高。

       OUT负脉冲宽度 = 计数初值 * CLK周期

⑤如果计数过程中GATE出现上跳,则重新计数。

⑥计数过程中如果重写初值,则要等当前计数结束且GATE再次出现上升沿后,才能开始新的计数

方式1的应用场合:

改变计数初值C可产生不同宽度的低电平,获取可变宽脉冲信号

实现脉宽调制

 

方式2:周期性负脉冲输出,分频器

若计数初值为N,则OUT输出的频率为CLK的1/N。又称N分频器

①写入控制字CW,OUT变成高电平。

②写入计数初值C

③若GATE为高电平时,下一个CLK周期把C写入减1计数器,并开始计数。

④计数过程中OUT保持电平,直到倒数第2个CLK。

⑤减一计数到1时,OUT输出1个负脉冲宽度为1个CLK周期

自动装入C, OUT再次变成高电平,开始新一轮计数。

注意

      方式2中启动动计数器的方法有两种

      软件启动过程:装入计数初值

      硬件启动过程:GATE上升沿

方式2的应用场合:

      OUT正脉冲宽度 =(计数初值 - 1)x CLK周期

      OUT负脉冲宽度 = 1个CLK周期。

方式3:周期性方波输出

①与方式2基本相同:自动装入计数初值C,循环计数

②不同之处:OUT输出占空比为1:1或近似1:1的方波

       C为偶数时,OUT的高、低电平前后各一半

       C为奇数时:

                前(N+1) / 2个CLK:OUT高电平

                后(N -1) / 2个CLK:OUT低电平。

●特点:

减1计数器每次计数减2

②OUT输出方波信号

③计数器有软件启动和有硬件启动两种方式。

方式4:单次负脉冲输出

计数过程和特点

软件启动计数:写入计数初值C触发计数器开始工作:

设定方式后,OUT为电平;

②写入C后,在下一个CLK开始计数

③计数期间OUT保持电平

④计数结束输出1个CLK脉冲,然后OUT恢复电平。

⑤GATE作用

     高电平:允许计数;

     低电平:停止(不是暂停)计数

     恢复高电平:重新开始新一轮的计数。

⑥重写新的计数初值

     不影响当前计数过程,直到下一轮计数时才生效

方式5:单次负脉冲输出

同方式4类似,单次负脉冲输出,硬件触发

       GATE上升沿触发计数开始

①写入C后,不立即计数,而要由GATE上升沿启动计数。

②计数过程中OUT维持高电平

③计数到0后,OUT输出1个CLK的负脉冲后恢复高电平。

④在计数过程中,如GATE出现上升沿,立即开始新一轮计数

6种工作方式的总结

●差异

①计数过程和计数结束时OUT电平的高低和持续时间(波形)

②单次计数或自动循环计数

③计数的启动方式:软件(写计数初值)或硬件(GATE)

●方式0和方式 1

①输出波形类似

②无自动重装C的能力

③启动计数的触发信号不一样

       方式0:软件(写初值)

       方式1:硬件(GATE上沿)

●方式2 (N分频器)和方式3 (方波发生器)

①计数初值自动重装,循环计数

②OUT频率:CLK的N分之一;

③方式2:计数时高电平,结束时1个CLK负脉冲

④方式3:前一半为高,后一半为低

●方式4 (单次负脉冲)和5方式(单次负脉冲)

①输出波形相同:单次负脉冲

②无自动重装能力

③启动计数方式不同:方式4:软件,方式5:硬件

●方式2 (N分频)和方式4与5

①方式2:周期性负脉冲

②方式4与5:单次负脉冲

猜你喜欢

转载自blog.csdn.net/weixin_40851250/article/details/84326216