实验2:8253、8255接口实验

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

实验二:8253、8255接口实验

实验目的:

1. 学习8253、8255接口芯片的功能

2. 掌握8253、8255的使用方法

3. 了解PC机发声系统及程序控制方法

实验内容:

1. 使用8086汇编语言控制PC机发声系统,编制一个“电子琴”弹奏程序(必做)

2. 利用PC机发生系统播放歌曲(选做)

实验方法:编制程序上机调试

实验要求:(见参考程序)根据要求绘制程序流程图并解释说明

实验步骤:编制子程序及主程序后上机运行调试

实验分析:输入数据;观察并记录运行结果

一、电子琴参考程序:

实验要求:从键盘输入一个字符1~8,弹奏出对应的声调

;实验二8253、8255接口实验(电子琴)

STACKS SEGMENT WORD STACK 'STACK'

DW 100H DUP(?)

STACKS ENDS

DA TAS SEGMENT WORD PUBLIC 'DATD'

PLB DW 262,294,330,349 ;频率表

DW 392,440,494,523

DA TAS ENDS

CODES SEGMENT BYTE PUBLIC 'CODE'

ASSUME CS:CODES,SS:STACKS,DS:DATAS,ES:DA TAS

START: MOV AX,DA TAS

MOV DS,AX

MOV ES,AX

MOV AL,03H

OUT 61H,AL ;打开声音输出

M1: MOV AH,1

INT 21H ;键盘输入

SUB AL,'1'

JL ME ;<1结束

CMP AL,7

JG M1 ;>8继续

SHL AL,1 ;乘以2

MOV BL,AL

XOR BH,BH ;查找频率

MOV BX,[BX+PLB]

CALL SZPL ;设置频率

JMP M1

ME: MOV AL,0

OUT 61H,AL ;关闭声音输出

MOV AH,4CH

INT 21H ;返回DOS

;设置频率(入口: BX=声音频率)

SZPL: MOV AL,0B6H ;控制字=B

OUT 43H,AL

MOV DX,12H ;fo=1193000(123428H)

MOV AX,3428H

DIV BX ;AX=fo/声音频率

OUT 42H,AL

MOV AL,AH

OUT 42H,AL ;写8253计数器初值

RET

CODES ENDS

END START

;实验二演示实验(播放歌曲)

STACKS SEGMENT WORD STACK 'STACK'

DW 100H DUP(?)

STACKS ENDS

DATAS SEGMENT WORD PUBLIC 'DATD'

GQSD DB 60 ;歌曲速度时间常数

YDB DB 'ABCDEFG1234567abcdefg' ;音调符号表

PLB DW 130,147,165,175,196,220,247 ;音调频率表

DW 262,294,330,349,392,440,494

DW 523,570,620,650,710,790,860

YJB DB '<>=_ -34' ;音节符号表: 1/16,1/8,1/4,1/2,1,2,3,4 SJB DB 1,2,4,8,16,32,48,64,80,96,112,128;音节时间表

;歌曲数据表

GQ1 DB 60 ;速度

DB '3-5-3-2 3 5-3 2 34' ;歌曲1

DB '3-5-3 2 1-2-3 5 24'

DB '1-1 F E-E F 1-2 3 14',0

GQ2 DB 120 ;速度

DB '6_7 6_6_3_5_6_5=6 33' ;歌曲2

DB '2_3 2_2_F_1_2_1_2_F3'

DB '1_2 3_3_F 3_233_5_'

DB '6_6 7_6_7_6=7=5=3_533_E_F_F 1_'

DB 'F_3_2=3=F_6=14G_G F=G=2_2 3=2 '

DB 'G_5 3=2=G_3_2=3=E_1_F_F F-a_6_'

DB '6 62a b a_b_a=b=6_a_6_6 62',0

GQ3 DB 90 ;速度

DB '1_1 2_3_3 1_3 1 3-2_2 3_';歌曲3

DB '4_4_3_2_443_3 4_5_5 3_'

DB '5 3 5-4_4 5_6_6_5_4_64'

DB '5_5 1_2_3_4_5_646_6 2_'

DB '3_4_5_6_747_7 3_4_5_6_7_'

DB 'a37_7_6 4 7 5 a 5 3 2 ',0

TSXX DB 'Input(1-3) [Esc] End ?$'

DATAS ENDS

CODES SEGMENT BYTE PUBLIC 'CODE'

ASSUME CS:CODES,SS:STACKS,DS:DATAS,ES:DATAS

START: MOV AX,DATAS

MOV DS,AX

MOV ES,AX

M1: LEA DX,TSXX

MOV AH,9

INT 21H ;显示提示信息

M2: CALL DJP ;读键盘

JNC M2

相关文档
最新文档