《常用可编程接口芯片1定时器.ppt》由会员分享,可在线阅读,更多相关《常用可编程接口芯片1定时器.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 8 8 章章常用接口技术常用接口技术8.1 8.1 定时控制接口定时控制接口8.2 8.2 并行接口并行接口8.3 8.3 异步串行通信接口异步串行通信接口8.4 8.4 模拟接口模拟接口8.1 8.1 定时控制接口定时控制接口定时控制具有极为重要的作用定时控制具有极为重要的作用n微微机机控控制制系系统统中中常常需需要要定定时时中中断断、定定时时检检测测、定时扫描等定时扫描等n实实时时操操作作系系统统和和多多任任务务操操作作系系统统中中要要定定时时进进行行进程调度进程调度nPCPC机机的的日日时时钟钟计计时时、DRAMDRAM刷刷新新定定时时和和扬扬声声器器音音调控制都采用了定时控制技术
2、调控制都采用了定时控制技术可编程定时器芯片可编程定时器芯片n软硬件相结合、方便灵活的定时电路软硬件相结合、方便灵活的定时电路软件延时方法软件延时方法n处理器执行延时子程序处理器执行延时子程序8.1.1 8.1.1 定时器定时器8253/82548253/8254定定时时器器(计计数数器器):由由数数字字电电路路中中的的计计数数电电路路构构成成,记记录录输输入脉冲的个数入脉冲的个数n脉脉冲冲信信号号具具有有一一定定随随机机性性,往往往往通通过过脉脉冲冲的的个个数可以获知外设的状态变化次数(计数)数可以获知外设的状态变化次数(计数)n脉脉冲冲信信号号的的周周期期固固定定(使使用用高高精精度度晶晶振
3、振产产生生脉脉冲冲信号信号),个数乘以周期就是时间间隔(定时)个数乘以周期就是时间间隔(定时)Intel 8253/8254Intel 8253/8254可编程间隔定时器可编程间隔定时器n3 3个独立的个独立的1616位计数器通道位计数器通道n每个计数器有每个计数器有6 6种工作方式种工作方式1.1.内部结构和引脚内部结构和引脚与计算机系统总线的接口与计算机系统总线的接口3 3个相互独立的计数器通道个相互独立的计数器通道,结构完全相同结构完全相同n计数器计数器0 0n计数器计数器1 1n计数器计数器2 2每个计数器通道每个计数器通道n1616位减法计数器位减法计数器n1616位预置寄存器位预置
4、寄存器n输出锁存器输出锁存器预置寄存器预置寄存器GATECLKOUT减减1计数器计数器输出锁存器输出锁存器定时器外设引脚定时器外设引脚CLKCLK时钟输入信号时钟输入信号n在在计计数数过过程程中中,此此引引脚脚上上每每输输入入一一个个时时钟钟信信号号(下降沿),计数器的计数值减(下降沿),计数器的计数值减1 1GATEGATE门控输入信号门控输入信号n控控制制计计数数器器工工作作,可可分分成成电电平平控控制制和和上上升升沿沿控控制两种类型制两种类型OUTOUT计数器输出信号计数器输出信号n当当一一次次计计数数过过程程结结束束(计计数数值值减减为为0 0),OUTOUT引引脚上将产生一个输出信号
5、脚上将产生一个输出信号连接处理器引脚连接处理器引脚lD D7 7D D0 0数据线数据线lA A1 1A A0 0地地址址线线注注意意,当当在在80868086,IA-32IA-32构构架架上上使使用用,一一般般通通过过系系统统数数据据总总线线D7D0D7D0传传送送数数据据,这这时时应应该该使使用用偶偶数地址(数地址(A0=0A0=0)lRD*RD*读信号读信号lWR*WR*写信号写信号lCS*CS*片选信号,假设片选信号,假设A15A3A15A3为为0000 0000 0100 0*00000 0000 0100 0*0奇数地址有误可编程计数器可编程计数器/定时器功能定时器功能功能体现在两
6、个方面:功能体现在两个方面:一是一是:作为计数器。:作为计数器。即在设置好计数初值后,便开始即在设置好计数初值后,便开始减减1计数,减到计数,减到0时,输时,输出一个信号出一个信号二是二是:作为定时器。:作为定时器。即在设置好定时时间常数后,便开始减一计数,并按定即在设置好定时时间常数后,便开始减一计数,并按定时时间常数不断地输出时钟周期整数倍的定时信号。时时间常数不断地输出时钟周期整数倍的定时信号。两者之间的差别:两者之间的差别:计数器只输出一个信号,除非冲服触发计数器只输出一个信号,除非冲服触发定时器输出连续信号(减到定时器输出连续信号(减到0后,自动回复时间常数初值并重新后,自动回复时间
7、常数初值并重新开始计数)。开始计数)。典型用处典型用处在多任务的分时系统中作为中断信号实现程序的在多任务的分时系统中作为中断信号实现程序的切换。切换。可往可往I/O设备输出精确的定时信号。设备输出精确的定时信号。作为一个可编程的波特率发生器。作为一个可编程的波特率发生器。实现时间延迟。实现时间延迟。基本结构原理基本结构原理原理就是可预置初值的减法计数器。原理就是可预置初值的减法计数器。主要组成包括:主要组成包括:(1)初值寄存器)初值寄存器接收并保存接收并保存CPU送来的初值送来的初值(2)计数寄存器)计数寄存器从初值寄存器接收计数初值从初值寄存器接收计数初值,减法计数器。减法计数器。计数脉冲
8、就是时钟输入信号,在门控信号有效时开始计数。(3)控制寄存器)控制寄存器接收接收CPU的控制信号,选择不同的工作模的控制信号,选择不同的工作模式等式等(4)状态寄存器)状态寄存器保存计数器的状态保存计数器的状态基本原理图如下图基本原理图如下图2.2.工作方式工作方式82538253有有6 6种工作方式,由方式控制字确定种工作方式,由方式控制字确定每种工作方式的过程类似:每种工作方式的过程类似:设定工作方式设定工作方式 设定计数初值设定计数初值 硬件启动硬件启动 计数初值进入减计数初值进入减1 1计数器计数器 每输入一个时钟计数器减每输入一个时钟计数器减1 1的计数过程的计数过程 计数过程结束计
9、数过程结束(1)(1)定时器方式定时器方式0 0:计数结束中断:计数结束中断GATEOUTCLK 031244方式方式0WR设设定定工工作作方方式式设设定定计计数数初初值值计计数数值值送送入入计计数数器器计计数数过过程程计计数数结结束束方式方式0 0的波形如图所示的波形如图所示.当当控控制制字字写写入入控控制制字字寄寄存存器器后后,输输出出OUTOUT就就变变低低,当当计计数数值值写写入入计计数数器器后后开开始始计计数数,在在整整个个计计数数过过程程中中,OUTOUT保保持持为为低低,当当计计数数到到0 0后后,OUTOUT变变高高;GATEGATE的的高高低低电电平平控控制制计计数数过过程程
10、是是否否进进行。行。写控制字写控制字写写计计数初数初值值GATE=1计数计数工作方式工作方式0 0有如下特点:有如下特点:计计数数器器只只计计一一遍遍,当当计计数数到到0 0时时,不不重重新新开开始始计计数数保保持持为为高,直到输入一新的计数值,高,直到输入一新的计数值,OUTOUT才变低,开始新的计数;才变低,开始新的计数;计计数数值值是是在在写写计计数数值值命命令令后后经经过过一一个个输输入入脉脉冲冲,才才装装入入计计数数器器的的,下下一一个个 脉脉冲冲开开始始计计数数,因因此此,如如果果设设置置计计数数器器初值为初值为N N,则输出,则输出OUTOUT在在N N1 1个个 脉冲后才能变高
11、;脉冲后才能变高;在计数过程中,可由在计数过程中,可由GATEGATE信号控制暂停。信号控制暂停。当当GATEGATE0 0时,暂停计数;时,暂停计数;当当GATEGATE1 1时,继续计数;时,继续计数;在在计计数数过过程程中中可可以以改改变变计计数数值值,且且这这种种改改变变是是立立即即有有效效的的,分成两种情况:分成两种情况:若是若是8 8位计数,则写入新值后的下一个脉冲按新值计数;位计数,则写入新值后的下一个脉冲按新值计数;若若是是1616位位计计数数,则则 在在写写入入第第一一个个字字节节后后,停停止止计计数数,写写入入第二个字节后的下一个脉冲按新值计数。第二个字节后的下一个脉冲按新
12、值计数。(2 2)定时器方式)定时器方式1 1:可编程单稳脉冲:可编程单稳脉冲设设定定工工作作方方式式设设定定计计数数初初值值硬硬件件启启动动计计数数值值送送入入计计数数器器计计数数过过程程计计数数结结束束GATEOUTCLK 031244方式方式1WR方方式式1 1的的波波形形如如图图所所示示,CPUCPU向向82538253写写入入控控制制字字后后OUTOUT变变高高,并并保保持持,写写入入计计数数值值后后并并不不立立即即计计数数,只只有有当当外外界界GATEGATE信信号号启启动动后后(一一个个正正脉脉冲冲)的的下下一一个个脉脉冲冲才才开开始始计计数数,OUTOUT变变低低,计计数数到到
13、0 0后后,OUTOUT才才变变高高,此此时时再再来来一一个个GATEGATE正正脉脉冲冲,计计数数器器又又开始重新计数,输出开始重新计数,输出OUTOUT再次变低,再次变低,.因此因此输输出出为为一一负负脉冲,脉冲脉冲,脉冲宽宽度受度受计计数初数初值值控制,由控制,由GATE信号触信号触发发。特点特点输出输出OUTOUT宽度为计数初值的单脉冲;宽度为计数初值的单脉冲;输出受门控信号输出受门控信号GATEGATE的控制,分三种情况:的控制,分三种情况:n计计数数到到0 0后后,再再来来GATEGATE脉脉冲冲,则则重重新新开开始始计计数数,OUTOUT变低;变低;n在在计计数数过过程程中中来来
14、GATEGATE脉脉冲冲,则则从从下下一一CLKCLK脉脉冲冲开开始始重重新计数,新计数,OUTOUT保持为低;保持为低;n改改变变计计数数值值后后,只只有有当当GATEGATE脉脉冲冲启启动动后后,才才按按新新值值计计数数,否否则则原原计计数数过过程程不不受受影影响响,仍仍继继续续进进行行,即即新新值值的的改变是从下一个改变是从下一个GATEGATE开始的。开始的。计计数数值值是是多多次次有有效效的的,每每来来一一个个GATEGATE脉脉冲冲,就就自自动动装装入入计计数数值值开开始始从从头头计计数数,因因此此在在初初始始化化时时,计计数数值值写写入入一一次次即可。即可。(3 3)方式)方式2
15、 2 分频器分频器方方式式2 2的的波波形形如如图图所所示示。在在这这种种方方式式下下,CPUCPU输输出出控控制制字字后后,输输出出OUTOUT就就变变高高,写写入入计计数数值值后后的的下下一一个个CLKCLK脉脉冲冲开开始始计计数数,计计数数到到1 1后后,输输出出OUTOUT变变低低,经经过过一一个个CLKCLK以以后后,OUTOUT恢恢复复为为高高,计计数数器器重重新新开开始始计计数数。因因此此在在这这种种方方式式下下,只只需需写写入入一一次次计计数数值值,就就能能连连续续工工作作,输输出出连连续续相相同同间间隔隔的的负负脉脉冲冲(前前提提:GATEGATE保持为高),即周期性地输出,
16、保持为高),即周期性地输出,特点特点通道可以连续工作;通道可以连续工作;GATEGATE可可以以控控制制计计数数过过程程,当当GATEGATE为为低低时时暂暂停停计计数数,恢恢复复为为高高后后重重新新从从初初值值;(注注意意:该该方方式式与与方方式式0 0不不同同,方方式式0 0是继续计数)是继续计数)重重新新设设置置新新的的计计数数值值即即在在计计数数过过程程中中改改变变计计数数值值,则则新新的的计数值是下次有效的,同方式计数值是下次有效的,同方式1 1。(4 4)定时器方式)定时器方式3 3:方波发生器:方波发生器03124GATEOUTCLK 4方式方式3031240312403124W
17、R方方式式3 3的的波波形形如如图图所所示示,这这种种方方式式下下的的输输出出与与方方式式2 2都都是是周周期期性性的,不同的是:输出的是方波。的,不同的是:输出的是方波。当计数值当计数值N N是偶数,输出正负脉冲宽度是偶数,输出正负脉冲宽度 N/2 N/2的方波的方波当计数值当计数值N N是奇数,正脉冲宽度是奇数,正脉冲宽度 (N+1)/2N+1)/2,负脉冲宽度(负脉冲宽度(N-1)/2N-1)/2。特点特点 通道可以连续工作;通道可以连续工作;关关于于计计数数值值的的奇奇偶偶,若若为为偶偶数数,则则输输出出标标准准方方波波,高高低低电电平平各各为为N/2N/2个个;若若为为奇奇数数,则则
18、正正脉脉冲冲宽宽度度(N N1 1)/2/2个个CLKCLK周期,负脉冲宽度(周期,负脉冲宽度(N N1 1)/2/2个个CLKCLK周期;周期;GATEGATE信信号号能能使使计计数数过过程程重重新新开开始始,当当GATEGATE0 0时时,停停止止计计数数,当当GATEGATE变变高高后后,计计数数器器重重新新装装入入初初值值开开始始计计数数,尤尤其其是是当当GATEGATE0 0时时,若若OUTOUT此此时时为为低低,则则立立即即变变高高,其它动作同上;其它动作同上;在在计计数数期期间间改改变变计计数数值值不不影影响响现现行行的的计计数数过过程程,一一般般情情况况下下,新新的的计计数数值
19、值是是在在现现行行半半周周结结束束后后才才装装入入计计数数器器。但但若若中中间间遇遇到到有有GATEGATE脉脉冲冲,则则在在此此脉脉冲冲后后即即装装入入新新值值开开始始计计数。数。(5 5)定时器方式)定时器方式4 4:软件触发选通信号:软件触发选通信号GATEOUTCLK031244方式方式4223331 0WR方方式式4 4的的波波形形如如图图所所示示。CPUCPU写写入入控控制制字字后后,OUTOUT立立即即变变高高,写写入入计计数数值值开开始始计计数数,当当计计数数到到0 0后后,OUTOUT变变低低,经经过过一一个个CLKCLK脉脉冲冲后后,OUTOUT变变高高,这这种种计计数数是
20、是一一次次性性的的(与与方方式式0 0有有相似之处),只有当写入新的计数值后才开始下一次计数。相似之处),只有当写入新的计数值后才开始下一次计数。当当计计数数值值为为N N时时,则则间间隔隔N N1 1个个CLKCLK脉脉冲冲输输出出一一个个负负脉脉冲冲(计数一次有效);(计数一次有效);GATEGATE0 0时,禁止计数,时,禁止计数,GATEGATE1 1时,恢复继续计数;时,恢复继续计数;在在计计数数过过程程中中重重新新装装入入新新的的计计数数值值,则则该该值值是是立立即即有有效效的的(若若为为1616位位计计数数值值,则则装装入入第第一一个个字字节节时时停停止止计计数数,装装入入第二个
21、字节后开始按新值计数)。第二个字节后开始按新值计数)。(6 6)定时器方式)定时器方式5 5:硬件触发选通信号:硬件触发选通信号GATEOUTCLK031244方式方式52233311 0WR当当控控制制字字写写入入后后,OUTOUT立立刻刻变变高高,写写入入计计数数值值后后并并不不立立即即开开始始计计数数,而而是是由由GATEGATE的的上上升升沿沿触触发发启启动动计计数数的的,当当计计数数到到0 0时时,输输出出变变低低,经经过过一一个个CLKCLK之之后后,输输出出恢恢复复为为高高,计计数数停停止止,若若再再有有GATEGATE脉脉冲冲来来,则则重重新新装装入入计计数数值值开开始始计计数
22、数,上上述述过过程程重复。重复。特点特点在在这这种种方方式式下下,若若设设置置的的计计数数值值是是N N,则则在在GATEGATE脉脉冲冲后后,经过(经过(N N1 1)个)个CLKCLK才一个负脉冲;才一个负脉冲;若若在在计计数数过过程程中中又又来来一一个个GATEGATE脉脉冲冲,则则重重新新装装入入初初值值开开始计数,输出不变,即计数值多次有效;始计数,输出不变,即计数值多次有效;若若在在计计数数过过程程中中修修改改计计数数值值,则则该该计计数数值值在在下下一一个个GATEGATE脉冲后装入开始按此值计数。脉冲后装入开始按此值计数。3.8253/82543.8253/8254的编程的编程
23、82538253是可编程接口芯片是可编程接口芯片8253/82548253/8254需要处理器对他进行初始化编程,才能正确工作。需要处理器对他进行初始化编程,才能正确工作。编程指的是编程指的是设置控制字设置控制字设置时间常数设置时间常数等等(1 1)控制寄存器与控制字)控制寄存器与控制字有两个有两个模式设置寄存器和读出控制寄存器模式设置寄存器和读出控制寄存器 模式设置控制字模式设置控制字(a a)BCDBCD计数初值格式,计数初值格式,=0=0,二进制,二进制 =1 =1,BCDBCD码码地址:最高端口地址:最高端口控制端口控制端口(b b)M2M2,M1M1,M0M0模式选择模式选择000
24、000 模式模式0 0001001模式模式1 1X10X10模式模式2 2X11X11模式模式3 3100100模式模式4 4101101模式模式5 5(c c)WR1WR1,WR0WR0读读/写指示位。写指示位。0000对计数器进行锁存,以便读出对计数器进行锁存,以便读出0101只读只读/写低写低8 8位位1010只读只读/写高写高8 8位位1111先读先读/写低写低8 8位,后读位,后读/写高写高8 8位位(d d)SC1SC1,SC0 SC0 计数器选择计数器选择0000选择计数器选择计数器0 00101选择计数器选择计数器1 11010选择计数器选择计数器2 21111读读出出控控制制
25、字字的的标标识识码码,只只要要该该2 2位位=0=0,写写入入的的是是读出模式控制字读出模式控制字控制字写入控制字控制字写入控制字I/OI/O地址:地址:A1A0A1A0111100 计数器计数器001 计数器计数器110 计数器计数器211 非法非法 (8253)11 读回命令读回命令 (8254)00 计数器锁存命令计数器锁存命令 01 只读写低字节只读写低字节10 只读写高字节只读写高字节11 先读写低字节先读写低字节 后读写高字节后读写高字节000 方式方式0001 方式方式1*10 方式方式2*11 方式方式3100 方式方式4101 方式方式50 二进制二进制1 十进制十进制设置设
26、置模式设置控制字举例模式设置控制字举例假设假设8253端口:端口:80H,82H,84H,86H,通道,通道0使用二进制计数,工作使用二进制计数,工作在模式在模式0,通道,通道1使用使用BCD计数,模计数,模式式1,通道,通道2使用二进制计数,模式使用二进制计数,模式2,全部通道,全部通道16位计数器,先写低位计数器,先写低8位,位,后写高后写高8位。位。通道通道0模式控制字:模式控制字:00110000B通道通道1模式控制字:模式控制字:01110011B通道通道2模式控制字:模式控制字:10110110BMOV DX,86H;MOV AL,30H;控制字;控制字OUTDX,ALMOV AL
27、,73H;OUTDX,ALMOV AL,0B6HOUTDX,AL.读出控制字读出控制字D7,D6,=11,为读为读出模式控制字,出模式控制字,这时这时D0=0D5:=0,将所,将所选选定的定的计计数器当前数器当前计计数数值锁值锁存,以便后面存,以便后面读读取取D4:=0,将所,将所选选定的定的计计数器的状数器的状态进态进行行锁锁存,存,D3,D2,D1:分:分别对应别对应3个个计计数通道,数通道,=1,选选中通道被中通道被锁锁存存可以同可以同时锁时锁存多个通道的存多个通道的计计数器的数器的计计数数值值但不能同但不能同时锁时锁存多个存多个计计数器的状数器的状态态地址:最高端口地址:最高端口控制端
28、口控制端口 写写(2)状态寄存器状态寄存器只有只有8254有状态端口,有状态端口,8253无该端口。无该端口。D7:输输出端出端OUT的状的状态态D6:表示初表示初值值是否已装入是否已装入计计数器,数器,=0:已装入,:已装入,=1未装入未装入D5D0:与模式寄存器含:与模式寄存器含义义相同相同(3)编程命令与初始化编程编程命令与初始化编程编程原则:编程原则:设置初值前必须先写模式控制字设置初值前必须先写模式控制字 初值设置要符合控制字中的格式规定初值设置要符合控制字中的格式规定 要读取计数器的当前值(或读取状态字),必须用控制字先要读取计数器的当前值(或读取状态字),必须用控制字先锁定,再读
29、取。锁定,再读取。编程命令有两类:编程命令有两类:写入命令写入命令 读出命令读出命令 写入命令写入命令3个个有三个有三个(1 1)设置模式控制字命令)设置模式控制字命令 设置工作模式等。(2 2)设置初始值命令)设置初始值命令 (3 3)锁存命令)锁存命令 与读出命令配合,在读出前,要先锁存 读出命令读出命令2个个(1)读取计数器当前的值。)读取计数器当前的值。要先锁定,然后再读出。要先锁定,然后再读出。(2)对)对8254,还可读取状态字,还可读取状态字 要先锁定,然后再读出。要先锁定,然后再读出。例如要读出通道例如要读出通道2的计数值,先向读出控制寄存器写锁定命令的计数值,先向读出控制寄存
30、器写锁定命令端口地址:端口地址:70H70H,72H72H,74H74H,76H76H例如要读出通道例如要读出通道2 2的的 1111 0 0 1 1 1 1 0 0 0 0 0 0 读出控制字读出控制字D7,D6,=11,为读为读出模式控制字,出模式控制字,这时这时D0=0D5:=0,将所,将所选选定的定的计计数器当前数器当前计计数数值锁值锁存,以便后面存,以便后面读读取取D4:=0,将所,将所选选定的定的计计数器的状数器的状态进态进行行锁锁存,存,D3,D2,D1:分:分别对应别对应3个个计计数通道,数通道,=1,选选中通道被中通道被锁锁存存可以同可以同时锁时锁存多个通道的存多个通道的计计
31、数器的数器的计计数数值值但不能同但不能同时锁时锁存多个存多个计计数器的状数器的状态态地址:最高端口地址:最高端口控制端口控制端口 写写方式控制字编程示例方式控制字编程示例;8253;8253的计数器的计数器0 0、1 1、2 2端口和控制端口地址:端口和控制端口地址:40H40H43H43H;设置其中计数器设置其中计数器0 0为方式为方式0 0;采用二进制计数,先低后高写入计数值采用二进制计数,先低后高写入计数值mov al,mov al,30h30h;方式控制字:方式控制字:30H30H0000 11 11 000000 0B 0Boutout 43h43h,al,al;写入控制端口:写入控
32、制端口:43H43H3.3.编程:写入计数值编程:写入计数值选择二进制时选择二进制时n计数值范围:计数值范围:0000H0000HFFFFHFFFFHn0000H0000H是最大值,代表是最大值,代表6553665536选择十进制(选择十进制(BCDBCD码)码)n计数值范围:计数值范围:0000000099999999n00000000代表最大值代表最大值1000010000计数值写入计数器各自的计数值写入计数器各自的I/OI/O地址地址按方式控制字规定的读写格式进行按方式控制字规定的读写格式进行计数值编程示例计数值编程示例;8253;8253的计数器的计数器0 0、1 1、2 2端口和控制
33、端口地址:端口和控制端口地址:40H40H43H43H;设置计数器设置计数器0 0采用二进制计数采用二进制计数;写入计数初值:写入计数初值:10241024(400H400H)mov ax,1024mov ax,1024;计数初值:计数初值:10241024(400H400H);写入计数器写入计数器0 0地址:地址:40H40Hout out 40h40h,al,al;写入低字节计数初值写入低字节计数初值mov al,ahmov al,ahoutout 40h40h,al,al;写入高字节计数初值写入高字节计数初值8.1.2 8.1.2 定时器的应用定时器的应用(1 1)方波脉冲)方波脉冲要求
34、利用要求利用8253在在OUT2输出输出2KHZ方波方波编写相应的程序编写相应的程序地址:地址:1000 000*XX01000 000*XX0(没有使用的地址信号,没有使用的地址信号,0 0和和1 1都可以,这里使用都可以,这里使用0 0比较方便比较方便)通道通道0 0数据寄存器:数据寄存器:8000H8000H通道通道1 1数据寄存器:数据寄存器:8002H8002H通道通道2 2数据寄存器:数据寄存器:8004H8004H控制寄存器控制寄存器 :8006H8006H方方波波:通通道道3 3选选择择方方式式3 3,2MHz-2KHz2MHz-2KHz分分频频系系数数10001000,使使用
35、二进制,控制字:用二进制,控制字:10 10 11 11 011 011 0 0其它通道不用其它通道不用 时间常数:时间常数:100003E8H100003E8H如如果果要要求求输输出出脉脉冲冲宽宽度度为为1 1个个时时钟钟周周期期的的分分频频脉脉冲冲而而不不是是方方波波脉冲,就选用方式脉冲,就选用方式2 2CODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATAASSUME CS:CODE,DS:DATASTART:START:MOVMOV DX,8006HDX,8006H;控制字端口;控制字端口MOVMOV AL,0B6HAL,0B6H;控制字;控制字
36、OUTOUT DX,ALDX,ALMOVMOV DX,8004HDX,8004H;通道;通道2 2时间常数端口时间常数端口MOVMOV AL,0E8HAL,0E8H;低;低8 8位时间常数位时间常数OUTOUT DX,ALDX,ALMOVMOV AL,03HAL,03H;高;高8 8 位时间常数位时间常数OUTOUT DX,ALDX,ALJMP$JMP$;没有其他工作,只产生脉冲,故没有其他工作,只产生脉冲,故;完成设置后,在此死循环;完成设置后,在此死循环CODE ENDSCODE ENDSEND STARTEND START(2 2)定时中断定时中断mov al,36hmov al,36h
37、;计数器计数器0 0为方式为方式3 3,二进制计数,二进制计数;先低后高写入计数值先低后高写入计数值out 43h,alout 43h,al;写入方式控制字写入方式控制字mov al,0mov al,0;计数值为计数值为0 0out 40h,alout 40h,al;写入低字节计数值写入低字节计数值out 40h,alout 40h,al;写入高字节计数值写入高字节计数值计数器计数器0 0:方式方式3 3,计数值:计数值:6553665536,输出方波,输出方波频率:频率:6553665536,不断产生,不断产生OUTOUT0端端接接8259A8259A的的IRQIRQ0,每每秒秒产产生生次次
38、中中断断请请求求,或或说说每每隔隔55ms55ms()申请一次中断()申请一次中断DOSDOS系系统统利利用用计计数数器器0 0的的这这个个特特点点,通通过过0808号号中中断断服服务务程程序序实现了日时钟计时功能实现了日时钟计时功能(3 3)定时刷新定时刷新需要重复不断提出刷新请求需要重复不断提出刷新请求 门控总为高,选择方式门控总为高,选择方式2 2或或3 32ms2ms内刷新内刷新128128次,即次,即 s s刷新一次刷新一次 计数初值为计数初值为1818mov al,54hmov al,54h;计数器计数器1 1为方式为方式2 2;采用二进制计数,只写低采用二进制计数,只写低8 8位
39、计数值位计数值out 43h,alout 43h,al;写入方式控制字写入方式控制字mov al,18mov al,18;计数初值为计数初值为1818out 41h,alout 41h,al;写入计数值写入计数值(4 4)扬声器控制扬声器控制;发音频率设置子程序发音频率设置子程序;入口参数:入口参数:AXAX1.19318101.19318106 6发音频率发音频率speakerspeaker procproc push axpush ax ;暂存入口参数暂存入口参数 mov al,0b6hmov al,0b6h ;定时器定时器2 2为方式为方式3 3,先低后高,先低后高 out 43h,al
40、out 43h,al ;写入方式控制字写入方式控制字 pop axpop ax ;恢复入口参数恢复入口参数 out 42h,alout 42h,al ;写入低写入低8 8位计数值位计数值 mov al,ahmov al,ah out 42h,alout 42h,al ;写入高写入高8 8位计数值位计数值 retret speakerspeaker endpendp扬声器发音控制扬声器发音控制speakonspeakonprocproc;扬声器开扬声器开子程序子程序push axpush axin al,61hin al,61h;读取读取61H61H端口的原控制信息端口的原控制信息or al,0
41、3hor al,03h;D1D0;D1D0PB1PB0PB1PB01111,其其他他不变不变out 61h,alout 61h,al;直接控制发声直接控制发声pop axpop axretretspeakonspeakonendpendp;扬声器关扬声器关子程序子程序and al,0fchand al,0fch;D1D0;D1D0PB1PB0PB1PB00000,其他不变,其他不变例例8-18-1控制扬声器程序控制扬声器程序;数据段数据段freqfreqdw 1193180/600dw 1193180/600;给一个给一个600Hz600Hz的频率的频率;代码段代码段mov ax,freqmov ax,freqcall speakercall speaker;设置扬声器的音调设置扬声器的音调call speakoncall speakon;打开扬声器声音打开扬声器声音call readccall readc;等待按键等待按键call speakoffcall speakoff;关闭扬声器声音关闭扬声器声音;子程序子程序输出:输出:明确向哪个明确向哪个端口端口输出什么输出什么数据数据输入:输入:清楚从哪个清楚从哪个端口端口输入什么输入什么数据数据
限制150内