模拟电子琴演奏程序设计。微机中扬声器控制发声原理如练习图10.1所示 其中用到8255与8253两个芯片。 程

大学 发音,扬声器,程序设计 已帮助 人

模拟电子琴演奏程序设计。微机中扬声器控制发声原理如练习图10.1所示,其中用到8255与8253两个芯片。 

     

程序设计流程该程序设计可以分解成两个部分:如何控制计算机的扬声器发音、如何使不同按键对应约定的声音。

  模拟演奏程序算法如下:

  第一步:初始化,建立分频数与发音键表。

  第二步:清屏,并显示“PIANO 2004.8.15.$”。

  第三步:等待按键,有键按下则往下执行。

  第四步:若判断是退出键,则返回操作系统。

  第五步:若判断是停止发音键,则断开送往扬声器的电平信号,并转第三步。

  第六步:若判断不是退出、停止发音、发音键,转第三步。

  第七步:查出与发音键对应的发音分频数,并启动8253的通道2,转第三步。

  第三步采用DOS的中断调用“键盘无回显”方式输入,即按下键时,不会在屏幕上出现相应的显示。

  第四步可约定回车键为退出键。

  第五步可约定空格键为停止发音键。

  第七步为了对8253通道2进行初始化。可向43H端口送控制字B6H,含意是:选择通道2,使其按方式3工作(送出方波信号),向通道2送16位分频数,先送低8位,后送高8位,通道2按二进制计数。

热搜:实验设计方案是指通过理论探索模拟探索化解

答案解析

难度★★☆ 搜索
  • 程序如下:
    DATA SEGMENT
    D1 DW 131,147,165,175,196,220,247
    DW 252,294,330,349,392,440,494
    D2 DW 139,156,175,185,208,233,262
    DW 277,311,349,370,415,466,523
    D3 DW 123,139,156,165,185,208,233
    DW 247,277,311,330,370,415,466
    DD1 DW 14 DUP(?)
    DD2 DW 14 DUP(?)
    DD3 DW 14 DUP(?)
    DDD1 DB'zxcvbnmasdfghjqwertyul234567ZXCVBNMASDFGHJ'
    DISP DB'PIAN02004.8.15.$'
    DATA ENDS
    PROGRAM SEGMENT
    ASSUMECS:PROGRAM,DS:DATA
    START: MOV AX,DATA
    MOV DS,AX
    MOV AL,0
    MOV BH,07
    MOV CX,0
    MOV DH,24
    MOV DL,79
    MOV AH,6
    INT 10H ;以上部分功能是清屏
    MOV AL,0
    MOV BH,47H
    MOV CX,0914H
    MOV DH,14
    MOV DL,60
    MOV AH,6
    INT 10H ;以上部分功能是开屏幕窗口,红底白字
    MOV AH,2
    MOV BH,0
    MOV DH,13
    MOV DL,30
    INT 10H ;以上是定位光标
    MOV AH,9
    MOV DX,OFFSET DISP
    INT 21H ;显示字符串
    MOV SI,0
    MOV CX,42
    AG1: MOV DX,12H
    MOV AX,3280H
    DIV D1 [SI]
    MOVD D1[SI],AX
    ADD SI,2
    LOOP AG1 ;根据42个频率求相应的42个分频数
    AG2: MOV AH,8
    INT 21H ;等待按键
    CMP AL,0DH
    JZ LAST ;是退出键
    CMP AL,20H
    JNZ NEXT ;是发音键
    IN AL,61H ;是停止发音键,停止发音
    AND AL,0FCH
    OUT 61H,AL
    JMP AG2
    NEXT: MOV CX,42 ;查发音键对应的分频数的地址
    MOV BX,OFFSET DDD1
    SCAN: CMP AL,[BX]
    JZ FIND
    INC BX
    LOOP SCAN
    JMP AG2
    FIND: MOV SI,42
    SUB SI,CX
    SHL SI,1
    MOV AL,086H ;启动8253通道2,并置新的分频数
    OUT 43H,AL
    MOV AX,DD1[SI]
    OUT 42H,AL
    MOV AL,AH
    OUT 42H,AL
    IN AL,61H
    OR AL,3
    OUT 61H,AL
    JMP AG2
    LAST: IN AL,61H ;关闭扬声器,退回到操作系统
    AND AL,0FCH
    OUT 61H,AL
    MOV AH,4CH
    INT 21H
    PROGRAM ENDS
    END START