📄 chapter7.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>第七章 可编程计数</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body bgcolor="#A36D25" text="#FFFFFF">
<h1 align="left"><font face="宋体" color="#FFFFFF" size="7">第七章
可编程计数/定时器</font></h1>
<h2 align="center"><font face="宋体" color="#FFFFFF" size="6">§7.1 概述</font></h2>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">
定时功能是一个在实际应用系统中经常用到的功能。定时的实现一般包括两种方法:</font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">一、软件方法</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">根据所需要的定时时间,设计一个延迟子程序。例如:</font></p>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">...</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV DX,3000H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">LOOP2:MOV CX,2000H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">LOOP1:LOOP LOOP1</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">DEC DX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">JNZ LOOP2</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">...</font></p>
</blockquote>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">特点:节省硬件;需要人工精确计算子程序的执行时间,降低了CPU的适用效率,不能建立多作业环境。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">应用场合:在已有系统上作软件开发;延时时间较小且重复次数有限时。</font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">二、硬件方法</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">
需要专门的硬件电路,不额外占用CPU的机时,效率高。当要求精确且频繁的定时时,宜于使用硬件定时方法。</font></p>
<h4 align="left"><font face="宋体" size="5" color="#FFFFFF">1、简单硬件电路</font></h4>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">
例如,利用555芯片组成的定时电路,可以获得精确度不是太高的定时信号。</font></p>
</blockquote>
<p align="center"><img src="555.gif" width="254" height="276" alt="555.gif (2764 bytes)"></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">输出端V<sub>O</sub>输出信号的频率f为:</font></p>
</blockquote>
<p align="center"><img src="555gsh.gif" width="357" height="105"
alt="555gsh.gif (984 bytes)"></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2、可编程计数/定时器。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">
使用专用的可编程计数/定时器8253,可以实现精度相当高的定时。</font></p>
</blockquote>
<h2 align="center"><font face="宋体" color="#FFFFFF" size="6">§7.2 可编程计数/定时器8253</font></h2>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">一、8253的外部引脚和内部结构</font></h3>
<p align="center"><img src="8253.gif" width="507" height="452" alt="8253.gif (6969 bytes)"></p>
<p align="center"><img src="8253nbjg.gif" width="491" height="335"
alt="8253nbjg.gif (8536 bytes)"></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"> Intel 8253的最高计数频率为2.6MHz,具有3个独立的16位计数器。</font></p>
<h4 align="left"><font face="宋体" size="5" color="#FFFFFF">1、计数器部分</font></h4>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"> 具有3个结构完全相同但相互独立的16位计数器,分别称为计数器0、计数器1和计数器2。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">
每个计数器包括:</font></p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">16位的计数初值寄存器</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">16位的减1计数执行部件</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">16位的当前计数值锁存器</font></p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"> 8253的计数过程是一个从计数初值寄存器读取计数初值之后的减1计数。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">
每个计数器有3个引脚和外部相连:</font></p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">时钟信号输入端CLK</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">门控信号输入端GATE</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">信号输出端OUT</font></p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2、数据总线缓冲器</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">8位双向三态缓冲器。</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">3、读/写控制逻辑电路</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"><span
style="text-decoration: overline">CS</span>:片选信号,低电平有效。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"><span
style="text-decoration: overline">RD</span>:读信号,低电平有效。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"><span
style="text-decoration: overline">WR</span>:写信号,低电平有效。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">A<sub>1</sub>、A<sub>0</sub>:计数器端口选择信号。</font></p>
</blockquote>
</blockquote>
<div align="center"><center>
<table border="1" width="73%">
<tr>
<td width="10%" align="center"
style="background-color: rgb(192,192,192); color: rgb(0,0,0)" bgcolor="#C0C0C0"><big><big><font
color="#000000"><span style="text-decoration: overline">CS</span></font></big></big></td>
<td width="11%" align="center"
style="background-color: rgb(192,192,192); color: rgb(0,0,0)" bgcolor="#C0C0C0"><big><big><font
color="#000000"><span style="text-decoration: overline">RD</span></font></big></big></td>
<td width="12%" align="center"
style="background-color: rgb(192,192,192); color: rgb(0,0,0)" bgcolor="#C0C0C0"><big><big><font
color="#000000"><span style="text-decoration: overline">WR</span></font></big></big></td>
<td width="11%" align="center"
style="background-color: rgb(192,192,192); color: rgb(0,0,0)" bgcolor="#C0C0C0"><big><big><font
color="#000000">A<sub>1</sub></font></big></big></td>
<td width="8%" align="center"
style="background-color: rgb(192,192,192); color: rgb(0,0,0)" bgcolor="#C0C0C0"><big><big><font
color="#000000">A<sub>0</sub></font></big></big></td>
<td width="48%" style="background-color: rgb(192,192,192); color: rgb(0,0,0)"
bgcolor="#C0C0C0"><font color="#000000"><big><big>操作</big></big></font></td>
</tr>
<tr>
<td width="10%" align="center" bgcolor="#008000"><big><big>0</big></big></td>
<td width="11%" align="center" bgcolor="#008000"><big><big>1</big></big></td>
<td width="12%" align="center" bgcolor="#008000"><big><big>0</big></big></td>
<td width="11%" align="center" bgcolor="#008000"><big><big>0</big></big></td>
<td width="8%" align="center" bgcolor="#008000"><big><big>0</big></big></td>
<td width="48%" bgcolor="#008000"><big><big>写计数器0(设置计数器0初值)</big></big></td>
</tr>
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -