第8章微机原理.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

黄玉清制作第8章定时/计数器82538.1定时基本概念8.2可编程计数器/定时器82538.2.1外部特性与内部编程结构8.2.28253控制字格式8.2.38253的工作模式8.38253应用举例8.3.1计数器/定时器8253的初始化8.3.2时钟程序本章小结本章习题黄玉清制作学习目的通过对本章的学习,您应该能够达到下列要求:了解定时基本概念熟悉可编程计数器/定时器8253的外部特性熟悉可编程计数器/定时器8253工作模式熟悉可编程计数器/定时器8253初始化黄玉清制作重点8253的外部特性8253工作模式8253初始化黄玉清制作8.1定时基本概念一.定时与计数二.微机中的定时方法软件定时——延迟子程序硬件定时——用计数器/定时器82538.1:定时基本概念黄玉清制作例8.1:软件定时的例子:编写一个软件定时程序,要求定时20ms.假设:8086的时钟=8MHz,一个时钟周期T=1/8MHz=0.125us延时20ms,执行PUSHF,POPF指令:需要循环次数:N=20000/[(12+14+17)*0.125]=37209参考程序:MOVCX,37209PUSHF;时钟数:14TPOPF;时钟数:12TLOOP;时钟数:17/5T8.1:软件定时的例子黄玉清制作误差修正:(15+12+19)*0.125=5.75ms写成子程序:DELAY:PUSHCXMOVCX,37209L:PUSHFPOPFLOOPLPOPCXRETPUSHCX;15TPOPCX;12TRET;时钟数:19T8.1:软件定时的例子黄玉清制作主要程序片段LP:CALLDELAYMOVDL,30HMOVAH,02H;DOS调用,显示一个字符INT21HINCDLLOOPLPMOVAH,4CHINT21HDELAYPROCNEAR;软件延时子程序PUSHAXMOVCX,0FFFFHL:PUSHFPOPFLOOPLDO:POPAXRETDELAYENDP8.1:软件定时的例子黄玉清制作8.2可编程计数器/定时器8253/8254PIT(ProgrammableIntervalTimer)8253:最高计数速率:2.6Mhz8254:最高计数速率:8.0Mhz8253与8254引脚相同,用法相同8.2:可编程计数器/定时器8253黄玉清制作8.2.18253外部特性与内部编程结构计数器/定时器8253特点三个独立16位计数器6种工作方式二进制计数与BCD码计数单一5V供电最高计数速率2.6Mhz(8253),8Mhz(8254)片内寻址A1A0=00、01、10、11对应:通道0、1、2和控制口地址黄玉清制作一.外部特性1、8253、8254引脚8.2:8253外部特性黄玉清制作与CPU相连的信号:数据线D7~D0,读RD,写WR,片选CS,地址线A0,A18253GATE0OUT0CLK05V8088CPU1KHzD0~78253运行原理图译码地址M/IOCSWRRDA0A1A0A1WRRD8.2:8253外部特性黄玉清制作1).数据总线缓冲器往计数器设置计数初值;从计数器读取计数值;往控制寄存器设置控制字。2).读/写逻辑电路A1A0:端口选择00:通道0(0号计数器)01:通道1(1号计数器)10:通道2(2号计数器)11:控制字寄存器8.2:8253外部特性黄玉清制作3).控制命令寄存器(8位)4).定时器/计数器:三个16位独立通道:计数器0,计数器1,计数器2每个通道包含:计数初值寄存器(16位)减一寄存器(16位)当前计数初值锁存器(16位)8.2:8253外部特性黄玉清制作二、编程结构:1、8253定时器原理8086控制寄存器存放控制字计数初值寄存器存放计数初值或定时常数减一计数器输出锁存器8.2:8253编程结构黄玉清制作读写控制地址控制片选控制控制寄存器三个独立通道脉冲输入门控信号输出2、8253编程结构8.2:8253编程结构黄玉清制作提问:8253有几个定时通道?8253每个计数通道与外设接口有哪些信号线,每个信号的用途是什么?定时/计数器芯片Intel8253占用几个端口地址?各个端口分别对应什么?8.2:提问黄玉清制作3.计数器/定时器的工作特点1)门脉冲控制时钟输入;2)用门脉冲来重新启动计数;3)用门脉冲停止计数;4)单一计数;5)循环计数.8.2:工作特点黄玉清制作4.计数初值计数初值n=时钟频率fc/输出频率fout=定时时间Tout/时钟脉冲周期Tc5.编程命令方式命令字对8253初始化方式命令字的格式8.2:8253编程命令黄玉清制作8.2.28253控制字格式8.2:8253控制字格式SC1SC0RW1RW0M2M1M0BCD1--计数值为BCD码格式0--计数值为二进制格式M2M1M0模式选择000模式0001模式1/10模式2/11模式3100模式4101模式500----对计数器进行锁存01----只读/写低8位字节10----只读/写高8位字节11----先读/写低8位字节,再读/写高8位字节.00----选计数器001----选计数器110----选计数器211----无意义黄玉清制作8253初始化方法:设置控制字;确定计数初值。例8.2:使2号定时器,工作在方式3,计数初值=533h,二进制计数.试写出8253初始化程序段.8253端口地址:40H,41H,42H,43HMOVAL,10110110B;2号定时器,方式3OUT43H,ALMOVAX,0533HOUT42H,AL;2号数据口MOVAL,AHOUT42H,AL8.2:8253控制字格式黄玉清制作9.2.38253的工作模式方式0——计数结束产生中断一次定时或计数,重写初值,启动新一轮的计数方式1——可编程的单脉冲(单稳)触发器GATE边沿触发,启动新一轮计数方式2——分频器(速度波发生器)具有计数初值重装能力方式3——方波发生器具有计数初值重装能力方式4——软件触发的选通信号发生器一次定时,重写初值,启动新一轮的计数方式5——硬件触发的选通信号发生器GATE边沿触发新一轮计数8.2:8253工作模式黄玉清制作方式0——计数结束产生中断(一次定时或计数,重写初值,启动新一轮的计数)8.2:8253工作模式0黄玉清制作例8.3:使1号定时器,工作在方式0,计数初值=0FF5h,二进制计数.试写出8253初始化程序段.8253端口地址:340H,341H,342H,343HMOVDX,343HMOVAL,01110000B;1号定时器,方式0OUTDX,ALMOVDX,341HMOVAX,0FF5HOUTDX,AL;1号数据口MOVAL,AHOUTDX,AL8.2:8253工作模式0黄玉清制作高方式1_单脉冲触发器(GATE边沿触发,启动新一轮计数)8.2:8253工作模式1黄玉清制作方式2----分频器(具有计数初值重装能力)8.2:8253工作模式2黄玉清制作方式3----方波发生器(具有计数初值重装能力)8.2:8253工作模式3黄玉清制作例8.4:使0号定时器,工作在方式3,计数初值N=1000,二进制计数,试写出8253初始化程序段.8253端口地址:40H,41H,42H,43HMOVAL,10110110B;2号定时器,方式3OUT43H,ALMOVAX,1000OUT40H,AL;0号数据口MOVAL,AHOUT40H,AL8.2:8253工作模式3黄玉清制作方式4----软件触发的选通信号发生器8.2:8253工作模式4黄玉清制作方式5----硬件触发的选通信号发生器8.2:8253工作模式5黄玉清制作例8.5:读当前计数值:由于在计数过程中,减1计数器不断变化,当前计数值必须先锁存到输出锁存器中,方可读出。要锁存,必须再次设置控制字。MOVAL,10000110B;2号定时器,锁存命令OUT43H,ALINAL,42H;先读低字节MOVBL,AL;存低字节到BLINAL,42H;后读高字节MOVBH,AL;存高字节到BH8.2:读当前计数值黄玉清制作提问:8253有几种工作方式?什么是软件触发?什么是硬件触发?可重装初值的工作方式是哪些?8.2:8253工作模式黄玉清制作8.38253应用举例【例8.8】设某应用系统中,系统提供一个频率为10kHz的时钟信号,要求每隔100ms采集一次数据。在系统中,采用8253定时器0来实现这一要求。将8253芯片的CLK0接到系统的10kHz时钟上,OUT0输出接到CPU的中断请求线上,8253的端口地址为210H~213H,如图8.14所示。黄玉清制作(1)定时器工作在方式2(2)确定计数初值已知=10kHz,则=0.1ms,计数初值:n=/=100ms/0.1ms=1000=03E8HCLK0OUT0GATE0A0A1CS译码D7~D08086CPU总线中断请求10KHz+5VRDWR8253100ms100msA9~A3A1A2D7~D0IORIOW黄玉清制作MOVDX,213HMOVAL,34H;计数器0,16位计数,方式2,二进制计数OUTDX,AL;写入方式控制字到控制字寄存器MOVDX,210HMOVAL,0E8H;计数初值低8位OUTDX,AL;写入计数初值低8位到计数器0MOVAL,03H;计数初值高8位OUTDX,AL;写入计数初值高8位到计数器0黄玉清制作【例8.10】已知某8253占用I/O空间地址为40H~43H,设定时器0、定时器1工作于方式3,外部提供一个时钟,频率f=2MHZ。要求定时器1连续产生5ms的定时信号,定时器0连续产生5秒的定时信号。1).一个定时器的最大定时时间:65536/(2*106)=0.032768s=32.768ms因此一个定时器不能完成5s定时!!解决办法:将定时器0与定时器1串连使用,定时器1方式3。8.3:8253应用举例黄玉清制作8.3:8253应用举例地址译码CPUD7~D0AB8253两个定时器串连使用每5ms产生一个脉冲黄玉清制作2).将定时器1的CLK1接2MHZ时钟,计数初值:1000010256111msftn3).将定时器1的OUT1端接到定时器0的CLK0端,定时器0的计数初值:10005200520010510030sfnHZmsf黄玉清制作8253初始化程序:MOVAL,00110110B;0号定时器,方式3OUT43H,ALMOVAX,1000OUT40H,ALMOVAL,AHOUT40H,ALMOVAL,01110110B;1号定时器,方式3OUT43H,ALMOVAX,10000OUT41H,ALMOVAL,AHOUT41H,AL8.3:8253应用举例黄玉清制作8.3.28253在微机系统中的应用CLK0OUT0GATE0A0A1译码D7~D08253A9~A4A0A1D7~D0CLK1OUT1GATE1CLK2OUT2GATE2RDWRIOWIORCS+5V1.19318MHz&74LS068255APB0PB1驱动扬声器8259AIRQ0启动DRAM刷新去CPU的INTINTA黄玉清制作【例8.11】利用PC机的硬件定时8253编制稳定延时5秒的定时程序。(1)分析系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,频率f=1.1931816MHz。定时器0输出方波的频率:fout=1.1931816/65536=18.2Hz输出方波的周期Tout=1/18.2=54.945ms可用55945ms作基本计时单位.1天=24*60*60*1000ms/54.945=1573040(计时单位)=001800B0H同理:1小时=65543(计时单位)1分钟=1092(计时单位)1秒=18.2(计时单位)系统提供1CH中断,作为用户引用定时器中断的中断类型码。黄玉清制作PC机在BIOS中开辟了两个双字变量,用于记录中断次数,即每次中断,就使双字变量加一。当累计满001800B0H个计时单位时,刚好是24小时

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功