设计思想:每计时1秒,描述时间的变量就应加1,并且每计时60秒自动归零。因此,可利用8254的计数器0设置为方式2,用实验箱提供的信号源10KHZ作为CLK0时钟,计数值为十进制0(即最大计数值10000),这样每隔1秒就会在OUT0端产生0到1的跃变,该信号接IRQ作为中断请求。在中断服务程序中完成对时钟的修改及显示。
实验步骤如下: (1) 根据设计思想,设计实验线路图,完成线路连接。 (2) 画出程序流程图。
(3) 执行PCI_BIOS.EXE文件,确定实验装置中8254的各端口地址。自己编写程序,编
译、连接,生成执行文件。 (4) 打开实验箱电源,运行程序,观察屏幕的秒表显示是否正常。 4、电子发声实验
设计思想:向扬声器传送不同频率的方波,就能驱动小喇叭发出不同音符的音响。因此,设置8254的工作方式为方式3——方波频率发生器,改变8254计数通道i的计数初值,就可改变OUTi输出信号的频率,从而改变扬声器发出的音调。但每个音调发声的时间长短可以通过延时程序来控制。
1)用PC机内部的扬声器唱歌
在PC机内部集成了三个计数器,它们的功能、操作完全与8254兼容。三个计数器的端口地址分别为40H、41H、42H,控制寄存器地址为43H。但有各自专用功能: ? 通道0是系统的时钟节拍计时器。当计算机冷启动时,ROM BIOS对计数器编程以产生?
约每秒18.2个节拍的中断信号,即55ms向8259A(IR0)提出一次中断请求。
通道1专用于产生动态RAM的定时刷新信号。
? 通道2用来控制PC机扬声器的声音频率。 图13-6是PC机中定时器结构框图。
从图中可见扬声器是否发声受计数器2的输出端OUT2和端口61H的D0、D1位的共同控制,当三者都为1时,扬声器才可发声。因此,程序的设计思路是:(1)先将61H端口的D1、D0两位置1,打开扬声器;(2)设置计数器2为工作方式3;(3)由表8-4给出的每个音符对应的时间常数(即计数初值)分别送计数器2,以确定音调,使OUT0产生不同频率的方波,从而改变扬声器发声的音调。(4)程序退出时恢复端口61H原来的值。
13-6
实验步骤如下:
(1) 分析参考程序,画出程序流程图。
(2) 编写程序,编译、连接,生成执行文件。
33
(3) 打开实验箱电源,运行程序,聆听音乐。
(4) 若音乐节拍发生时间较长或较短,可以修改延时子程序的计数值,调整发声时间到
最佳。
2)用实验系统扬声器唱歌
用信号源1MHZ作为扬声器发声基准时钟接8254的CLK0,计数器0设置为工作方式3,由表8-4给出的每个音符对应的时间常数(即计数初值)分别送计数器0,以确定音调,OUT0产生不同频率的方波连接扬声器SPK端子驱动扬声器产生音乐。 实验步骤如下:
(1) 根据设计思想,设计实验线路图,完成线路连接。 (2) 画出程序流程图,自己编写程序。
(3) 执行PCI_BIOS.EXE文件,确定实验装置中8254的各端口地址。编辑程序,编译、
连接,生成执行文件。
(4) 打开实验箱电源,运行程序,聆听音乐。
(5) 若音乐节拍发生时间较长或较短,可以修改延时子程序的计数值,调整发声时间到最佳。
四.收获体会。
在最后一次微机原理实验中,总结了以前实验的不足和教训, 8254定时计数器应用实验中,进行得比较顺利,验证了准确结果,能比较熟练的操作DOS界面,对程序的代码有一定的认识。机箱的连接过程,比较复杂,但注意出和如并行线上的一一对应。对理论也有家了较为清晰的认识。
34