第9章_定时计数控制接口

上传人:丰*** 文档编号:265879810 上传时间:2022-03-14 格式:PPTX 页数:48 大小:1.07MB
返回 下载 相关 举报
第9章_定时计数控制接口_第1页
第1页 / 共48页
第9章_定时计数控制接口_第2页
第2页 / 共48页
第9章_定时计数控制接口_第3页
第3页 / 共48页
第9章_定时计数控制接口_第4页
第4页 / 共48页
第9章_定时计数控制接口_第5页
第5页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第9章_定时计数控制接口》由会员分享,可在线阅读,更多相关《第9章_定时计数控制接口(48页珍藏版)》请在金锄头文库上搜索。

1、第第 9 9 章章第9章 定时计数控制接口教学重点 8253的引脚和6种工作方式 8253的编程 8253在IBM PC系列机上的应用定时器和计数器定时控制在微机系统中极为重要n定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔n计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器定时功能的实现方法n软件延时利用微处理器执行一个延时程序段实现n不可编程的硬件定时采用分频器、单稳电路或简易定时电路控制定时时间n可编程的硬件定时软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路9.1 82

2、53/8254定时计数器n3个独立的16位计数器通道n每个计数器有6种工作方式n按二进制或十进制(BCD码)计数8254是8253的改进型9.1.1 8253/8254的内部结构和引脚D7D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2计数器结构示意图预置寄存器GATECLKOUT减1计数器输出锁存器计数初值存于预置寄存器;在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值计数器的3个引脚nCLK时钟输入信号在

3、计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1nGATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型nOUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号2. 与处理器接口nD0 D7数据线A0 A1地址线nRD*读信号WR*写信号nCS*片选信号CS* A1 A0I/O地址读操作RD*写操作WR*0 0 00 0 10 1 00 1 140H41H42H43H读计数器0读计数器1读计数器2无操作写计数器0写计数器1写计数器2写控制字计数器读写格式工作方式数制D7D6D5D4D3D2D1D000 计数器001 计数器11

4、0 计数器211 非法00 计数器锁存命令 01 只读写低字节10 只读写高字节11 先读写低字节 后读写高字节000 方式0001 方式1010 方式2011 方式3100 方式4101 方式50 二进制1 十进制示例9.1.2 8253/8254的工作方式n8253有6种工作方式,由方式控制字确定n熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式n每种工作方式的过程类似: 设定工作方式 设定计数初值 硬件启动 计数初值进入减1计数器 每输入一个时钟计数器减1的计数过程 计数过程结束121.方式0:计数结束中断GATEOUTCLK 031244方式0WR设定工作方式设定计数初值

5、计数值送入计数器计数过程计数结束输出OUT信号随即变为低电平 其输出OUT信号变为高电平 门控信号为高时允许计数,为低暂停计数,重新为高时,接着当前计数值继续计数计数期间给计数器重装新值,在写入新值后重新开始计数132.方式1:可编程单稳脉冲(N时钟周期的单稳负脉冲)设定工作方式设定计数初值硬件启动计数值送入计数器计数过程计数结束GATEOUTCLK 031244方式1WR计数过程中写入新的计数值,不影响当前计数;若再次由GATE触发启动,则按照新值开始计数。计数过程结束前,GATE再次触发,则计数器重新装入计数值,从头开始计数 输出OUT信号变为高 143.方式2:频率发生器(分频器)031

6、24GATEOUTCLK 4方式2031240312403124WR计数器减为1时,OUT变为低,经过一个CLK,回复为高,且计数器重新开始计数计数过程中装入新值,将不影响现行计数;但从下个周期开始按新的计数值计数GATE为低电平将停止计数,并使输出为高。GATE为高电平,计数器将重新装入预置计数值,开始计数。这样。GATE能用硬件对计数器进行同步 154.方式3:方波发生器03124GATEOUTCLK 4方式3031240312403124WR计数值为偶数时,前一半输出为高电平,后一半输出为低电平。如果计数值为奇数,前一半比后一半多一个时钟脉冲的高电平,随后输出为低 165.方式4:软件触

7、发选通信号GATEOUTCLK031244方式4223331 0WR这种计数是一次性的 计数过程中重新装入新值,将不影响当前计数。GATE为低禁止计数,变为高则计数器重新装入计数初值,开始计数 176.方式5:硬件触发选通信号GATEOUTCLK031244方式52233311 0WR计数过程中重新装入新值,不影响当前计数。GATE又有触发信号,则计数器重新装入计数初值,从头开始计数 各种工作方式的输出波形方式 0方式 1方式 2方式 3方式 4方式 50N0N0N0/N110NN/2 N/2 0/N0N0 1N0 1N0 1讨论:计数开始的时刻计数开始的时刻n需要注意:n处理器写入8253的

8、计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。n从第二个CLK信号的下降沿,计数器才真正开始减1计数。出处:教材第217页第15行实验:计数开始的时刻9.1.3 8253/8254的编程n8253加电后的工作方式不确定n8253必须初始化编程,才能正常工作n写入控制字n写入计数初值n读取计数值n8254新增读回命令D7D6D5D4D3D2D1D01 写入方式控制字计数器读写格式工作方式数制D7D6D5D4D3D2D1D000 计数器001 计数器110 计数器211 非法00 计数器锁存命令 01 只读写低字节1

9、0 只读写高字节11 先读写低字节 后读写高字节000 方式0001 方式1010 方式2011 方式3100 方式4101 方式50 二进制1 十进制控制字写入控制字I/O地址(A1A011)示例2 写入计数值n选择二进制时n计数值范围:0000HFFFFHn0000H是最大值,代表65536n选择十进制(BCD码)n计数值范围:00009999n0000代表最大值10000计数值写入计数器各自的I/O地址示例3 读取计数值n对8位数据线,读取16位计数值需分两次n计数在不断进行,应该将当前计数值先行锁存,然后读取:n向控制字I/O地址:给8253写入锁存命令n从计数器I/O地址:读取锁存的

10、计数值读取计数值,要注意读写格式和计数数制mov al,36h;36H00 11 011 0B;计数器0为方式3,采用二进制计数;先低后高写入计数值out 43h,al;写入方式控制字mov al,0;计数值为0out 40h,al;写入低字节计数值out 40h,al;写入高字节计数值计数开始的时刻n需要注意:n处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。n从第二个CLK信号的下降沿,计数器才真正开始减1计数。8253/8254的I/O地址0 1 0 0 00 1 0 0 10 1 0 1

11、 00 1 0 1 10 0 1 0 00 0 1 0 10 0 1 1 0功 能对计数器0设置计数初值CSRDA1A0WR对计数器1设置计数初值对计数器2设置计数初值设置控制字从计数器0读出计数值从计数器1读出计数值从计数器2读出计数值8253的控制字编程;某个8253的计数器0、1、2端口和控制端口地址依次是40H43H;设置其中计数器0为方式0,采用二进制计数,先低后高写入计数值 mov al,30h /方式控制字:30H00 11 000 0B out 43h,al /写入控制端口:43H8253的计数初值编程;某个8253的计数器0、1、2端口和控制端口地址依次是40H43H;设置计

12、数器0采用二进制计数,写入计数初值:1024(400H)mov ax,1024;计数初值:1024(400H);写入计数器0地址:40Hout 40h,al;写入低字节计数初值mov al,ahout 40h,al;写入高字节计数初值294.8254的读回命令n8254比8253多了读回命令,可以令3个通道的计数值和状态锁存,向CPU返回一个状态字n读回命令写入控制端口,状态字和计数值都通过计数器端口读取 9.2 8253在IBM PC系列机上的应用A0A1 A0 A1D0D7D0D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2D QCLK+5V接至DMA控制

13、器接至扬声器驱动器PB0PB1IRQ0DRQ0 8253+5V1.19318MHzDACK0 BRDIORIOWRDWRCST/CCS9.2.1 定时中断和定时刷新n从阅读初始化程序段n看计数器0作为定时中断的作用n将计数器1作为定时刷新n看如何编写初始化程序段定时中断mov al,36h;计数器0为方式3,采用二进制计数,;先低后高写入计数值out 43h,al;写入方式控制字mov al,0;计数值为0out 40h,al;写入低字节计数值out 40h,al;写入高字节计数值8253初始化计数器0:定时中断n计数器0:方式3,计数值:65536,输出频率为1.19318MHz655361

14、8.206Hz的方波n门控为常启状态,这个方波信号不断产生nOUT0端接8259A的IRQ0,用作中断请求信号n每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断nDOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能计数器1:定时刷新n需要重复不断提出刷新请求门控总为高,选择方式2或3n2ms内刷新128次,即15.6s刷新一次计数初值为18定时刷新mov al,54h;计数器1为方式2,采用二进制计数,只写低8位计数值out 43h,al;写入方式控制字mov al,18;计数初值为18out 41h,al;写入计数值8253初始化

15、9.2.2 扬声器控制n计数器2的输出控制扬声器的发声音调n计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声n扬声器还受控于并行接口(8255芯片)n必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音频率设置speakerprocpush axmov al,0b6hout 43h,al;写入控制字pop axout 42h,al;写入低8位计数值mov al,ahout 42h,al;写入高8位计数值retspeakerendp扬声器控制扬声器开speakonprocpush axin al,61hor al,03h;D1D0PB1

16、PB011B,其他位不变out 61h,alpop axretspeakonendp扬声器控制扬声器关speakoffprocpush axin al,61hand al,0fch;D1D0PB1PB000B,其他位不变out 61h,alpop axretspeakoffendp扬声器控制主程序;数据段freqdw 1193180/600;代码段mov ax,freqcall speaker;设置扬声器音调call speakon;打开扬声器声音mov ah,1;等待按键int 21hcall speakoff;关闭扬声器声音扬声器控制9.2.3 可编程硬件延时n利用日时钟每隔55ms中断一次不变的特点,可以编写一段不随系统时钟频率变化的固定延时程序n由于日时钟中断的时间单位是55ms,所以无法实现更短时间的延时n这时只有利用实时时钟中断,不过它的最短延时约是1ms(976 s)日时钟;延时开始mov ah,0int 1ahadd dx,90;加5秒(51890)mov bx,dx;期望值送bxrepeat:int 1ah;再读日时钟cmp bx,dx;与期望值比较jne repea

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业合同/协议

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号