欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    电子琴汇编程序.doc

    • 资源ID:62627402       资源大小:36KB        全文页数:8页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    电子琴汇编程序.doc

    ;*根据CHECK配置信息修改下列符号值*IOY0 EQU 9800H ;片选IOY0对应8255的端口始地址IOY1 EQU 9840H ;片选IOY1对应8254端口始地址;*MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址MY8254_0 EQU IOY1+00H*4 ;8254计数器0端口地址MY8254_1 EQU IOY1+01H*4 ;8254计数器1端口地址MY8254_2 EQU IOY1+02H*4 ;8254计数器2端口地址MY8254_CMD EQU IOY1+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACK DW 1024 DUP(?)STACK1 ENDSDATA SEGMENTMUSIC DW /624,/688,/760,/798,/884,/980,/1088,/1148 ;频率表DTABLE DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H LIGHT DB 01H,02H,04H,08H,10H,20H,40H,80HFREQ_LIST DW /371,/495,/495,/495,/624,/556,/495,/556,/624 ;频率表 DW /495,/495,/624,/742,/833,/833,/833,/742,/624 DW /624,/495,/556,/495,/556,/624,/495,/416,/416,/371 DW /495,/833,/742,/624,/624,/495,/556,/495,/556,/833 DW /742,/624,/624,/742,/833,/990,/742,/624,/624,/495 DW /556,/495,/556,/624,/495,/416,/416,/371,/495,0TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4 ;时间表 DB 6, 2, 4, 4, 12, 1, 3, 6, 2 DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 6, 2, 4, 4, 12 MYMEMORY DW 50 DUP (0) KEYNUM DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口、C口高四位输出,C口低4位输入 OUT DX,ALBEGIN: CALL CLEAR ;清屏 CALL CCSCAN ;扫描按键 JNZ GETKEY1 ;有键按下则跳置GETKEY1 MOV AH,1 ;判断PC键盘是否有按键按下 INT 16H JZ BEGIN ;无按键则跳回继续循环,有则退出 QUIT: MOV AX,4C00H ;返回到DOS INT 21H;取得键值GETKEY1:CALL FAR PTR DALLY CALL FAR PTR DALLY CALL CCSCAN ;再次扫描按键 JNZ GETKEY2 ;有键按下则跳置GETKEY2 JMP BEGIN ;否则跳回开始继续循环GETKEY2:MOV CH,0FEH MOV CL,00H ;设置当前检测的是第几列COLUM: MOV AL,CH ;选取一列,将X1X4中一个置0 MOV DX,MY8255_C SHL AL,4 OUT DX,AL MOV DX,MY8255_C ;读Y1Y4,用于判断是哪一行按键闭合 IN AL,DXL1: TEST AL,01H ;是否为第1行 JNZ L2 ;不是则继续判断 MOV AL,00H ;设置第1行第1列的对应的键值 JMP MAINDONEL2: TEST AL,02H ;是否为第2行 JNZ L3 ;不是则继续判断 MOV AL,04H ;设置第2行第1列的对应的键值 JMP MAINDONEL3: TEST AL,04H ;是否为第3行 JNZ L4 ;不是则继续判断 MOV AL,08H ;设置第3行第1列的对应的键值 JMP MAINDONEL4: TEST AL,08H ;是否为第4行 JNZ NEXT ;不是则继续判断 MOV AL,0CH ;设置第4行第1列的对应的键值MAINDONE: ADD AL,CL ;将第1列的值加上当前列数,确定按键值 CMP AL,09H JZ MYTO CMP AL,08H JNZ TO CALL FAR PTR MEMORY2 JMP BEGIN MYTO: CALL FAR PTR MYMUSIC JMP BEGINTO: CALL SHOW CALL FAR PTR SPEAKERON CALL FAR PTR DALLYTEMP: CALL CCSCAN JNZ TEMP CALL FAR PTR SPEAKEROFF JMP BEGIN NEXT: INC CL ;当前检测的列数递增 MOV AL,CH TEST AL,08H ;检测是否扫描到第4列 JZ KERR ;是则跳回到开始处 ROL AL,1 ;没检测到第4列则准备检测下一列 MOV CH,AL JMP COLUMKERR: JMP BEGIN;清屏CLEAR PROC NEAR ;清除数码管显示子程序 MOV DX,MY8255_B ;段位置0即可清除数码管显示 MOV AL,00H OUT DX,AL RETCLEAR ENDP;键盘扫描CCSCAN PROC NEAR ;扫描是否有按键闭合子程序 MOV AL,00H MOV DX,MY8255_C ;将4列全选通,X1X4置0 SHL AL,4 OUT DX,AL MOV DX,MY8255_C IN AL,DX ;读Y1Y4 NOT AL AND AL,0FH ;取出Y1Y4的反值 RETCCSCAN ENDP;数码管显示SHOW PROC NEAR ;显示键值子程序 PUSH AX PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显示 MOV AL,0F0H MOV DX,MY8255_C SHL AL,4 OUT DX,AL ;设置X1X4,选通一个数码管 POP AX MOV BX,OFFSET DTABLE XLAT ;将键值作为偏移和键值基地址相加得到相应的键值 MOV DX,MY8255_B OUT DX,AL ;写入数码管ADp CALL FAR PTR DALLY POP AX RETSHOW ENDP ;开喇叭SPEAKERON PROC FAR PUSH AX MOV AL,36H MOV DX,MY8254_CMD OUT DX,AL ;初始化8254 POP AX PUSH BX PUSH SI PUSH DX MOV BX,OFFSET MUSIC SHL AL,1 MOV AH,00H MOV SI,AX MOV AX,BX+SI CALL FAR PTR MEMORY1 MOV DX,MY8254_0 OUT DX,AL MOV AL,AH OUT DX,AL POP DX POP SI POP BX RET SPEAKERON ENDP ;关喇叭 SPEAKEROFF PROC FAR PUSH AX MOV AL, 30H MOV DX,MY8254_CMD OUT DX,AL POP AXSPEAKEROFF ENDP ;延时1,DALLY PROC FAR ;软件延时子程序 PUSH CX PUSH AX MOV CX,00FFHD1: MOV AX,00FFHD2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RETDALLY ENDP;放音乐MYMUSIC PROC FAR PUSH AX PUSH SI PUSH DI MOV AL,36H MOV DX,MY8254_CMD OUT DX,AL AGAIN2: MOV SI,OFFSET FREQ_LIST MOV DI,OFFSET TIME_LIST MYAGAIN: CMP word ptr SI,0 JZ AGAIN2 MOV AX,SI MOV DX,MY8254_0 OUT DX,AL MOV AL,AH OUT DX,AL MOV DL,DI CALL MYDALLY INC SI INC SI INC DI CALL CCSCAN JNZ MYEXIT MOV AH,01H INT 16H JZ MYAGAIN CALL FAR PTR SPEAKEROFF MOV AX,4C00H ;返回到DOS INT 21HMYEXIT: CALL FAR PTR SPEAKEROFF POP DI POP SI POP AX RETMYMUSIC ENDP ;延时二MYDALLY PROC PUSH AX PUSH CXMYD0: MOV CX,200H MYD1: MOV AX,0FFFFH MYD2: DEC AX JNZ MYD2 LOOP MYD1 DEC DL JNZ MYD0 POP CX POP AX RET MYDALLY ENDP ;录音MEMORY1 PROC FAR PUSH BX MOV BX,KEYNUM MOV MYMEMORYBX,AX INC BX INC BX MOV KEYNUM,BX POP BX RET MEMORY1 ENDP ;放音MEMORY2 PROC FAR PUSH AX PUSH SI PUSH DI AGAIN3: MOV SI,OFFSET MYMEMORY MYAGAIN2: mov ax ,si CMP ax,0;SI,0 JZ AGAIN3 MOV AL,36H MOV DX,MY8254_CMD OUT DX,AL MOV AX,SI MOV DX,MY8254_0 OUT DX,AL MOV AL,AH OUT DX,AL MOV DL,10 CALL MYDALLY CALL FAR PTR SPEAKEROFF INC SI INC SI CALL CCSCAN JNZ MYEXIT2 MOV AH,01H INT 16H JZ MYAGAIN2 CALL FAR PTR SPEAKEROFF MOV AX,4C00H ;返回到DOS INT 21HMYEXIT2: CALL FAR PTR SPEAKEROFF POP DI POP SI POP AX RETMEMORY2 ENDP ENDS END START

    注意事项

    本文(电子琴汇编程序.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开