课设参考资料之二:图形与发声系统的程序设计精要
10.1.2 动画程序的开发 CALL CLEAR_SCREEN LEA DI,CAR MOV DH,10 ;车身起始位置(10,10) MOV DL,10 CALL MOVE_SHAPE RET MAIN ENDP 10.2.1 系统发声途径 1.8254(8253)定时器作为发声源 2.8255端口B(PB1位)作为发声源 10.2.2 发声应用程序举例 1.扬声器发声通用子程序 2.演奏乐曲程序 3.定时报警程序 和CPU无关延时程序:产生N*15.08μs延时: waitf proc near push ax waitf1: in al , 61h and al , 10h cmp al , ah ;判断61H的PB4=1否? je waitf1 (15.08μs延时到,PB4=1) mov ah , al loop waitf1 ; CX初始值为15.08μs的倍数N pop ax ret waitf endp 通用发声程序Sounf : 发声10ms的BX倍: 将GENSOUND程序中的: WAIT1:MOV CX,2800H DELAY:LOOP DELAY 修改为: WAIT1 : MOV , 663 CALL WAITF 乐曲程序的编写步骤: 为乐曲定义一个频率表MUS_FREQ和一个节拍时间表MUS_TIME;节拍时间表中的数据是各音符的节拍持续时间相对10ms的倍数,频率表最后定义0FFFFH或-1作为结束。 将MUS_FREQ的偏移地址送SI,将MUS_TIME的偏移地址送BP,指令如下:LEA SI, MUS_FREQ LEA BP,DS: MUS_TIME 从表中取出音符的频率送入DI,取出音符的持续时间送入BX 指令为:MOV DI,[SI] MOV BX,DS:BP 调用SOUNDF或GENSOUND子程序发出音调 Thank you very much ! POP DI ;恢复寄存器 POP DX POP CX POP BX POP AX RET GENSOUND ENDP CODE ENDS END 返回本节 要产生10ms 延时, Cx=10ms/15.08μs =10*103/15.08μs=663 2.演奏乐曲程序 表10.1 音律与频率对应表(HZ) 494 440 392 349 330 294 262 频率 7 6 5 4 3 2 1 音符 B’ A’ G’ F’ E’ D’ C’ 音名 247 220 196 175 165 147 131 频率 7 6 5 4 3 2 1 音符 B A G F E D C 音名 音符的持续时间是根据乐曲的速度及每个音符的节拍数来确定的。在4/4拍中,每小节4拍,全音符持续4拍,二分音符持续二拍,四分音符持续一拍,八分音符持续半拍.如果给全音符分配1s(100*10ms),则二分音符持续时间为0.5s,四分音符持续时间为0.25s,等等。 程序如下: TITLE MUSIC –乐曲“玛丽有只小羊羔” EXTRN GENSOUND:FAR ;定义外部调用程序 STACK SEGMENT PARA STACK ‘STACK’ DB 64 DUP(‘STACK’) STACK ENDS 【例10.3】以乐谱“玛丽有只小羊羔”为例编写演奏程序 DATA SEGMENT PARA ‘DATA’ ;为演奏的乐曲定义一个频率表 MUS_FREQ DW 330, 294, 262, 294, 3 DUP(330) DW 3 DUP(294), 330, 392, 392 ; DW 330, 294, 262, 294, 4 DUP(330) DW 294, 294,
您可能关注的文档
最近下载
- 制造业信息化战略规划实施与优化-PDM.docx VIP
- 那智不二越机器人flexgui toolbox操作说明书.pdf VIP
- 智慧工厂-智慧工厂解决方案.docx VIP
- 高中化学解题方法归纳:和量法.doc VIP
- 译林牛津新版高中英语(必修1-3)单词表.pdf VIP
- 包装有限公司分切机安全风险分级清单.docx VIP
- 重庆市西南大学附属中学2025届高三下学期二诊模拟考试物理试卷 含解析.docx VIP
- 【高中英语】《星火英语同步词汇》抗遗忘速记手册.docx VIP
- 成都市锦江区2026届初三一诊(暨期末考试)数学试卷(含答案).docx
- 三坐标 培训教程.pptx VIP
原创力文档

文档评论(0)