微机原理实验报告-电子琴

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机接口技术课程实验设计报告

题目:按键电子琴

姓名:

学号:************、************

班级:2013级电子二班

一.设计内容

设计一个由80x86系统控制的集成电路,可以实现由键盘控制出不同频率的声音,并且在按动键盘的同时控制八位LED灯的亮灭。

二.设计思路

利用80X86系统中,8259,8255,8254三块芯片控制整个电路。利用8255芯片控制LED灯的亮灭,利用8259的中断组成开关部分,利用8254定时/计数器控制音乐播放。

2.1芯片8259控制部分

芯片控制字,采用边沿触发,单片,要写入ICW4控制字,中断类型码控制字:设置IR0~IR7的中断类型码依次为08H、…、0FH方式控制字:非特殊全嵌套方式,主片在非缓冲方式下,中断结束采用非自动结束方式。

2.2芯片8254控制部分

通道0:只读写低字节,工作在方式3即方波发生器,计数格式为2进制。通道1:方式0,计数器,BCD计数,初值01H.

2.3芯片8255控制部分

A口工作在方式0,作为输入端口用于开关采样;B口工作在方式0,作为输出,连接控制LED灯;C口未定义,默认为输出。

三.硬件电路

四.流程图

五.按键开始

装入频率时间表起始

地址

计算计数初值并装

入计数器

调用序并调用延时

程序

两个指针递增

检测拨键开关并控制LED灯

检测是否结束

返回主程序

MY8255_A EQU 0600H

MY8255_B EQU 0602H

MY8255_C EQU 0604H

MY8255_MODE EQU 0606H

MY8254_MODE EQU 06C6H

MY8254_A EQU 06C0H

DATA SEGMENT

FREQ_LIST DW 221,248,278,294,330,371,416,441

DW 495,556,589,661,742,833,882,-1

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA ;初始化MOV DS,AX

MOV DX,MY8255_MODE

MOV AL,81H ;8255控制字

OUT DX,AL

MOV DX,MY8254_MODE ;8254控制字

MOV AL,36H

OUT DX,AL

BEGIN:

CALL CCSCAN ;扫描

JNZ INK1

JMP BEGIN

INK1:

MOV CH,0FEH

MOV CL,00H

COLUM:

MOV AL,CH

MOV DX,MY8255_A

OUT DX,AL

MOV DX,MY8255_C

IN AL,DX

L1:

TEST AL,01H

JNZ L2

MOV AL,00H

JMP KCODE

L2:

TEST AL,02H

JNZ L3

MOV AL,04H

JMP KCODE

L3:

TEST AL,04H

JNZ L4

MOV AL,08H

JMP KCODE

L4:

TEST AL,08H

JNZ NEXT

MOV AL,0CH KCODE:

ADD AL,CL

MOV DL,2D

MUL DL

PLAY:

MOV SI,OFFSET FREQ_LIST

ADD SI,AX

MOV DX,0FH

MOV AX,4240H

DIV WORD PTR[SI]

MOV DX,MY8254_A

OUT DX,AL

MOV AL,AH

OUT DX,AL

MOV CX,8D

NEXT3:

CALL DALLY

LOOP NEXT3

MOV DX,0FH

MOV AX,4240H

MOV SI,30D

DIV WORD PTR[SI]

MOV DX,MY8254_A

OUT DX,AL

MOV AL,AH

OUT DX,AL

JMP BEGIN NEXT:

INC CL

MOV AL,CH

TEST AL,08H

JZ KERR

ROL AL,1

MOV CH,AL

JMP COLUM KERR:

JMP BEGIN CCSCAN:

MOV AL,00H

MOV DX,MY8255_A

OUT DX,AL

MOV DX,MY8255_C

IN AL,DX

NOT AL

AND AL,0FH

RET

DALLY:

PUSH CX

MOV CX,000FH

T1:

MOV AX,009FH T2:

DEC AX

JNZ T2

LOOP T1

POP CX

RET

CODE ENDS

END START

相关文档
最新文档