找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 966|回复: 0
收起左侧

基于8086的电子琴程序Proteus仿真

[复制链接]
ID:567008 发表于 2023-6-9 18:51 | 显示全部楼层 |阅读模式
微机原理基础电子琴,有8255,8253芯片
1686307648273.png

  1. ;;;===Create By XuHe 2018 1.10===;;;
  2. ;;;===电子琴设计===;;;
  3. DATAS SEGMENT
  4.    CTR EQU 0206H
  5.    T0 EQU 82H    ;10000010B
  6. DATAS ENDS
  7. STACKS SEGMENT STACK
  8.    DW 128 DUP(?)
  9.    TOP EQU $-STACKS
  10. STACKS ENDS
  11. CODE    SEGMENT PUBLIC 'CODE'
  12.         ASSUME CS:CODE,DS:DATAS,SS:STACKS

  13. START:   
  14.     ;===初始化===
  15.     MOV AX,DATAS
  16.     MOV DS,AX     
  17.     MOV AX,STACKS
  18.     MOV SS,AX  
  19.     MOV SP,TOP
  20.     MOV AL,T0
  21.     MOV DX,CTR
  22.     OUT DX,AL  
  23.     MOV DX,0200H
  24.     MOV AL,0FFH
  25.     OUT DX,AL
  26.     ;===按键扫描===
  27.    K1:
  28.     MOV DX,0202H
  29.     IN AL,DX   
  30.     CMP AL,0FEH
  31.     JNZ K2
  32.     MOV DI,247
  33.     JMP DDD
  34.    K2:
  35.    MOV DX,0202H
  36.     IN AL,DX     
  37.     CMP AL,0FDH
  38.     JNZ K3
  39.     MOV DI,277
  40.     JMP DDD
  41.    K3:  
  42.    MOV DX,0202H
  43.     IN AL,DX      
  44.     CMP AL,0FBH
  45.     JNZ K4
  46.     MOV DI,311
  47.     JMP DDD
  48.    K4:   
  49.    MOV DX,0202H
  50.     IN AL,DX      
  51.     CMP AL,0F7H
  52.     JNZ K5
  53.     MOV DI,330
  54.     JMP DDD
  55.    K5:   
  56.    MOV DX,0202H
  57.     IN AL,DX         
  58.     CMP AL,0EFH
  59.     JNZ K6
  60.     MOV DI,370
  61.     JMP DDD
  62.    K6:   
  63.    MOV DX,0202H
  64.     IN AL,DX         
  65.     CMP AL,0DFH
  66.     JNZ K7
  67.     MOV DI,415
  68.     JMP DDD
  69.     K7:  
  70.     MOV DX,0202H
  71.     IN AL,DX         
  72.     CMP AL,0BFH
  73.     JNZ K8
  74.     MOV DI,466
  75.     JMP DDD
  76.     K8:   
  77.     MOV DX,0202H
  78.     IN AL,DX            
  79.     CMP AL,07FH
  80.     JNZ K1
  81.     MOV DI,495
  82.     JMP DDD
  83.     ;有键按下
  84.    DDD:  
  85.     MOV DX,0200H
  86.     OUT DX,AL   
  87.     CALL OUTTONE  
  88.     ;是否弹起,按的时间长短决定拍长
  89.    DELAY:
  90.    MOV DX,0202H
  91.    IN AL,DX
  92.    CMP AL,0FFH
  93.    JNZ DELAY   
  94.    ;停止   
  95.    MOV DX,0200H
  96.    MOV AL,0FFH
  97.    OUT DX,AL
  98.     CALL STOP
  99.     JMP K1
  100.    ;发声子程序
  101.    OUTTONE PROC NEAR
  102.     MOV DX,0406H
  103.     MOV AL,10010110B
  104.     OUT DX,AL
  105.     MOV DX,00H
  106.     MOV AX,5000
  107.     DIV DI
  108.     AND AX,00FFH
  109.     MOV DX,0404H
  110.     OUT DX,AL
  111.     RET
  112.    OUTTONE ENDP  
  113.    ;停止子程序
  114.    STOP PROC NEAR
  115.     MOV AL,10110001B
  116.     MOV DX,0406H
  117.     OUT DX,AL
  118.     MOV AX,5000
  119.     MOV DX,0404H
  120.     OUT DX,AL
  121.     MOV AL,AH
  122.     OUT DX,AL
  123.     RET
  124.     STOP ENDP
  125. CODE    ENDS
  126.         END START
复制代码

Keil代码与Proteus仿真下载: 8086设计--电子琴.7z (63.2 KB, 下载次数: 15)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表