武汉理工大学《微机原理与接口技术》课程设计说明书
线有3根:CLK,GATE,OUT,CLK是脉冲输入端,GATE是门控信号,OUT是输出信号,计数器工作在减1状态。其内部结构图和方式控制字格式如图4,图5所示。
其中当计数器工作在方式3时,输出信号为方波信号。 CLK0 D0-D数据总线缓 内 7 冲器 计数器0 部 GATE 总 0 OUT0 线 CLK1 RDR/W逻辑电 WR 路 计数器1 GATEA0 1 A1 OUT1 CS CLK2 控制寄存器 计数器2 GATE 2 OUT2 图4 8253内部结构图
D7 D6 D5 D4 D3 D2 D1 D0 计数器选择 计数方式 00 计数器0 0 二进制 00 计数器锁存 工作方式选择 01计数器1 1 BCD计 01 读写低8位 000 方式0 10 计数器2 数 10 读写高8位 001 方式1 11 不用 11 读写16位 ×10 方式2 ×11 方式3 100 方式4 101 方式5
图5 8253控制字格式
PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:40H,41H,42,43H。因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。
3
武汉理工大学《微机原理与接口技术》课程设计说明书
3程序流程图
3.1主程序流程图
主程序的流程图如下图所示: 开始 显示输入提示信息 从键盘读入字符 N 为q? Y Y 为d? 结束 N Y 选择低音 为z? N Y 选择中音 为g? N 选择高音 显示输入提示 从键盘读入字符 Y 为q? Y N 调用演奏子程序 为p? N Y 调用弹奏子程序 为1~8? N 图6 主程序流程图
4
武汉理工大学《微机原理与接口技术》课程设计说明书
3.2演奏子程序流程图
当按键为p为时,调用音乐播放子程序,音乐播放子程序的流程图如下图所示。
N Y 显示输入提示 从键盘读入字符 为q? N Y 返回 为1? N Y 调用音乐1播放子程序 为2? 调用音乐2播放子程序 显示输入提示 从键盘读入字符 Y 为q? N 返回 为c? N Y 图7 音乐播放子程序流程图
5
武汉理工大学《微机原理与接口技术》课程设计说明书
3.3 音乐播放子程序流程图
演奏时,通过判断按键为1或2来调用音乐播放子程序1或2,音乐播放子程序流程图如图8所示。
计数器清零 CL自增1 CL>歌曲 N Y 返回 查表得相应频率 计算计数初值 调用发音子程图8 音乐播放子程序流程图
3.4弹奏子程序流程图
当按键为1-8时,调用演奏子程序,演奏子程序的流程图如下图所示:
图9 演奏子程序流程图
6
查表得相应频率 计算计数初值 调用发音子程序 返回 武汉理工大学《微机原理与接口技术》课程设计说明书
3.5 发音子程序流程图
在弹奏和演奏时都需调用发音子程序,发音子程序的作用是控制扬声器的
发音,其流程图如下:
8253初始化 开扬声器 延时 关扬声器 返回 图10 发音子程序流程图
4 各部分功能实现说明
4.1 发音部分功能实现
由更件的连接形式可知,扬声器的开断是由8255的PB0和PB1以及8253通道2同时控制的,PB0和PB1同时为高电平时,扬声器开,有一个为低电平时,扬声器关断,又知8255 B口地址为61H,8253通道2地址为42H,控制口地址为43H。具体程序编写如下。 8253初始化程序段:
mov al,10110110b ;选择8253的通道2,并设置为工作方式3 out 43h,al mov ax,bx
out 42h,al ;将计数初值的低8位写入计数通道 mov al,ah
out 42h,al ;将计数初值的高8位写入计数通道
开扬声器程序段:
in al,61h ;读入B口数据
or al,03h ;将PB0 和PB1置1
out 61h,al ;将设置好的数据送回B口
关扬声器程序段:
in al,61h ;读入B口数据
and al,0fch ;将PB0 和PB1置0
out 61h,a ;将设置好的数据送回B口
7