利用8252芯片设计的计算机钢琴(微机原理).docVIP

利用8252芯片设计的计算机钢琴(微机原理).doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用8252芯片设计的计算机钢琴(微机原理)

编写程序,程序运行时使PC机成为一架可弹奏的“钢琴”。当按下数字键1~8时,依次发出1,2,3,4,5,6,7,i八个音调。按Q键则退出“钢琴”状态。 要应用芯片8253定时器是PC机发出不同的声音。 具体频率值与音符的对应关系见下表: 键入字符:1 2 3 4 5 6 7 8 音符 :1 2 3 4 4 6 7 8 频率值: 524 588 660 698 784 880 988 1048 DATA SEGMENT DAT DB 0, 45, 75, 100, 125, 157, 190, 222, 252 HEIGHT DB 0, 40, 70, 100, 130, 160, 190, 220, 250 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AH,0 ; 图形方式:每屏幕字符数80×25, 16色 MOV AL,12H INT 10H MOV AH,6 ; 清屏 MOV AL,0 MOV CH,0 MOV CL,0 MOV DH,18H MOV DL,4FH INT 10H MOV SI,451 MOV DX,480 REDRAW:MOV DI,16 ADD DI,48 MOV CX,16 SUB DX,1 CMP DX,SI JB LL MOV BL,0 PAINT: MOV AL,9 MOV AH,0CH MOV BH,0 INT 10H INC CX CMP CX,DI JBE PAINT ADD DI,80 ADD CX,32 INC BL CMP BL,7 JBE PAINT JMP REDRAW LL: MOV AL,80H ;对8255进行初始化工作,A口、B口均为输出状态工作与方式0 OUT 63H,AL MOV AL,0B7H ;对计数器8253进行初始化工作,选2号计数器,且先读写低8位后高8位,工作与模式3 OUT 43H,AL PP: MOV AH,01H INT 16H JZ PP SUB AL,30H CMP AL,09H ;AL中的参数将传递到SOUND子程序去 JAE OVER1 CALL SOUND JMP PP OVER1:JMP OVER SOUND PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV AH,0 MOV SI,AX ; 保护AL于SI中,以待后用,作为参数传递 MOV BX,OFFSET DAT XLAT MOV DI,AX MOV DX,12H MOV AX,34DCH DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H OR AL,3 OUT 61H,AL ;此时喇叭将在计数器输出的频率工作发声,且CPU得以解放可执行下面的绘图工作 CALL PIANO MOV AL,0 OUT 61H,AL MOV AL,0H MOV AH,0CH INT 21H POP SI POP DX POP CX POP BX POP AX RET SOUND ENDP PIANO PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AX,SI MOV BH,AL ;BH中表示按得是什么键, MOV BL,0 PUSH BX MOV BX,OFFSET HEIGHT XLAT POP BX ;BH中表示按得是什么键, MOV AH,0 PUSH AX ;AX中的为键柱的高度 MOV DX,450 MOV CX,10 DEC BH MOV AL,BH MOV BL,80 MUL BL ADD CX,AX ;CX中为键柱的起始横坐标 ;;;;;;;;;; POP AX ;AX中的为键柱的高度 INC BH ;BH中表示按得是什么键, ;;;;;;;;;; MOV SI,CX ADD SI,32 ;SI中为横坐标的边界 MOV DI,DX SUB DI,AX ;DI中为纵坐标的边界 OK: PUSH SI SUB SI,32 MOV CX,SI POP SI SB: MOV AL,0EH MOV AH,0CH MOV BH,0 INT 10H INC CX CMP CX,SI JBE SB DEC DX CMP DX,DI JAE OK PUSH BX PUSH CX MOV BX,5000 D

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档