实验6_8254定时器计数器应用实验
- 格式:doc
- 大小:535.50 KB
- 文档页数:9
XX 大学实验报告课程名称:实验项目名称:8254定时/计数器应用实验学院:信息工程学院专业:通信工程指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务处制单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为:n=fCLKi÷fOUTi、其中fCLKi 是输入时钟脉冲的频率,fOUTi 是输出波形的频率。
图(1)是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。
8254 的工作方式如下述:(1)方式0:计数到0 结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
图(1)8254的内部借口和引脚8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。
这两个控制字共用一个地址,由标识位来区分。
控制字格式如表1所示。
表1 8254的方式控制字表2 8254 读出控制字格式表3 8254 状态字格式8254 实验单元电路图如下图所示:五、实验步骤及相应操作结果1. 计数应用实验编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0 时钟,OUT0 连接MIR7,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符“M”。
实验步骤:(1)实验接线如图2所示。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,按动KK1+产生单次脉冲,观察实验现象。
(4)改变计数值,验证8254 的计数功能。
图2 8254 计数应用实验接线图实验程序清单A8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SSTACKSTART: PUSH DS运行结果如下:改变计数值MOV DX,CON8254MOV AL,10HOUT DX,AL六、实验结论:。
8254定时计数器实验实验报告一、实验目的本次实验的主要目的是深入了解和掌握 8254 定时计数器的工作原理、编程方法以及在实际应用中的操作流程。
通过亲自动手实践,提高对计算机硬件接口技术的理解和应用能力。
二、实验设备1、计算机一台2、 8254 定时计数器实验箱三、实验原理8254 是一种可编程的定时/计数器芯片,它包含三个独立的 16 位计数器通道,分别称为计数器 0、计数器 1 和计数器 2。
每个计数器都可以工作在不同的模式下,如方式 0 计数结束中断、方式 1 可重触发单稳态、方式 2 频率发生器、方式 3 方波发生器、方式 4 软件触发选通、方式 5 硬件触发选通。
在本次实验中,我们主要利用 8254 的计数器 0 来产生一定频率的方波信号,并通过指示灯的闪烁来观察其效果。
四、实验步骤1、按照实验箱的说明书,将 8254 芯片正确地插入插槽中,并连接好相关的线路。
2、打开计算机,进入实验环境。
3、编写 8254 的初始化程序,设置计数器 0 的工作模式、计数初值等参数。
选择工作模式 3(方波发生器)。
设定计数初值,以控制方波的频率。
4、编译并运行程序,观察指示灯的闪烁情况。
五、实验代码以下是本次实验中使用的 8254 初始化程序代码(以汇编语言为例):```assemblyMOV DX, 043H ;控制字端口地址MOV AL, 00110110B ;控制字:选择计数器 0,先读/写低 8 位,再读/写高 8 位,工作方式 3,二进制计数OUT DX, ALMOV DX, 040H ;计数器 0 端口地址MOV AL, 00H ;先写低 8 位计数值OUT DX, ALMOV AL, 10H ;再写高 8 位计数值OUT DX, AL```六、实验结果及分析1、实验结果当程序运行后,观察到连接在计数器 0 输出端的指示灯按照设定的频率闪烁,表明 8254 定时计数器工作正常,成功产生了方波信号。
实验七8254定时/计数器实验1 实验目的(1) 掌握8254的典型应用电路接法。
(2) 掌握8254的工作方式及应用编程。
2 实验设备PC微机一台、TD-PIT+实验系统一套、示波器。
3 实验内容(1) 编程实现将8254定时/计数器1设计为产生频率为250HZ方波的方波发生器,定时/计数器2 设计为将定时/计数器1的输出进行4分频的速率波发生器。
系统提供的时钟CLK 频率为1MHz。
4 实验步骤1. 电路设计图7-1 8254实验1接线图(示波器探头小夹子接地)2. 编程提示(1) 8254控制字格式:计数器选择读/写格式选择工作方式选择计数码制选择00:计数器 0 00:当前计数值锁存 000:方式 0;100: 方式 4 0:计数值为二进制01:计数器 1 01:读/写低字节 001:方式 1;101: 方式 5 格式10:计数器 2 10:读/写高字节 X10:方式 2 1:计数值为BCD码11:读出控制字 11:先读/写低字节, X11:方式 3 格式标志后读/写高字节(2)计数初值N = f CLK/f OUT = T OUT/T CLK(3) 8254的初始化编程步骤①送控制字到控制端口;②送计数初值到计数器端口。
设置初始值时,应与控制字中的格式规定一致,当控制字中设置只读/写高字节或只读/写低字节时,初始值是1字节。
当控制字中设置先读/写低字节后读/写高字节时,初始值为2字节,分两次传送。
5 实验代码IOY0 EQU 0DC00HCOUNT0 EQU IOY0+0*4COUNT1 EQU IOY0+1*4COUNT2 EQU IOY0+2*4MODE EQU IOY0+3*4STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODESTART:MOV DX,MODEMOV AL,01110110BOUT DX,ALMOV DX,COUNT1MOV AX,4000DOUT DX,ALMOV AL,AHOUT DX,ALMOV DX,MODEMOV AL,10010110BOUT DX,ALMOV DX,COUNT2MOV AL,3HOUT DX,ALMOV AH,4CHINT 21HCODE ENDSEND START。
【精品】实验五 8254计数定时器实验1、实验目的学习8254计数定时器的工作原理,掌握8254计数定时器的编程方法,加强对8254计数定时器的认识,并熟练掌握其应用。
2、实验器材计算机、标准信号发生器、万用表等。
3、实验原理8254计数定时器是一种可编程和可复用的计数/定时器,它可以工作在单独的计数、单独的定时、计数与定时相结合等多种工作模式下,既可以用于计数,也可以用于定时。
它有三个独立的可编程计数器(C0,C1,C2),每个计数器都有一个特殊的16位计数寄存器CR,一个读/写工作方式的计数器工作寄存器CR0,以及为不同的应用提供不同带有多种功能的计数/定时输出方式的通用输出寄存器(G0,G1,G2)。
8254计数定时器有4个I/O端口(0x40,0x41,0x42,0x43)与外部设备相连。
通过读/写这四个I/O端口中的寄存器,就可以操作8254计数定时器的寄存器和计数器寄存器。
计算机中将8254计数定时器的三个计数器均放在一块芯片中,称为计数定时器芯片。
掌握8254计数定时器的编程方法是我们进行下一步应用实验的基础。
(1)测量8254计数定时器的计数时间。
将8254计数定时器的输出端与示波器相连,设置8254的计数器工作模式,并制作相应的控制程序,运行程序,观察并测量8254计数定时器的计数时间。
5、实验步骤(1)测量8254计数定时器的计数时间。
1)将标准信号发生器输出的方波信号(频率为300Hz)经过电阻分压后,接到8254计数定时器的C0引脚上(可用排针连线连接),8254计数定时器的G0引脚再接到示波器的Y轴输入端,示波器的X轴调为10ms/格,Y轴调为1V/格。
2)编写控制程序,设置8254计数定时器的C0计数器工作模式(计数模式0),计数器初值为0,最后输出计数寄存器中的计数值,通过读取计数器寄存器和计数寄存器可以得到8254计数定时器的计数时间。
3)运行程序,并用示波器观察8254计数定时器的计数输出波形,测量并计算出计时的时间。
XX学院实验报告实验名称姓名学号班级教师日期一、实验内容与要求1.1 实验内容本次实验分为如下2个子实验:(1)计数应用实验:编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按下‘KK1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’;(2)定时应用实验:编写程序,应用8254的定时功能,产生一个1s的方波,并用本装置的示波器功能来观察。
1.2 实验要求本次实验中2个子实验的实验要求如下:(1)计数应用实验:将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符“M”;(2)定时应用实验:将8254的计数器0和计数器1都设置为方式3,用信号源1MHz作为CLK0时钟,OUT0为波形输出1ms方波,再通过CLK1输入,OUT1输出1s方波。
二、实验原理与硬件连线2.1 实验原理8254是Intel公司生产的可编程间隔定时器。
是8253的改进型,比8253具有更优良的性能。
8254具有以下基本功能:(1)有三个地理的16位计数器。
(2)每个计数器可按二进制或十进制(BCD)计数。
(3)每个计数器可编程工作于6种不同的工作方式。
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz)。
(5)8254有读回命令(8253,没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为:n=f CLKi÷f OUTi,其中f CLKi是输入时钟脉冲的频率,f OUTi是输出波形的频率。
图2-1是8254的内部结构框图和引脚图,它是由与CPU的接口,内部控制电路和三个计数器组成。
8254的工作方式如下述:(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
最新8254定时计数器实验实验报告实验目的:1. 理解8254定时计数器的工作原理及其在微机系统中的作用。
2. 掌握8254定时计数器的编程方法,包括计数、定时和脉冲输出等操作。
3. 通过实验验证8254定时计数器的性能参数,如计数频率、计数范围等。
实验设备:1. 微机实验平台2. 8254定时计数器模块3. 示波器4. 连接线实验原理:8254定时计数器是一款可编程的定时/计数器集成电路,广泛应用于微机系统中进行定时、计数和波形发生等操作。
它包含三个独立的计数器,分别为计数器0、计数器1和计数器2,每个计数器都可以配置为不同的工作模式,如单稳态、双稳态、方波输出等。
实验步骤:1. 首先,根据实验指导书连接8254定时计数器模块到微机实验平台,并连接示波器以便于观察输出波形。
2. 编写程序,设置8254的控制字,选择合适的计数器工作模式,并设定计数频率。
3. 通过程序向8254发送计数值,启动计数操作。
4. 使用示波器观察并记录计数器的输出波形,验证其频率和稳定性。
5. 改变计数值和工作模式,重复步骤3和4,以测试8254的不同功能。
6. 最后,记录所有实验数据,并根据实验结果分析8254的性能。
实验结果:1. 记录不同计数值和工作模式下的输出波形频率,验证其与理论值的一致性。
2. 分析计数器在不同模式下的波形特点,如单稳态输出的脉冲宽度、双稳态输出的占空比等。
3. 根据实验数据,绘制波形图和频率表,直观展示8254的性能。
实验结论:通过本次实验,我们成功地验证了8254定时计数器的基本功能和性能参数。
实验结果表明,8254能够根据设定的计数值和工作模式,准确地进行计数和定时操作,输出稳定的波形信号。
这些特性使得8254定时计数器在微机系统中具有广泛的应用前景。
实验六定时器计数器应用实验报告一、实验目的本实验的目的是通过对定时器计数器的应用实验,加深对定时器和计数器工作原理的理解,掌握定时器的使用方法,并能灵活应用到实际工程中。
二、实验原理定时器是一种常用的计时设备,它可以在微处理器或微控制器系统中用于各种计数、计时和频率测量应用。
我们所面对的实验中使用的定时器是软件定时器,其工作原理是通过编程方式配置定时器的时钟源和计数器的计数范围,然后在主程序中通过中断或轮询的方式来读取计数器的值,从而实现不同的定时器功能。
计数器是一种用于计数的设备,它可以对外部信号的频率进行计数。
在本实验中,我们使用计数器来计算外部信号的脉冲数,并将计数结果显示出来。
三、实验材料1. STC89C52 单片机开发板2. 4位数码管3. 杜邦线若干4. 外部信号发生器四、实验步骤1. 连接电路图如下所示:(此处省略电路图)2. 打开 Keil μVision 软件并新建一个工程,选择合适的单片机型号。
3. 在主程序中初始化定时器和计数器,设置适当的时钟源和计数范围。
4. 设置外部中断,用于触发计数器开始计数。
5. 在中断服务程序中编写计数器处理逻辑,获取计数值并进行相应的操作。
6. 在主循环中,根据需求配置定时器,比如实现不同的定时功能,或者将计数结果显示在数码管上。
7. 编译、烧录程序到单片机开发板上,并进行实验验证。
五、实验结果经过实验,我们成功地实现了定时器计数器的应用功能。
通过设置不同的计数范围和外部触发条件,我们能够准确地计算出外部信号的脉冲数,并将计数结果显示出来。
同时,我们还实现了不同的定时功能,比如周期性触发中断、定时器中断延时等。
六、实验总结通过本次实验,我们深入理解了定时器和计数器的工作原理,并掌握了定时器的使用方法。
定时器计数器在实际工程中具有广泛的应用,比如用于频率测量、脉冲计数、定时触发等。
掌握了定时器计数器的使用,对于我们的工程开发和项目实施都具有重要的意义。
实验六8254定时计数器电⼯电⼦实验中⼼实验报告课程名称:计算机硬件技术基础实验名称:8254定时/计数器姓名:学号:评定成绩:审阅教师:实验时间:2017.06.06南京航空航天⼤学⼀、实验⽬的要求1) 掌握 8254 定时/计数器的名种⼯作⽅式及编程⽅法。
⼆、实验任务按照图 3-2-1 的要求连线,分别对 8254 芯⽚的 3 个定时/计数器编程,并选择合适的⼯作⽅式和初值,以达到如下的效果:1) 定时/计数器 0,计数脉冲频率为 18.432KHz,OUT0 分两路输出,⼀路外接 2 位 LED,使其以亮 0.5 秒灭 0.5 秒循环闪亮,另⼀路作为计数器 1 的计数脉冲 CLK1。
2) 定时/计数器 1,OUT1 的输出外接 2 位 LED,使其以亮 3 秒灭 1秒循环闪亮。
3) 定时/计数器 2 的计数脉冲来⾃单次脉冲单元,按压开关产⽣的脉冲作为计数器 2 的计数脉冲。
OUT2 外接 2 位 LED,当按压开关到 17 次时LED 长亮,并将按压开关的剩余次数将在屏幕上显⽰。
三、实验电路图图3-2-1 8254定时/计数器电原理图四、实验代码IOY0 EQU 3000HTIMER0 EQU IOY0+00H*4 ;8254计数器0端⼝地址TIMER1 EQU IOY0+01H*4 ;8254计数器1端⼝地址TIMER2 EQU IOY0+02H*4 ;8254计数器2端⼝地址TCTL EQU IOY0+03H*4 ;8254控制寄存器端⼝地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES0 DB ‘Pressed: $’MES1 DB ‘Press any key to exit !’,0DH,0AH,’$’NUM DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX, DATAMOV DS, AXMOV DX, OFFSET MES1MOV AH, 9INT 21HMOV DX, TCTLMOV AL, 00110110B ; 计数器0初始化,⽅式3 OUT DX, ALMOV DX, TIMER0MOV AL, 00HOUT DX, AL ;计数器0初值=4800HMOV AL, 48HOUT DX, ALMOV DX, TCTLMOV AL, 01010101B ; 计数器1初始化,⽅式2 OUT DX, ALMOV DX, TIMER1MOV AL, 04H ; 计数器1初值=04HOUT DX, ALMOV DX, TCTLMOV AL, 10010001B ; 计数器2初始化,⽅式0 OUT DX, ALMOV DX, TIMER2MOV AL, 0FH ;计数器0初值=0FHOUT DX, ALL1: MOV DX, TIMER2IN AL, DX ;读⼊计数器2值保存MOV NUM,ALCALL DISPMOV AL, NUM ;当按压开关17次时退出CMP AL, 0JZ QUITMOV DL, 0FFHMOV AH, 6 ;判主键盘有⽆键按下INT 21HJZ L1 ; 有键按下跳转QUIT: MOV AX, 4C00H ;结束程序退出INT 21HDISP PROC ;显⽰⼦程序MOV DX, OFFSET MES0MOV AH, 9 ; 显⽰MES0INT 21HMOV AL, NUMCMP AL, 9 ;判断是否<=9JLE L2 ;若是则为'0'-'9',ASCII码加30HADD AL, 7 ;否则为'A'-'F',ASCII码加37HL2: ADD AL, 30HMOV DL, ALMOV AH, 2 ;在显⽰器上显⽰按压开关的次数INT 21HMOV DL, 0DHINT 21HRETDISP ENDPCODE ENDSEND START五、实验的运⾏数据及分析实验达到了以下效果:1) 定时/计数器0,计数脉冲频率为18.432KHz,OUT0 分两路输出,⼀路外接 2 位LED,使其以亮0.5 秒灭0.5 秒循环闪亮,另⼀路作为计数器 1 的计数脉冲CLK1。
实验六8253/4定时器/计数器应用实验实验目的(1) 掌握8254的工作方式及应用编程(参考教材)(2) 掌握8254的典型应用电路的接法(3) 学习8254在PC系统中的典型应用方法实验设备 PC机一台,TD-PIT-B实验装置一套。
实验内容及说明1)计数应用实验。
2)定时应用实验。
3)电子发声实验注意:在断电情况,连接好实验线路,检查无误后,通电进行实验。
实验完毕,先断电,再拆线,并将导线整理好。
1. 计数应用实验:编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1-作为CLK0时钟,OUT0连接IRQ,每当KK1-按动5次后产生中断请求,在屏幕上显示字符“M”。
8254计数应用参考连接线图如图6-1。
总线接口+5VKK1--IRQ 图6-1 8254计数应用实验参考接线图;; 计数应用实验;;filename :;; ----PCI卡分配的第3个I/O空间MY8254_COUNT0 EQU 0E440HMY8254_COUNT1 EQU 0E441HMY8254_COUNT2 EQU 0E442HMY8254_MODE EQU 0E443H;;--PCI卡分配的第1个I/O空间INTCSR_BYTE0 EQU 0DC38H INTCSR_BYTE1 EQU 0DC39HINTCSR_BYTE2 EQU 0DC3AHINTCSR_BYTE3 EQU 0DC3BHIMB4_BYTE3 EQU 0DC1FHDATA SEGMENTCSBAK DWIPBAK DWMKBAK DBDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AXMOV DX,INTCSR_BYTE0;; 设置pci卡MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3MOV AL,00HOUT DX,ALMOV AX,0000HMOV ES,AX;---------------------------------------------------MOV DI, 01C4H; irq 9 , INT 71h, 01c4= 71h*4;--------------------------------------------------- MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSWIN AL,0A1HMOV MKBAK,AL;---------------------------------------------------AND AL,0fdh ; irq9;---------------------------------------------------OUT 0A1H,ALSTIMOV DX,MY8254_MODE;CLK=KK1- 定时应用实验编写程序,将8254的计数器0设置为方式2,用信号源10kHz作为CLK0时钟,计数值为十进制0(即最大计数值10000),OUT0连接IRQ,这样每计时1s后产生中断请求,制作一个秒表显示,每计时60秒自动归零。
8254定时应用实验参考连线图:总线接口+5V10KHZ(接信号源)IRQ图6-2 8254定时应用实验参考接线图; 8254定时应用实验;filename :;; PCI卡分配的第3个I/O空间MY8254_COUNT0 EQU 0E440H MY8254_COUNT1 EQU 0E441H MY8254_COUNT2 EQU 0E442H MY8254_MODE EQU 0E443H;; PCI卡分配的第1个I/O空间INTCSR_BYTE0 EQU 0DC38H INTCSR_BYTE1 EQU 0DC39H INTCSR_BYTE2 EQU 0DC3AH INTCSR_BYTE3 EQU 0DC3BHIMB4_BYTE3 EQU 0DC1FHDATA SEGMENTCSBAK DWIPBAK DWMKBAK DBSEC1 DB 30H ; 显示秒的个位SEC0 DB 31H ; 显示秒的十位DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AXMOV DX,INTCSR_BYTE0MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3MOV AL,00HOUT DX,ALMOV AX,0000HMOV ES,AX;---------------------------------------------------MOV DI, 01C4H; irq 9 , INT 71h, 01c4= 71h*4;---------------------------------------------------MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSWIN AL,0A1HMOV MKBAK,AL;---------------------------------------------------AND AL,0fdh ; irq9;---------------------------------------------------OUT 0A1H,ALMOV AX,0E30H; 显示00回车,注意没有换行,同在一行显示INT 10HMOV AX,0E30HINT 10HMOV AX,0E0DHINT 10HMOV DX,MY8254_MODE; CLK=10KMOV AL, 35H; 0011, 0101B 计数器0,读写低/高位方式2 ;十进制计数方式OUT DX, ALMOV DX,MY8254_COUNT0; 写入计数值10000MOV AL,0OUT DX,ALOUT DX,ALSTIA1: NOPCALL BREAKJMP A1MYINT: PUSH DSPUSH AXPUSH DXMOV AX,DATAMOV DS,AXMOV DX,IMB4_BYTE3;; 清PCI卡中断标志IN AL,DXMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,AL;---------------------------------------------------MOV AL,61H;; irq9 从片 D1,主片 D2;---------------------------------------------------OUT 0A0H,ALMOV AL,62HOUT 20H,ALMOV AH,0EHMOV AL,SEC1INT 10HMOV AH,0EHMOV AL,SEC0INT 10HMOV AX,0E0DH; 只回车,不换行,还在原处INT 10HINC SEC0; 秒的个位+1CMP SEC0,3AH; 个位计数到10JZ B3JMP B1B3: INC SEC1MOV SEC0,30HCMP SEC1,36H ; 十位计数到 6JZ B4JMP B1B4: MOV SEC1,30H ; 计到60,重新到零B1: POP DXP OP AXP OP DSIRET;;--------------------------------BREAK PROC NEARPUSH DSMOV AH,06HMOV DL,0FFHINT 21HJE RETURN POP DSCLIMOV AL,MKBAKOUT 0A1H,ALMOV AX,0000HMOV ES,AXMOV DI,01C4H ; irq 9 INT 71H,01C4H=71H*4MOV AX,IPBAKCLDSTOSWMOV AX,CSBAKSTOSWMOV DX,INTCSR_BYTE1 MOV AL,00HOUT DX,ALSTIMOV AX,4C00HINT 21HRETURN:POP DSRETBREAK ENDPCODE ENDSEND START3. 电子发声实验:1)用实验系统扬声器做发声实验用信号源1MHz作为扬声器发声基准时钟,计数器0设置为工作方式3,由表格查出每个音符对应的时间常数送给计数器0,以确定音调,驱动扬声器产生音乐。
8254电子发声实验参考图如图6-3所示。
(发声频率已设定,但发声时间是通过软件延时控制的,因此发声时间随不同档次PC机而变化,可以通过调节延时子程序参数来调节发声时间)总线接口+5V1MHZSPK 图6-3 8254定时应用实验参考接线图; 用实验系统扬声器做发声实验MY8254_COUNT0 EQU 0E440HMY8254_COUNT1 EQU 0E441HMY8254_COUNT2 EQU 0E442HMY8254_MODE EQU 0E443HDATA SEGMENTDTABLE DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33H D B 33H, 33H, 33H, 33H, 33H, 4DH, 45H, 3DH, 3DH, 3DH, 45H, 4DH, 45HD B 45H, 45H, 45H, 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26HD B 26H, 28H, 2DH, 2DH, 26H, 26H, 33H, 33H, 33H, 33H, 45H, 3DH, 39HDB 39H, 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 2DH, 2DHD B 26H, 26H, 26H, 26H, 26H, 26H, 28H, 28H, 2DH, 28H, 26H, 26H, 26HD B 26H, 2DH, 28H, 26H, 2DH, 2DH, 33H, 3DH, 4DH, 45H, 45H, 45H, 45HD B 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 28H, 2DHD B 2DH, 26H, 2DH, 33H, 33H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H, 39HD B 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 00HDATA ENDSCODE SEGMENT A SSUME CS:CODESTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET DTABLEM OV AL,[BX]M OV AH,00HA1: MOV DL,0AH ;CLK=1MHz M UL DLP USH AXMOV DX,MY8254_MODEMOV AL,36H;;0011,0110B计数器0,读写低高字节, ;;方式3,二进制OUT DX,ALP OP AXMOV DX,MY8254_COUNT0OUT DX,ALMOV AL,AHOUT DX,ALI NC BXM OV AH,00HM OV AL,[BX]T EST AL,0FFHJZ A2PUSH AXCALL DALLYCALL BREAKPOP AXJMP A1A2: MOV BX,OFFSET DTABLEMOV AL,[BX]M OV AH,00HJ MP A1DALLY: MOV CX,0F7FFH ; 根据不同机器配置修改此值D1: MOV AX,0D00HD2: DEC AXJNZ D2LOOP D1BREAK PROC NEAR ;检测是否有键按下MOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START2) 用PC机扬声器做发声实验有三个计数器在PC机中集成,它们的功能、操作完全与8254兼容。