1、第3章 计数器/定时器接口,3.1 计数器/定时器工作原理,概述定时:强调结果。隔一段时间输出一个有效信号。计数:通过计数实现定时。强调过程。定义:设定好初值,对输入脉冲信号进行减1计数,减到0,输出一个有效信号。,CLK GATE,1000,OUT,(图1:计数器简图),1ms,1,2. 实现定时方法:软件定时:循环;延迟函数; 硬件定时:分固定式和可编程两种 固定式:如RC单稳电路、计数电路。 可编程接口定时:通过编程来进行设置,图2 8253芯片的内部结构,D,7,-D,0,数据总线,缓冲器,CS,读,/,写,逻辑,RD,WR,A,0,A,1,一、8253内部结构,3.2 可编程计数器/
2、定时器 8253/8254,图3 每个计数器内部结构详图,16位锁存器,16位减1计数器,16位初值寄存器,&,CLK,GATE,OUT,锁存命令,1,二、计数初值(时间常数)Tc 公式: TC= CLK / OUT =Tout / Tclk,1ms,Tout=500 ms,16位锁存器,16位减1计数器,16位初值寄存器,&,CLK,GATE,OUT,1,Tc= ?,计数初值的计算,1 242 233 224 215 20 6 197 188 179 1610 1511 14 12 13,D7 D6 D5 D4 D3 D2 D1 D0 CLK0 OUT0GATE0 GND,_,_,VCCWR
3、RDCSA1A0CLK2OUT2GATE2CLK1OUT1GATE1,图4 定时/计数器8253引脚图,三、外部特性,四、给 8253发命令1. 向控制口发初始化命令 (参见下图),D0,D1,D2,D3,D4,D5,D6,D7,BCD码: 101 - 12,0001 0000 00010001 0000 00000000 1001 10010000 1001 10000000 1001 01110000 1001 01100000 1001 01010000 1001 01000000 1001 00110000 1001 00100000 1001 00010000 1001 000000
4、00 1000 1001,D,7,-D,0,数据总线,缓冲器,图6 初始化命令字的格式,例1 给定一块8253芯片,假设其4个端口地址依次为304H307H,其初始化程序为: MOV DX,307H MOV AL,10 11 011 0B OUT DX,AL MOV DX,306H MOV AX, 533H OUT DX,AL MOV AL,AH OUT DX,AL分析其工作方式:,送方式控制字,送计数初值,2. 向控制口发锁存命令,D0,D1,D2,D3,D4,D5,D6,D7,例2. 读出8253中计数器1当前的计数值(16位)程序片段:MOVDX,307H;控制字寄存器口地址MOVAL,
5、40H;计数器1的锁存命令送ALOUTDX,AL;写入8253的控制字寄存器MOVDX,305H;INAL,DX;读1#数据口的低字节XCHG AL,AH ;暂存AHINAL,DX;读1#数据口的高字节XCHG AL,AH;使计数值的低字节到AL,高字节到AH。,16位锁存器,16位减1计数器,16位初值寄存器,&,CLK,GATE,OUT,图7 锁存命令字,1、计数的二种启动方式:软启动、硬启动,五、计数器的几种工作方式,图8 计数器的启动方式,16位锁存器,16位减1计数器,16位初值寄存器,&,CLK,GATE,OUT,硬启动,1,500,图8 计数器的启动方式,D,7,-D,0,数据总
6、线,缓冲器,计数器,0,号,CLK,0,GATE,0,OUT,0,CS,读,/,写,逻辑,RD,WR,A,0,A,1,2. 计数器的几种工作方式(以0号计数器为例),图8 计数器的工作方式,方式0的时序波形,CLK0,GATE0,WR,(N=5),OUT0,5 4 3 2 1,OUT0,暂停计数,GATE0,继续计数,5 4,3 2 1,方式0(启动方式:软启动),1,图5-4 方式1的时序波形,CLK0,GATE0,WR,(N=5),OUT0,重新启动计数,5 4 3 2 1,OUT0,5 4 3 2 1,GATE0,5,方式1:(启动方式:硬启动),暂停计数,图5-5 方式2的时序波形,C
7、LK0,GATE0,WR,(N=5),GATE0,禁止计数,OUT0,5 4 3 2 1,0(5),0(5) 4 3 2 1,OUT0,5 4,5 4 3 2 1 5 4,方式2(软件/硬件启动),1,自动重装,重新启动计数,16位锁存器,16位减1计数器,&,CLK,GATE,OUT,1,05H,1,自动重装,图5-6 方式3的时序波形,CLK0,GATE0,WR,(N=5),OUT0(N=5),5 4 3 2 1,0(5) 4 3 2 1 0,OUT0(N=4),4 3 2 1,方式3:方波发生器(软件/硬件触发),1,D,7,-D,0,数据总线,缓冲器,计数器,0,号,CLK,0,GAT
8、E,0,OUT,0,CS,读,/,写,逻辑,RD,WR,A,0,A,1,3.3 8253芯片的应用,例1:给定一1KHz的时钟脉冲信号,请你利用8253的1#计数器输出周期为1s的方波信号. 假设其口地址为301H。划出接口电路图。写出初始化程序段。,硬件电路:该8253共占用4个端口: 300、301、302、303H,&,A7A6A5A4A3A2,A9A8,A9 A8 A7 A6 A5 A4 A3 A2 A1 A0IO地址译码: 1 1 0 0 0 0 0 0 x x,初始化程序片段:MOVAL,01 11 011 0B;控制字MOVDX,303H ;控制寄存器地址OUTDX,AL;写入控
9、制字MOVDX,301H;计数器1地址MOVAX,1000OUTDX,ALMOVAL,AHMOVDX,AL,例2:设8253输入时钟为2MHz,要求用一片8253 产生近似1HZ 的对称方波,8253 起始口地址为P8253(0#计数器) 画出连线图,写出初始化程序段,解:分析:计数初值 = 2000000 65536计数器0:输出1000Hz的方波,将其与CLK1连接计数器1;输出1Hz的方波,程序片段:MOVDX, P8253 + 3;控制寄存器MOVAL,00 11 011 1BOUTDX,ALMOVDX,P8253;计数器0MOVAX,2000OUTDX,AL;低8位MOVAL,AHO
10、UTDX,AL;高8位MOVDX,P8253+3MOVAL,01110110BOUTDX,ALMOVDX,P8253+1MOVAX,1000OUTDX,ALMOVAL,AHOUTDX,AL,主板的8253的工作情况(4043H) 输入时钟:1.19318MHz,通道1:控制字0101 0100B 2#方式 计数值12 OUT1:15us 作用:RAM刷新,通道2:控制字 3#方式 计数值 (一般533H) OUT1:1khz 作用:扬声器,本章要点,什么叫可编程芯片8253芯片内有几个计数通道8253芯片内有哪些端口、其端口地址 如何计数器初值如何计算计数器的工作方式,作业:1. 设8253输
11、入时钟为160KHz,用一片8253 产生近似2HZ 的对称方波。要求8253 起始口地址为304,自己设计端口译码电路,画出连线图,写出芯片初始化程序段,第三次实验:定时/计数器8253,CODE SEGMENT ASSUME CS:CODESTART: CLI MOV DX,303H MOV AL,0011 0110B OUT DX,AL MOV DX,300H MOV AL,E8H OUT DX,AL MOV AL,03H OUT DX,AL,GATE0,CLK0,OUT0,1MHZ,0#,1#,1ms方波,10ms 波,MOV DX,303HMOV AL,0111 0110BOUT DX,ALMOV DX,301HMOV AL,0AHOUT DX,ALMOV AL,0HOUT DX,ALSTIMOV AH,4CHINT 21HCODE EDNS END START,附:波特率发生器,TxC=OUTTc=CLK/Baud Factor,移位寄存器(8位),TxC,TxD,8253,OUT,Baud(bit/s),CLK,TxC = Baud Factor,Factor (次/bit),OUT=CLK/TC,1000,16,2MHz,2M,1000*16,