8253、8255、8259和8251实现电子琴的自动弹凑和手动弹凑

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

汇编与微机接口技术试验

二、实验项目名称:用8253、8255、8259和8251实现电子琴的自动弹凑和手动弹凑

三、实验学时:2学时

四、实验原理:

用8253做定时器输出音频信号,控制喇叭发出声音。利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调.

五、实验目的:

a)加强8088CPU的汇编程序设计

b)加强对8253定时/计数器芯片的应用理解

c)加强对8255可编程并口芯片的应用理解

d)加强对8259可编程中断控制器芯片的应用理解

e)加强对8251可编程串口芯片的应用理解

f)了解计算机发声原理

六、实验内容:

a)利用8088外接8253可编程定时器/计数器音符音频的频率输出,

用8255的PA口接8只按键,作为电子琴1、2、3、4、5、6、

7、i数字键按键,编程完成按下数字键按键即发出相应的音调。

b)利用8251串口实现与PC机的超级终端程序通讯,可在PC上

按键大写字母‘A’能转换为自动弹凑,大写字母‘M’能转换

为手动弹凑,在手动弹凑方式下,能用PC机的1、2、3、4、5、

6、7、8按键替代试验箱按键弹凑音乐。

七、实验器材(设备、元器件):

DVCC试验箱,PC机;

八、实验步骤:

a)、阅读ppt掌握理解试验内容;

b)、按照试验要求连接电路;

c)、连接试验箱与电脑主机;

d)、打开试验所需软件,输入代码;

f)、运行,观察实验结果;

九、实验数据及结果分析:

1.该实验主要程序段如下:

CODE SEGMENT

CS_8259_P0 EQU 20H

CS_8259_P1 EQU 21H

CS_8255_CTRL EQU 73H

CS_8255_PA EQU 70H

CS_8253_CTRL EQU 4BH

CS_8253_CH0 EQU 48H

CS_8253_CH2 EQU 4AH

CS_8251_STAT EQU 51H

CS_8251_DATA EQU 50H

ASSUME CS:CODE

ORG 1000H

START: JMP MAIN

MODE DB 0 ;0为手动弹凑模式,非0为自动手动弹凑模式

TONELEN DW 0

TONEFR DW 2,3030,2865,2551,2273,2024,1912,1704,1517,1433,1276,1136,1012 TABLE DB 42H,82H,82H,82H,84H,02H,72H

DB 62H,72H,62H,52H,48H

DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H

DB 12H,0A2H,0D2H,92H,88H

DB 82H,0B2H,0B2H,0A2H,84H,02H,72H

DB 62H,72H,62H,52H,44H,02H,12H

DB 12H,62H,62H,52H,44H,02H,82H

DB 72H,62H,52H,32H,48H

DB

0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0

FH

ENDTAB DB 00H

MAIN: CALL I8253A

CALL INTSET

CALL I8259A

CALL I8255A

CLD

MOV AX,SEG TABLE

MOV DS,AX

LEA DI,ENDTAB

MOV AL, 0

CMP MODE,AL

JZ MAN_PLAY

AUTO_PLAY:

LEA S I,TABLE

SOUND:

IN AL, CS_8251_STAT

TEST AL, 00000010B

JZ NEXT1

IN AL, CS_8251_DATA

CMP AL, 'M'

JNZ NEXT1

MOV AL,1

MOV MODE,AL

JMP MAN_PLAY

NEXT1:

LODSB

MOV BX,AX

MOV CX,AX

AND CX,0FH

AND BX,0F0H

SHR BX,1

SHR BX,1

SHR BX,1

; SHR BX,1

MOV AX,TONEFR[BX]

CALL OUTTONE

MOV AX,10

MUL CX

MOV WORD PTR TONELEN,AX

DELAY: MOV AX,WORD PTR TONELEN

CMP AX,0

JNE DELAY

CMP SI,DI

JNE SOUND

JMP AUTO_PLAY

MAN_PLAY:

MOV AX,0

MOV TONELEN, AX

IN AL, CS_8251_STAT

TEST AL, 00000010B

JZ CHK8255

IN AL, CS_8251_DATA

CMP AL, 'A'

JNZ NEXT2

MOV AL,0

MOV MODE,AL

JMP AUTO_PLAY

NEXT2: CMP AL, 31H

JL CHK8255

CMP AL, 38H

JG CHK8255

SUB AL, '0'

MOV AH, 0

MOV BX,AX

SHL BX,1

MOV AX,TONEFR[BX]

CALL OUTTONE

JMP MAN_PLAY

CHK8255:

K1: MOV DX, CS_8255_PA ;PA端口地址

IN AL, DX ;读开关的状态

TEST AL, 01H ;判是否是K1闭合

JZ K2 ;不是转K2

MOV AX, 2273 ;是K1闭合送“1”音频数据1/440.00HZ

JMP KEYDOWN

K2: IN AL, DX ;读开关的状态

TEST AL, 02H ;判是否是K2闭合

JZ K3 ;不是转K3

MOV AX, 2024 ;是K2闭合送“2”音频数据1/493.88HZ

JMP KEYDOWN

K3: IN AL, DX ;读开关的状态

TEST AL, 04H ;判是否是K3闭合

JZ K4 ;不是转K4

相关文档
最新文档