资源预览内容
第1页 / 共94页
第2页 / 共94页
第3页 / 共94页
第4页 / 共94页
第5页 / 共94页
第6页 / 共94页
第7页 / 共94页
第8页 / 共94页
第9页 / 共94页
第10页 / 共94页
亲,该文档总共94页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第9章章 计数器计数器/定时器和多功能定时器和多功能接口芯片接口芯片 计数器定时器本章重点本章重点 vv8253/8254的编程结构和工作原理 vv8253/8254控制寄存器的格式和编程命令 vv8253/8254的6种工作模式及其使用 计数器定时器第第9章章 计数器计数器/定时器和多功能接口芯片定时器和多功能接口芯片定时控制在微机系统中极为重要。定时控制在微机系统中极为重要。vv定时信号的获得:定时信号的获得:(1 1)软件方法)软件方法使用使用延迟子程序延迟子程序 优点:节省硬件优点:节省硬件缺点:占用缺点:占用CPUCPU的时间,降低的时间,降低CPUCPU的效率;的效率; 需要拼凑延时时间,较麻烦。需要拼凑延时时间,较麻烦。(2 2)硬件方法)硬件方法使用使用计数器计数器/ /定时器定时器 优点:计数时不占用优点:计数时不占用CPUCPU的时间,提高的时间,提高CPUCPU的利用的利用 率;时间延迟准确。率;时间延迟准确。计数器定时器第第9章章 计数器计数器/定时器和多功能接口芯片定时器和多功能接口芯片vvIntel8253/8254为可编程计数器/定时器。vv8254为8253的改进型,外部特性和使用方法相同,但频率较高,多了个别功能。计数器定时器第第9章章 计数器计数器/定时器和多功能接口芯片定时器和多功能接口芯片vv9.1 9.1 可编程计数器可编程计数器/ /定时器的工作原理定时器的工作原理vv9.2 9.2 8253/82548253/8254的编程结构和外部信号的编程结构和外部信号vv9.3 9.3 8253/82548253/8254的控制字和状态字的控制字和状态字vv9.4 9.4 8253/82548253/8254的编程命令的编程命令vv9.5 9.5 8253/82548253/8254的工作模式的工作模式vv9.6 9.6 8253/82548253/8254应用举例应用举例vv9.7 9.7 3232位微型计算机系统中的多功能接口芯片位微型计算机系统中的多功能接口芯片8238082380计数器定时器9.1 可编程计数器可编程计数器/定时器的工作原理定时器的工作原理 vv计数器:计数器:计数器:计数器:计数减为计数减为0 0时,输出一个信号便结束。时,输出一个信号便结束。vv定时器:定时器:定时器:定时器:不断产生信号。不断产生信号。vv计数器计数器计数器计数器/ /定时器的用处:定时器的用处:定时器的用处:定时器的用处: 作为中断信号实现程序的切换;作为中断信号实现程序的切换; 输出精确的定时信号;输出精确的定时信号; 作为可编程的波特率发生器;作为可编程的波特率发生器; 实现时间延迟。实现时间延迟。计数器定时器计数器计数器计数器计数器/ /定时器的基本原理图定时器的基本原理图定时器的基本原理图定时器的基本原理图 计数器定时器9.2 8253/8254的编程结构和外部信号的编程结构和外部信号vv3 3个独立的个独立的1616位计数器通道;位计数器通道;vv共用共用1 1个控制寄存器和个控制寄存器和1 1个状态寄存器(只有个状态寄存器(只有82548254有状态寄存器)。有状态寄存器)。vv每个计数器有每个计数器有6 6种工作方式;种工作方式;vv按二进制或十进制(按二进制或十进制(BCDBCD码)计数。码)计数。计数器定时器(1) 编程结构编程结构vv3 3个计数器,每个计数器内部有:个计数器,每个计数器内部有:1616位的计数初值寄存器位的计数初值寄存器CRCR;计数执行部件计数执行部件CECE:1616位的减法计数器;位的减法计数器;输出锁存器输出锁存器OLOL:锁存:锁存CECE的内容,便于的内容,便于CPUCPU读出读出计数值;计数值;计数器定时器编程结构编程结构 状态寄存器状态寄存器计数器定时器定时器定时器/计数器的工作过程计数器的工作过程1. 1. 设置设置8253825482538254的工作方式;的工作方式;2. 2. 设置计数初值到计数初值寄存器设置计数初值到计数初值寄存器CRCR;3. 3. 第一个第一个CLKCLK信号使计数初值寄存器的内容置入信号使计数初值寄存器的内容置入 计数执行部件计数执行部件CECE;4. 4. 以后每来一个以后每来一个CLKCLK信号,信号,CECE减减1 1; 5. 5. OUTOUT端输出一特殊波形的信号;端输出一特殊波形的信号; 注:以上计数过程中还受到注:以上计数过程中还受到GATEGATE信号的控制。信号的控制。计数器定时器A A A A1 1 1 1A A A A0 0 0 000 00 00 00 计数器计数器计数器计数器0 0 0 001 01 01 01 计数器计数器计数器计数器1 1 1 110 10 10 10 计数器计数器计数器计数器2 2 2 211 11 11 11 控制端口、状态端口控制端口、状态端口控制端口、状态端口控制端口、状态端口(2)8253/8254的外部信号的外部信号DBD7-D0A1A0WRRDCS通道通道2通道通道1通道通道0CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2A2A1IOWIOR片选信号片选信号计数器定时器9.3 8253/8254的控制字和状态字的控制字和状态字 vv三个计数器共用一个控制寄存器,可对控制寄存器写入控制字使三个计数器工作在不同的模式,控制端口只写。vv8254有一个状态寄存器,状态端口只读。vv控制端口、状态端口地址A1A0=11。计数器定时器(1)8253/8254控制寄存器和控制字控制寄存器和控制字vv控制字有两大类:模式设置控制字:设置三个计数器的工作模式;模式设置控制字:设置三个计数器的工作模式;读出控制字:读取计数器的当前计数值和当前状读出控制字:读取计数器的当前计数值和当前状态(只对态(只对82548254)。)。计数器定时器模式设置控制字模式设置控制字SCSC1 1 SC SC0 0RWRW1 1 RW RW0 0MM2 2 M M1 1 M M0 0BCDBCDD D7 7D D6 6D D5 5D D4 4D D3 3D D2 2D D1 1D D0 0计数器选择:计数器选择:00 计数器计数器001 计数器计数器110 计数器计数器211 非法非法读写格式选择:读写格式选择:00 计数器锁存命令计数器锁存命令 01 只读写低字节只读写低字节10 只读写高字节只读写高字节11 先读写低字节先读写低字节 后读写高字节后读写高字节工作方式选择工作方式选择000 方式方式0001 方式方式1010 方式方式2011 方式方式3100 方式方式4101 方式方式5计数初值格计数初值格式式0 二进制二进制1 十进制十进制控制字写入控制寄存器(控制字写入控制寄存器(A1A011)计数器定时器读出控制字(锁存命令)读出控制字(锁存命令)D D7 7D D6 6D D5 5D D4 4D D3 3 D D2 2 D D1 1 D D0 01 11 1COUNTCOUNTSTATUSSTATUSCNTCNT2 2CNTCNT1 1CNTCNT0 00 011 读出控制字读出控制字 标识符标识符为为0,对对计计数数器器的的当前值进行锁存当前值进行锁存为为0,对对计计数数器器的状态锁存的状态锁存D0必须为必须为0分分别别对对应应计计数数器器2、1、0可用锁存命令同时锁存多个计数器的计数值,也可锁存可用锁存命令同时锁存多个计数器的计数值,也可锁存某个计数器计数值和状态值。某个计数器计数值和状态值。计数器定时器(2)8254状态寄存器和状态字状态寄存器和状态字D7:表示:表示OUT端的状态。为端的状态。为1,表示,表示OUT端为高电平,为端为高电平,为0,表,表 示示OUT端为低电平端为低电平D6:表示初值是否已经装入计数器。为:表示初值是否已经装入计数器。为0,表示初值已经装入,表示初值已经装入 计数器,为计数器,为1,表示没有装入。,表示没有装入。D5D0:与模式设置控制字的对应位含义相同。:与模式设置控制字的对应位含义相同。计数器定时器9.4 8253/8254的编程命令的编程命令 编程原则: 设置初值前必须先写控制字; 初值设置要符合控制字中的格式规定; 要读取计数器的当前值和状态字,必须用控制字先锁定,才能读取。计数器定时器9.4 8253/8254的编程命令的编程命令编程命令有两类: 读出命令;读出命令;读计数器计数值读计数器计数值读状态寄存器值(只对读状态寄存器值(只对82548254) 写入命令;写入命令;模式设置控制字命令模式设置控制字命令读出控制字读出控制字( (琐存命令琐存命令) )设置计数初始值设置计数初始值计数器定时器写入计数初值写入计数初值vv选择二进制时选择二进制时计数值范围:计数值范围:0000H0000HFFFFHFFFFH0000H0000H是最大值,代表是最大值,代表6553665536vv选择十进制(选择十进制(BCDBCD码)码)计数值范围:计数值范围:000000009999999900000000代表最大值代表最大值1000010000计数值写入计数器各自的计数值写入计数器各自的I/O地址地址计数器定时器写入计数初值写入计数初值vv当采用二进制计数时,计数初值当采用二进制计数时,计数初值N N可以写成二进制可以写成二进制形式,也可以写成十进制格式。形式,也可以写成十进制格式。vv例如:例如: MOV AX,0040H ; MOV AX,0040H ;0040H0040H是是1616位二进制计数位二进制计数0000000000 OUT Port, AL OUT Port, AL ; ;先写低先写低8 8位(位(PortPort为端口号)为端口号) MOV AL, AH MOV AL, AH OUT Port, AL OUT Port, AL ; ;后写高后写高8 8位位计数器定时器写入计数初值写入计数初值vv当采用十进制(当采用十进制(BCDBCD码)计数时,把计算得到的十进码)计数时,把计算得到的十进制计数初值制计数初值N N加上后缀加上后缀H H。vv例如:例如: MOV AL,100H ;MOV AL,100H ;计数初值计数初值N N为十进制数(为十进制数(BCDBCD码)码)100100 OUT Port, AL OUT Port, AL MOV AX,2567H ; MOV AX,2567H ;计数初值计数初值N N为十进制数(为十进制数(BCDBCD码)码)25672567 OUT Port, AL ; OUT Port, AL ;先写低先写低8 8位位 MOV AL, AH ; MOV AL, AH ;高高8 8位送低位送低8 8位位 OUT Port, AL ; OUT Port, AL ;后写高后写高8 8位位计数器定时器读取计数值读取计数值vv对对8 8位数据线,读取位数据线,读取1616位计数值需分两次位计数值需分两次vv计数在不断进行,应该将当前计数值先行锁存,计数在不断进行,应该将当前计数值先行锁存,然后读取:然后读取:向控制向控制I/OI/O地址:给地址:给8253/82548253/8254写入锁存命令写入锁存命令从计数器从计数器I/OI/O地址:读取锁存的计数值地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制读取计数值,要注意读写格式和计数数制计数器定时器读取计数器读取计数器2 2的当前计数值的例子的当前计数值的例子MOV AL, 11011000B MOV AL, 11011000B ;对计数器;对计数器;对计数器;对计数器2 2发锁存命令,锁存当前计数值发锁存命令,锁存当前计数值发锁存命令,锁存当前计数值发锁存命令,锁存当前计数值OUT 76H, AL OUT 76H, AL ;76H76H为控制口地址为控制口地址为控制口地址为控制口地址IN IN AL, 74H AL, 74H ;读取计数器;读取计数器;读取计数器;读取计数器2 2的读取值,的读取值,的读取值,的读取值,74H74H为计数器为计数器为计数器为计数器2 2的地址的地址的地址的地址对对82548254读取状态字和计数值读取状态字和计数值MOV AL, 11000010BMOV AL, 11000010B;计数器;计数器;计数器;计数器0 0的锁存命令的锁存命令的锁存命令的锁存命令OUT 76H, AL OUT 76H, AL ;76H76H为控制口地址,对锁存计数器为控制口地址,对锁存计数器为控制口地址,对锁存计数器为控制口地址,对锁存计数器0 0的状态和计数值的状态和计数值的状态和计数值的状态和计数值ININ AL, 76H AL, 76H;从状态口读取计数器;从状态口读取计数器;从状态口读取计数器;从状态口读取计数器0 0的状态的状态的状态的状态MOV CL, ALMOV CL, AL;将计数器;将计数器;将计数器;将计数器0 0的状态送到的状态送到的状态送到的状态送到CLCLIN AL, 70HIN AL, 70H ;读取计数器;读取计数器;读取计数器;读取计数器0 0 的低的低的低的低8 8位位位位MOV BL, ALMOV BL, AL;将低;将低;将低;将低8 8位送到位送到位送到位送到BLBLIN IN AL, 70HAL, 70H;读取计数器;读取计数器;读取计数器;读取计数器0 0的高的高的高的高8 8位位位位MOV BH, ALMOV BH, AL;BXBX中为计数器中为计数器中为计数器中为计数器0 0的当前计数值的当前计数值的当前计数值的当前计数值假设计数器的假设计数器的假设计数器的假设计数器的4 4个端口地址为个端口地址为个端口地址为个端口地址为70H70H、72H72H、74H74H、76H76H计数器定时器思考题思考题1 1 设设82538253端口地址为端口地址为200H200H203H203H,使用计数器,使用计数器1 1,工作于方式工作于方式3 3(方波发生器),二进制计数,计数(方波发生器),二进制计数,计数初值为初值为3000H3000H,请编写初始化程序。,请编写初始化程序。计数器定时器;方法;方法;方法;方法1 1,1616位计数,先写低位计数,先写低位计数,先写低位计数,先写低8 8位,后写高位,后写高位,后写高位,后写高8 8位。根据题目写出位。根据题目写出位。根据题目写出位。根据题目写出控制字为控制字为控制字为控制字为01110110B(76H)01110110B(76H)。 MOV DX,203H MOV DX,203H ;82538253控制寄存器控制寄存器 MOV AL,76H MOV AL,76H ;二进制计数、方式;二进制计数、方式3 3、先写低、先写低8 8 位、后位、后写高写高8 8位、计数器位、计数器1 1 OUT DX,AL OUT DX,AL ;控制字写入控制字寄存器;控制字写入控制字寄存器 MOV DX,201H MOV DX,201H ;计数器;计数器1 1 MOV AL,00H MOV AL,00H ;计数初值低;计数初值低8 8位位 OUT DX, AL OUT DX, AL ;计数初值低;计数初值低8 8位写入计数器位写入计数器1 1 MOV AL,30H MOV AL,30H ;计数初值高;计数初值高8 8位位 OUT DX, AL OUT DX, AL ;计数初值高;计数初值高8 8位写入计数器位写入计数器1 1计数器定时器;方法;方法;方法;方法2 2: 16 16位计数,只写高位计数,只写高位计数,只写高位计数,只写高8 8位,低位,低位,低位,低8 8位自动为位自动为位自动为位自动为0 0。 MOV DX,203H MOV DX,203H ;82538253控制寄存器控制寄存器 MOV AL,66H MOV AL,66H ;控制字;控制字01100110B01100110B OUT DX,AL OUT DX,AL ;控制字写入控制字寄存器;控制字写入控制字寄存器 MOV DX,201H MOV DX,201H ;计数器;计数器1 1 MOV AL,30H MOV AL,30H ;计数初值高;计数初值高8 8位位 OUT DX,AL OUT DX,AL ;计数初值高;计数初值高8 8位写入计数器位写入计数器1 1计数器定时器思考题思考题vv2 2 设设82538253的端口地址为的端口地址为208H208H20BH20BH,使用计数器,使用计数器0 0,工作于方式,工作于方式4 4,二进制计数;使用计数器,二进制计数;使用计数器2 2,工作,工作于方式于方式5 5,十进制计数。计数器,十进制计数。计数器0 0和计数器和计数器2 2的计数的计数初值都等于十进制数值初值都等于十进制数值512(0200H)512(0200H),请编写初始化,请编写初始化程序。程序。计数器定时器MOVMOV AL,AL, 38H 38H ;控制字;控制字00111000B00111000B,二进制计,二进制计 数、方式数、方式4 4、计数器、计数器0 0、先写低、先写低8 8位、后写高位、后写高8 8位位MOV MOV DX,DX, 20BH 20BH;控制字寄存器端口地址;控制字寄存器端口地址OUT OUT DX,DX, AL AL ;控制字写入控制字寄存器;控制字写入控制字寄存器MOV MOV DX,DX, 208H 208H ;计数器;计数器0 0端口地址端口地址MOVMOV AL,AL, 00H 00H ;计数初值低;计数初值低8 8位位OUT OUT DX,DX, AL AL ;计数初值低;计数初值低8 8位写入计数器位写入计数器0 0MOV MOV AL,AL, 02H 02H ;计数初值高;计数初值高8 8位位OUT DX,OUT DX, AL AL ;计数初值高;计数初值高8 8位写入计数器位写入计数器0 0计数器定时器MOV AL, 0BBHMOV AL, 0BBH ;控制字;控制字10111011B10111011B,BCDBCD、方式、方式5 5、计数器计数器2 2、先写低、先写低8 8位、后写高位、后写高8 8位位MOV DX, 20BHMOV DX, 20BH ;控制字寄存器端口地址;控制字寄存器端口地址OUT DX,OUT DX, ALAL;控制字写入控制字寄存器;控制字写入控制字寄存器MOV DX,MOV DX, 20AH 20AH ;计数器;计数器2 2端口地址端口地址MOV AL,MOV AL, 12H12H;计数初值低;计数初值低8 8位位OUT DX,OUT DX, AL AL;计数初值低;计数初值低8 8位写入计数器位写入计数器2 2MOV AL,MOV AL, 05H 05H ;计数初值高;计数初值高8 8位位OUT DX,OUT DX, AL AL;计数初值高;计数初值高8 8位写入计数器位写入计数器2 2计数器定时器思考题思考题3 3 设设82538253的端口地址为的端口地址为208H208H20BH20BH,请编写程序,请编写程序读取计数器读取计数器2 2的当前计数值。的当前计数值。 MOV AL,0D8H MOV AL,0D8H ;计数器;计数器2 2的锁存命令的锁存命令 MOV DX,20BH MOV DX,20BH ;控制字寄存器端口地址;控制字寄存器端口地址 OUT DX,ALOUT DX,AL MOV DX,20AH MOV DX,20AH ;计数器;计数器2 2端口地址端口地址 IN AL,DXIN AL,DX;读取计数初值低;读取计数初值低8 8位位 MOV BL,MOV BL,ALAL;计数初值低;计数初值低8 8位存入位存入BLBL IN AL,DX IN AL,DX;读取计数初值高;读取计数初值高8 8位位 MOV BH,MOV BH,ALAL;计数初值高;计数初值高8 8位存入位存入BHBH计数器定时器9.5 8253/8254的工作模式的工作模式 有有有有6 6种工作模式,都遵守的基本规则:种工作模式,都遵守的基本规则:种工作模式,都遵守的基本规则:种工作模式,都遵守的基本规则: 控制字写入时,进入初始状态;控制字写入时,进入初始状态; 初初值值写写入入后后,要要经经过过上上升升沿沿和和一一个个下下降降沿沿,计计数数执执行行部部件才开始计数;件才开始计数; 在在CLKCLK的的上上升升沿沿,GATEGATE被被采采样样,对对于于一一给给定定的的工工作作模模式,式,GATEGATE的触发方式有具体规定;的触发方式有具体规定; 在在CLKCLK下降沿,计数器作减下降沿,计数器作减1 1计数;计数; (0 0是计数器的最大初值)是计数器的最大初值)计数器定时器9.5 8253/8254的工作模式的工作模式 6 6种工作方式主要有种工作方式主要有五点不同:五点不同:vv1 1)启动计数器的触发方式不同;)启动计数器的触发方式不同;vv2 2)OUTOUT输出波形不同;输出波形不同;vv3 3)计计数过程中门控信号数过程中门控信号GATEGATE对计数操作的影响不同;对计数操作的影响不同;vv4 4)在计数过程中重新写入计数初值对计数过程的影响不同;)在计数过程中重新写入计数初值对计数过程的影响不同;vv5 5)计数过程结束,减法计数器是否恢复计数初值并自动重复)计数过程结束,减法计数器是否恢复计数初值并自动重复 计数过程不同。计数过程不同。计数器定时器(1 1)模式)模式)模式)模式00计数结束产生中断计数结束产生中断计数结束产生中断计数结束产生中断 性质:写入控制字,写入控制字,OUTOUT端为低电平,计数初值装入该端为低电平,计数初值装入该计数器后,等待到计数器后,等待到GATEGATE输入高电平时,计数器开输入高电平时,计数器开始递减计数。在整个计数过程中,始递减计数。在整个计数过程中,OUTOUT保持低电保持低电平,当计数器减为平,当计数器减为0 0时,时,OUTOUT输出高电平,并且一输出高电平,并且一直保持高电平,除非写入新的计数值。直保持高电平,除非写入新的计数值。计数器定时器模式模式0 计数结束中断计数结束中断GATEOUTCLK 031244方式方式0WR设设定定工工作作方方式式设设定定计计数数初初值值计计数数值值送送入入计计数数器器计计数数过过程程计计数数结结束束计数器定时器模式模式0 计数结束中断计数结束中断特点:电平触发方式,不自动重复计数。电平触发方式,不自动重复计数。计数过程受计数过程受GATEGATE控制,控制,GATE=0 GATE=0 暂停计数,暂停计数,GATE=1 GATE=1 接着计数。接着计数。计数过程中,如有一个新的计数初值被写入,计数计数过程中,如有一个新的计数初值被写入,计数器将按新的初值重新计数。器将按新的初值重新计数。OUTOUT端输出是一个约端输出是一个约(N+1)T(N+1)TCLKCLK宽度的负脉冲。宽度的负脉冲。计数器定时器(2) (2) 模式模式模式模式1 1 可编程的单稳态触发器可编程的单稳态触发器可编程的单稳态触发器可编程的单稳态触发器性质:性质:写入控制字,写入控制字,OUTOUT端为高电平,计数初值装入该端为高电平,计数初值装入该计数器后,在计数器后,在GATEGATE信号的上升沿后的下一个信号的上升沿后的下一个CLKCLK脉冲的下降沿开始计数,脉冲的下降沿开始计数,OUTOUT变为低电平。在整变为低电平。在整个计数过程中,个计数过程中,OUTOUT保持低电平,当计数器减为保持低电平,当计数器减为0 0时,时,OUTOUT变为高电平,输出一个单脉冲,若变为高电平,输出一个单脉冲,若GATEGATE信号再由低变高,可再产生一个单脉冲,相当一信号再由低变高,可再产生一个单脉冲,相当一个单稳态个单稳态。计数器定时器模式模式1 可编程单稳脉冲可编程单稳脉冲设设定定工工作作方方式式设设定定计计数数初初值值硬硬件件启启动动计计数数值值送送入入计计数数器器计计数数过过程程计计数数结结束束GATEOUTCLK 031244方式方式1WR计数器定时器模式模式1 可编程单稳脉冲可编程单稳脉冲特点:上升沿触发,不自动重复计数。上升沿触发,不自动重复计数。计数过程中,又写入新的计数值,当前输出不受影计数过程中,又写入新的计数值,当前输出不受影响。但又来了触发信号,则按新的计数值做减响。但又来了触发信号,则按新的计数值做减1 1计计数。数。OUTOUT端输出是一个约端输出是一个约NTNTCLKCLK宽度的负脉冲。宽度的负脉冲。计数器定时器计数器定时器(3) (3) 模式模式模式模式22分频器分频器分频器分频器性质: vv写入控制字,写入控制字,OUTOUT端为高电平,计数初值写入计数端为高电平,计数初值写入计数器后,等待到触发信号时,计数器开始递减计数。器后,等待到触发信号时,计数器开始递减计数。减到减到1 1,OUTOUT端变成低电平,经过一个时钟脉冲端变成低电平,经过一个时钟脉冲OUTOUT端又变为高电平,然后开始一个新的计数过程,端又变为高电平,然后开始一个新的计数过程,重复进行。重复进行。计数器定时器模式模式2 频率发生器(分频器)频率发生器(分频器)03124GATEOUTCLK 4模式模式2031240312403124WR计数器定时器模式模式2 频率发生器(分频器)频率发生器(分频器)特点:vv电平触发、上升沿触发,自动重复计数。电平触发、上升沿触发,自动重复计数。vv软件同步、硬件同步。软件同步、硬件同步。vv计数过程中,计数过程中,CPUCPU可随时改变计数初值,若可随时改变计数初值,若GATE=1GATE=1,当计数器减为,当计数器减为0 0时,按新的计数值分频;时,按新的计数值分频;若若GATEGATE端出现上升沿,下一个时钟脉冲时,按新端出现上升沿,下一个时钟脉冲时,按新的计数值计数。的计数值计数。vv输出的脉冲周期是输出的脉冲周期是N N个个CLKCLK周期,高电平为周期,高电平为N-1N-1个个CLKCLK周期。周期。计数器定时器计数器定时器(4) (4) 模式模式模式模式33方波发生器方波发生器方波发生器方波发生器性质:vvCPUCPU写入控制字后写入控制字后OUTOUT变高,写完计数初值并受变高,写完计数初值并受触发后,开始减触发后,开始减1 1计数,输出保持高电平。当计到计数,输出保持高电平。当计到一半计数值时,输出变低,直到计数到一半计数值时,输出变低,直到计数到0 0,输出又,输出又变为高,重新开始计数。变为高,重新开始计数。计数器定时器模式模式模式模式3 3的时序图的时序图的时序图的时序图 : 计数器定时器(4) 模式模式3方波发生器方波发生器特点:vv电平触发、上升沿触发,自动重复计数。电平触发、上升沿触发,自动重复计数。vv软件同步、硬件同步。软件同步、硬件同步。vv计数过程中,若计数过程中,若GATE=1GATE=1,当计数器减为,当计数器减为0 0时,按新时,按新的计数值重新计数;若的计数值重新计数;若GATEGATE端出现上升沿,下一端出现上升沿,下一个时钟脉冲时,按新的计数值计数。个时钟脉冲时,按新的计数值计数。vv输出的方波周期是输出的方波周期是N N个个CLKCLK周期。计数初值周期。计数初值N N为偶数,为偶数,N/2N/2个个CLKCLK,N/2N/2个个CLKCLK;N N为奇数为奇数 (N+1)/2(N+1)/2个个CLKCLK,(N-1)/2(N-1)/2个个CLKCLK 。 计数器定时器计数器定时器(5) (5) 模式模式模式模式44软件触发的选通信号发生器软件触发的选通信号发生器软件触发的选通信号发生器软件触发的选通信号发生器性质:vv写入控制字,写入控制字,OUTOUT端为高电平,写入计数初值,端为高电平,写入计数初值,GATEGATE为高电平,开始计数,计数器计到为高电平,开始计数,计数器计到0 0时,时,OUTOUT变为低电平,经过一个变为低电平,经过一个CLKCLK脉冲周期,脉冲周期,OUTOUT又变高,计数器停止计数,只有写入新计数值才能又变高,计数器停止计数,只有写入新计数值才能开始新的计数。开始新的计数。计数器定时器模式模式模式模式4 4 软件触发选通信号软件触发选通信号软件触发选通信号软件触发选通信号FF计数器定时器模式模式4 软件触发选通信号软件触发选通信号特点:vv电平触发,不自动重复计数。vvGATE=1,计数进行;GATE=0,计数停止vv计数时写入新的计数值,计数器立即按新的初值计数(软件触发)。计数器定时器计数器定时器(6) (6) 模式模式模式模式55硬件触发的选通信号发生器硬件触发的选通信号发生器硬件触发的选通信号发生器硬件触发的选通信号发生器性质:写入控制字,写入控制字,OUTOUT变高,写入计数初值后,由变高,写入计数初值后,由GATEGATE信号的上升沿触发开始计数。计到信号的上升沿触发开始计数。计到0 0后,后,OUTOUT变为低电平。经一个变为低电平。经一个CLKCLK周期后,周期后,OUTOUT又变为高电又变为高电平,并停止计数,等下次平,并停止计数,等下次GATEGATE触发才能再计数。触发才能再计数。计数器定时器模式模式模式模式5 5 硬件触发选通信号硬件触发选通信号硬件触发选通信号硬件触发选通信号GATEOUTCLK031244模式模式52233311 0WR计数器定时器模式模式5 硬件触发选通信号硬件触发选通信号特点:上升沿触发,不自动重复计数。上升沿触发,不自动重复计数。计数过程中,计数过程中,GATEGATE端又来了上升沿触发,则重新端又来了上升沿触发,则重新获得计数初值,开始减获得计数初值,开始减1 1计数。计数。计数器定时器计数器定时器各种工作模式的输出波形各种工作模式的输出波形各种工作模式的输出波形各种工作模式的输出波形 *模式模式 0+模式模式1#模式模式2#模式模式3*模式模式4+模式模式50N0N0/N11 0/NNN/2 N/2 0/N0/NN0NN0计数器定时器8253/8254-工作方式与门控信号的关系工作方式与门控信号的关系方式方式GATE=0GATE=0及下降沿及下降沿GATE=1GATE=1GATEGATE上升上升0 0停止计数停止计数允许计数允许计数不受影响不受影响1 1不受影响不受影响不受影响不受影响从初值开始重新计数从初值开始重新计数2 2停止计数停止计数允许计数允许计数从初值开始重新计数从初值开始重新计数3 3停止计数停止计数允许计数允许计数从初值开始重新计数从初值开始重新计数4 4停止计数停止计数允许计数允许计数不受影响不受影响5 5不受影响不受影响不受影响不受影响从初值开始重新计数从初值开始重新计数计数器定时器9.6 8253/8254应用举例应用举例 举例举例1:用:用8253/8254为为A/D子系统提供采样信号。子系统提供采样信号。计数器定时器图图 8253/8254作为定时器的例子作为定时器的例子 时钟频率:时钟频率:时钟频率:时钟频率:F F计数器计数器计数器计数器2 2:模式模式模式模式3 3,计数初值为,计数初值为,计数初值为,计数初值为N N,OUTOUT2 2输出频率为输出频率为输出频率为输出频率为F/NF/N计数器计数器计数器计数器1 1:模式:模式:模式:模式1 1,计数初值为,计数初值为,计数初值为,计数初值为MMOUTOUT1 1输出负脉冲宽度为输出负脉冲宽度为输出负脉冲宽度为输出负脉冲宽度为MN/FMN/F计数器计数器计数器计数器0 0:模式:模式:模式:模式2 2,计数初值为,计数初值为,计数初值为,计数初值为L LOUTOUT0 0输出频率为输出频率为输出频率为输出频率为F/LF/LA/DA/D转换器按转换器按转换器按转换器按F/LF/L的采样率工的采样率工的采样率工的采样率工作,持续时间为作,持续时间为作,持续时间为作,持续时间为MN/FMN/F计数器定时器系统的初始化程序段系统的初始化程序段 :vv82538253端口地址:端口地址:0070H-0076H0070H-0076Hvv计数初值:计数初值:L L、N N为二进制,小于为二进制,小于256256,MM为为BCDBCD码。码。计数器定时器系统的初始化程序段系统的初始化程序段 :MOVMOV ALAL,14H14HOUTOUT 76H76H,ALAL ; ;将计数器将计数器0 0设置为模式设置为模式2 2MOVMOV ALAL,LCNTLCNTOUTOUT 70H70H,ALAL ; ;对计数器对计数器0 0设置计数初设置计数初 始值始值L L(8(8位二进制位二进制) )计数器定时器系统的初始化程序段系统的初始化程序段 :MOVMOV ALAL,73H73HOUTOUT76H76H,ALAL; ;将计数器将计数器1 1设置为模式设置为模式1 1MOVMOV AXAX,MCNTMCNTOUTOUT72H72H,ALALMOVMOV ALAL,AHAHOUTOUT72H72H,ALAL ; ;对计数器对计数器1 1设置初始值设置初始值M(16M(16位位BCDBCD)MOVMOV ALAL,96H96HOUTOUT76H76H,ALAL ; ;将计数器将计数器2 2设置为模式设置为模式3 3MOVMOV ALAL,NCNTNCNTOUTOUT74H74H,ALAL ; ;对计数器对计数器2 2设置初始值设置初始值N(8N(8位二位二进进制)制)计数器定时器vv举例举例2 2:假设:假设82538253的端口地址为的端口地址为200H-203H200H-203H,编程,编程将将82538253定时器定时器0 0设定为方式设定为方式3 3,定时器,定时器1 1设定在方式设定在方式3 3,定时器,定时器1 1输出作为定时器输出作为定时器0 0的输入,定时器的输入,定时器0 0的输的输出接在一个出接在一个LEDLED上,要求上,要求LEDLED每秒闪烁一次。每秒闪烁一次。9.6 8253/8254应用举例应用举例 计数器定时器CODE SEGMENTCODE SEGMENT ASSUME CS:CODE ASSUME CS:CODESTART :START : MOV AL, 36H ; MOV AL, 36H ; 计数器计数器计数器计数器0 0初始化初始化初始化初始化,16,16位位位位, ,方式方式方式方式3,3,二进制二进制二进制二进制 MOV DX, 203H ; 8253 MOV DX, 203H ; 8253控制地址端口控制地址端口控制地址端口控制地址端口 OUT DX, AL OUT DX, AL MOV AX, 1000 MOV AX, 1000 MOV DX, 200H MOV DX, 200H OUT DX, AL ; OUT DX, AL ; 计数器低字节计数器低字节计数器低字节计数器低字节 MOV AL, AH MOV AL, AH OUT DX, AL ; OUT DX, AL ; 计数器高字节计数器高字节计数器高字节计数器高字节 计数器定时器 MOV AL, 76H ; MOV AL, 76H ; 计数器计数器计数器计数器1 1初始化初始化初始化初始化,16,16位位位位, ,方式方式方式方式3,3,二进制二进制二进制二进制 MOV DX, 203H MOV DX, 203H OUT DX, AL OUT DX, AL MOV AX, 1000 MOV AX, 1000 MOV DX, 201H MOV DX, 201H OUT DX, AL ; OUT DX, AL ; 计数器低字节计数器低字节计数器低字节计数器低字节 MOV AL, AH MOV AL, AH OUT DX, AL ; OUT DX, AL ; 计数器高字节计数器高字节计数器高字节计数器高字节 JMP $ JMP $CODE ENDSCODE ENDS END START END START计数器定时器思考题思考题vv1 利用8253的定时器0设定为方式3,定时器1设定为方式2,定时器2设定为方式3,编写程序实现8253控制继电器的吸合和断开(每10秒一次),从而达到对外部装置的控制。计数器定时器计数器定时器计数器定时器CODE SEGMENTCODE SEGMENT ASSUME CS:CODE ASSUME CS:CODESTART :START : MOV AL, 36H ; MOV AL, 36H ; 计数器计数器0 0初始化初始化,16,16位位, ,方式方式3,3,二进制二进制 MOV DX, 203H ;8253 MOV DX, 203H ;8253控制地址端口控制地址端口 OUT DX, AL OUT DX, AL MOV AX, 10000MOV AX, 10000 MOV DX, 200H MOV DX, 200H OUT DX, AL ; OUT DX, AL ; 计数器低字节计数器低字节 MOV AL, AH MOV AL, AH OUT DX, AL ; OUT DX, AL ; 计数器高字节计数器高字节 计数器定时器 MOV AL, 75H ; MOV AL, 75H ; 计数器计数器1 1初始化初始化,16,16位位, ,方式方式2, 2, 二进制二进制 MOV DX, 203H MOV DX, 203H OUT DX, AL OUT DX, AL MOV AX, 100MOV AX, 100 MOV DX, 201H MOV DX, 201H OUT DX, AL ; OUT DX, AL ; 计数器低字节计数器低字节 MOV AL, AH MOV AL, AH OUT DX, AL ; OUT DX, AL ; 计数器高字节计数器高字节 MOV AL, 0B6H ; MOV AL, 0B6H ; 计数器计数器2 2初始化初始化,16,16位位, ,方式方式3,3,二进制二进制 MOV DX, 203H MOV DX, 203H OUT DX, AL OUT DX, AL MOV AX, 10MOV AX, 10 MOV DX, 202H MOV DX, 202H OUT DX, AL ; OUT DX, AL ; 计数器低字节计数器低字节 MOV AL, AH MOV AL, AH OUT DX, AL ; OUT DX, AL ; 计数器高字节计数器高字节 JMP $ ;JMP $ ;等待等待CODE ENDSCODE ENDS END START END START计数器定时器思考题思考题vv2 利用8086外接8253可编程定时器/计数器,用8255的PB口接8只按键,作为电子琴1、2、3、4、5、6、7、8数字键按键,编程完成按下数字键按键即发出相应的音调。各音阶标称频率值如下所示。各音阶标称频率值如下所示。音阶音阶 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 8频率频率(Hz) 440.00 493.88 554.37 587.33 659.26 739.99 830.61 (Hz) 440.00 493.88 554.37 587.33 659.26 739.99 830.61 880.30880.30计数器定时器计数器定时器计数器定时器CODE SEGMENTCODE SEGMENT ASSUME CS:CODE, DS:DATA ASSUME CS:CODE, DS:DATASTART START : MOV AL, 82H ; 8255 MOV AL, 82H ; 8255的的PBPB口输入口输入 MOV DX, 203H ;8255 MOV DX, 203H ;8255控制口地址控制口地址 OUT DX, AL OUT DX, ALK1: MOV DX, 201H ; PBK1: MOV DX, 201H ; PB端口地址端口地址 IN AL,DX ; IN AL,DX ;读开关的状态读开关的状态 TEST AL,01H ; TEST AL,01H ;判是否是判是否是K1K1闭合闭合 JNZ K2 ; JNZ K2 ;不是转不是转K2K2 MOV AX, 2273 ; MOV AX, 2273 ;是是K1K1闭合送闭合送“1”“1”音频数据音频数据1/440.00Hz1/440.00Hz JMP DDD JMP DDD计数器定时器 K2: IN AL,DX ; K2: IN AL,DX ;读开关的状态读开关的状态 TEST AL,02H ; TEST AL,02H ;判是否是判是否是K2K2闭合闭合 JNZ K3 ; JNZ K3 ;不是转不是转K3K3 MOV AX, 2024 ; MOV AX, 2024 ;是是K2K2闭合送闭合送“2”“2”音频数据音频数据1/493.88Hz1/493.88Hz JMP DDD JMP DDDK3: IN AL,DX ;K3: IN AL,DX ;读开关的状态读开关的状态 TEST AL,04H ; TEST AL,04H ;判是否是判是否是K3K3闭合闭合 JNZ K4 ; JNZ K4 ;不是转不是转K4K4 MOV AX, 1805 ; MOV AX, 1805 ;是是K3K3闭合送闭合送“3”“3”音频数据音频数据1/554.37Hz1/554.37Hz JMP DDD JMP DDDK4: IN AL,DX ;K4: IN AL,DX ;读开关的状态读开关的状态 TEST AL,08H ; TEST AL,08H ;判是否是判是否是K4K4闭合闭合 JNZ K5 ; JNZ K5 ;不是转不是转K5K5 MOV AX, 1704 ; MOV AX, 1704 ;是是K4K4闭合送闭合送“4”“4”音频数据音频数据1/587.33Hz1/587.33Hz JMP DDD JMP DDD计数器定时器K5: IN AL,DX ;K5: IN AL,DX ;读开关的状态读开关的状态 TEST AL,10H ; TEST AL,10H ;判是否是判是否是K5K5闭合闭合 JNZ K6 ; JNZ K6 ;不是转不是转K6 K6 MOV AX, 1517 ; MOV AX, 1517 ;是是K5K5闭合送闭合送“5”“5”音频数据音频数据1/659.26Hz1/659.26Hz JMP DDD JMP DDDK6: IN AL,DX ;K6: IN AL,DX ;读开关的状态读开关的状态 TEST AL,20H ; TEST AL,20H ;判是否是判是否是K6K6闭合闭合 JNZ K7 ; JNZ K7 ;不是转不是转K7K7 MOV AX, 1353 ; MOV AX, 1353 ;是是K6K6闭合送闭合送“6”“6”音频数据音频数据1/739.99Hz1/739.99Hz JMP DDD JMP DDDK7: IN AL,DX ;K7: IN AL,DX ;读开关的状态读开关的状态 TEST AL,40H ; TEST AL,40H ;判是否是判是否是K7K7闭合闭合 JNZ K8 ; JNZ K8 ;不是转不是转K8K8 MOV AX, 1205 ; MOV AX, 1205 ;是是K7K7闭合送闭合送“7”“7”音频数据音频数据1/830.61Hz1/830.61Hz JMP DDD JMP DDDK8: IN AL,DX ;K8: IN AL,DX ;读开关的状态读开关的状态 TEST AL,80H ; TEST AL,80H ;判是否是判是否是K8K8闭合闭合 JNZ K1 ; JNZ K1 ;不是转不是转K1K1 MOV AX, 1136 ; MOV AX, 1136 ;是是K8K8闭合送闭合送“8”“8”音频数据音频数据1/880.30Hz1/880.30Hz计数器定时器DDD:CALL OUTTONE DDD:CALL OUTTONE CALL DELAY ; CALL DELAY ; 延时延时 MOV AX, 2 ; MOV AX, 2 ; 关闭发音关闭发音 CALL OUTTONE CALL OUTTONE JMP K1 JMP K1OUTTONE PROC NEAR ; OUTTONE PROC NEAR ; 按音频数据设置定时器时间常数按音频数据设置定时器时间常数 PUSH AX ; PUSH AX ; 键码压栈键码压栈 MOV AL, 76H ; MOV AL, 76H ; 计数器计数器1, 161, 16位二进制位二进制, ,方式方式3 3 MOV DX, 20BH ; MOV DX, 20BH ; 定时器控制口地址定时器控制口地址 OUT DX, AL OUT DX, AL POP AX ; POP AX ; 键码出栈键码出栈 MOV DX, 209H ; MOV DX, 209H ;定时器定时器1 1端口地址端口地址 OUT DX, AL ; OUT DX, AL ;写时间常数低八位写时间常数低八位 MOV AL, AH ; MOV AL, AH ;写时间常数高八位写时间常数高八位 OUT DX, AL OUT DX, AL RET RETOUTTONE ENDPOUTTONE ENDP计数器定时器DELAY PROC NEAR ;DELAY PROC NEAR ;延时延时 PUSH CX PUSH CX MOV CX,60000 MOV CX,60000 LOOP $ LOOP $ ;POP CX ;POP CX RET RETDELAY ENDPDELAY ENDPCODE ENDSCODE ENDS END START END START计数器定时器思考题思考题vv3 3 用用82538253实现生产流水线上的工件计数,每通过实现生产流水线上的工件计数,每通过100100个工件,扬声器便发出频率为个工件,扬声器便发出频率为1000Hz1000Hz的音响信的音响信号,持续时间为号,持续时间为5 5秒。秒。计数器定时器计数器计数器0:方式:方式0;计数器;计数器1:方式:方式3计数器定时器计数器定时器*8253 在在PC机上的应用机上的应用vv微型计算机使用一片微型计算机使用一片82538253。3 3条计数通道分别用条计数通道分别用于日时钟计时、于日时钟计时、DRAMDRAM刷新定时和扬声器发声。刷新定时和扬声器发声。vv计数器计数器0 0、计数器、计数器1 1和计数器和计数器2 2的计数通道地址分的计数通道地址分别为别为40H40H、41H41H、42H42H,方式控制字的端口地址,方式控制字的端口地址为为43H43H。vv三条计数器通道的时钟输入三条计数器通道的时钟输入CLKCLK均从均从Intel8284AIntel8284A时钟发生器时钟发生器PLCKPLCK端经二分频得到,频率为端经二分频得到,频率为1.19318MHz1.19318MHz,周期,周期838ns838ns。计数器定时器*8253 在在PC机上的应用机上的应用vv计数器计数器2 2的输出加到扬声器上并控制其发声,作为机器的报的输出加到扬声器上并控制其发声,作为机器的报警或伴音信号。门控信号警或伴音信号。门控信号GATAGATA2 2接并行口接并行口82558255的的PBPB0 0位,位,82558255的的PBPB端口地址端口地址61H61H。输出。输出OUTOUT2 2经过一个与门,这个与经过一个与门,这个与门受门受PBPB1 1位控制。即扬声器可由位控制。即扬声器可由82558255的的PBPB0 0或或PBPB1 1分别控制分别控制发声。发声。vv控制程序:计数器控制程序:计数器2 2工作在方式工作在方式3 3,作为方波发声器输出方波。,作为方波发声器输出方波。 计数器定时器*8253 在在PC机上的应用机上的应用MOVMOVALAL,0B6H0B6H;计数器;计数器;计数器;计数器2 2为方式为方式为方式为方式3 3,用二进制计数,用二进制计数,用二进制计数,用二进制计数OUTOUT43H43H,ALAL;按先低后高写入;按先低后高写入;按先低后高写入;按先低后高写入1616位计数初值位计数初值位计数初值位计数初值MOVMOVAXAX,19831983;1.19MHz600Hz=19831.19MHz600Hz=1983OUTOUT42H42H,ALAL;送;送;送;送1616位初值到计数器位初值到计数器位初值到计数器位初值到计数器2 2MOVMOVALAL,AHAHOUTOUT42H42H,ALALININ AL AL,61H61H;读;读;读;读82558255的的的的B B口原输出值口原输出值口原输出值口原输出值MOVMOVAHAH,ALAL ;保存;保存;保存;保存ORORALAL,03H03H;PB0.PB1PB0.PB1同为同为同为同为1,1,打开打开打开打开GATA2GATA2OUTOUT61H61H,ALAL;输出方波到扬声器发声;输出方波到扬声器发声;输出方波到扬声器发声;输出方波到扬声器发声SUBSUBCXCX,CXCX ;循环计数,最大值;循环计数,最大值;循环计数,最大值;循环计数,最大值6553565535GO: GO: LOOP GOLOOP GO ;延时;延时;延时;延时DECDECB1B1;发声子程序入口条件;发声子程序入口条件;发声子程序入口条件;发声子程序入口条件JNZJNZGOGO;MOVMOVAL, AHAL, AHOUTOUT61H,AL61H,AL;恢复;恢复;恢复;恢复82558255原值原值原值原值见:见:8253-n.asm计数器定时器
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号