8253音乐发生器微机原理实验.docx

上传人:b****5 文档编号:14956807 上传时间:2023-06-28 格式:DOCX 页数:10 大小:65.27KB
下载 相关 举报
8253音乐发生器微机原理实验.docx_第1页
第1页 / 共10页
8253音乐发生器微机原理实验.docx_第2页
第2页 / 共10页
8253音乐发生器微机原理实验.docx_第3页
第3页 / 共10页
8253音乐发生器微机原理实验.docx_第4页
第4页 / 共10页
8253音乐发生器微机原理实验.docx_第5页
第5页 / 共10页
8253音乐发生器微机原理实验.docx_第6页
第6页 / 共10页
8253音乐发生器微机原理实验.docx_第7页
第7页 / 共10页
8253音乐发生器微机原理实验.docx_第8页
第8页 / 共10页
8253音乐发生器微机原理实验.docx_第9页
第9页 / 共10页
8253音乐发生器微机原理实验.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

8253音乐发生器微机原理实验.docx

《8253音乐发生器微机原理实验.docx》由会员分享,可在线阅读,更多相关《8253音乐发生器微机原理实验.docx(10页珍藏版)》请在冰点文库上搜索。

8253音乐发生器微机原理实验.docx

8253音乐发生器微机原理实验

8253音乐发生器实验

接线图:

单线连接:

排线连接:

将模块电源JP3接通将电源模块的JP7跳接.?

I/O端口地址:

8255的4个端口地址为300H~303H

A口:

300H,B口:

301H,C口:

302H,命令口:

303H。

8253的四个端口地址为304H~307H

其中通道0为304H,通道1为305H,通道2为306H,命令口为307H

流程图:

 

系统资源分配

本平台系统提供的I/O地址范围是300H~3FFH,目前已使用的I/O地址有:

8255A:

300H~303H

8253A:

304H~307H

8251A:

308H~30BH

DAC0832:

30FH

8237A:

主片0~0FH;从片0C0H~0DEH

8259A:

主片20H,21H;从片0A0H,0A1H

在此区有一个TP1测试点,可以对译码信号进行检测。

本平台为用户提供了两个中断识别源分别为:

IRQ2和IRQ10,当用户需要进行中断实验时,可以任意用单线连接,进行中断申请。

跳线开关说明

跳线开关

所在区

功能

JP1

G

(1-2)远距离通信(2-3)近距离通信

JP2

G

(1-2)RS485方式(2-3)RS232方式

JP3

G

(RXD-TXD)表示自发自收(空)表示双机通信

JP4

G

(跳接)收发时钟连到8253的OUT2作为波特率发生,(空)由用户自己连接收发时钟

JP5

L

(跳接)接通芯片6264电源(空)断开6264芯片电源

JP6

L

(跳接)接通芯片DAC0809电源(空)断开芯片DAC0809电源

JP7

L

(跳接)Q区74LS08芯片、M区74LS245芯片电源

JP8

L

(跳接)P区74LS373芯片、R区74LS04芯片、M区74LS06芯片、N区拨码开关、

T区4044芯片电源

JP9

L

放置跳接子

JP10

O

模拟量通道选择

JP11

E

(1-2)用PC6接Gate2(2-3)用PC3接Gate2

JP12

O

(1-2)用PC4查询EOC(空)EOC申请中断

 

;音乐发生器程序SourceFile

sstacksegmentstack

dw200dup(?

sstackends

datasegment

bgdb'Twotigers...'

db0ah,0dh

db'pressanykeytostop!

',0ah,0dh,'$'

freqdw2dup(262,294,330,262);"两只老虎"乐曲中,音符的频率(音阶)

dw2dup(330,349,392);其中,0频率表示结尾

dw2dup(392,440,392,349,330,262)

dw2dup(294,196,262),0

timedw10dup(8),16,8,8,16;"两只老虎"乐曲中,音符的延时(节拍)

dw2dup(4,4,4,4,8,8);其中4,8,16表示延时的次数

dw2dup(8,8,16)

old_segdw?

old_offdw?

dataends

codesegment

assumecs:

code,ds:

data,ss:

sstack

starprocfar;程序开始

movax,data

movds,ax

movax,sstack

movss,ax

pushdi;寄存器压栈

pushsi

pushbp

pushbx

moval,90h;8255初始化

movdx,303h

outdx,al

moval,0ch;关闭8253的T2计数器(8255的PC6=0)

movdx,303h

outdx,al

moval,00h;关闭喇叭(8255的PC0=0)

movdx,303h

outdx,al

moval,0b6h;8253初始化

movdx,307h

outdx,al

movdx,offsetbg;显示提示信息

movah,9

int21h

movsi,offsetfreq;设置频率指针→si

movbp,offsettime;设置延时指针→bp

pp:

movah,0bh;检测是否有任意键按下?

int21h

cmpal,00

jneend_sing;若有,则结束演凑

movdi,[si];取1个音符的频率→di

cmpdi,0;检测是否是乐曲结尾

jeend_sing;若是,则结束演凑

movdx,12h;计算音符的频率所对应的8253计数初值

movax,34dch;1.19318MHz

divdi

movdx,306h;向8253装入计数初值

outdx,al;先装低字节

moval,ah

outdx,al;再装高字节

movdx,303h;打开喇叭(8255的PC0=1)

moval,01h

outdx,al

moval,0dh;打开8253的T2(PC6=1),开始发声

outdx,al

movbx,ds:

[bp];取1个音符的延时次数→bx

calltime_delay;调用延时子程

movdx,303h;关闭8253的T2(PC6=0)

moval,0ch

outdx,al

moval,00h;关闭喇叭(PC0=0)

outdx,al

addsi,2;取下1个音符的频率

addbp,2;取下1个音符的延时次数

jmppp;继续

end_sing:

movdx,303h;关闭8253的T2

moval,0ch

outdx,al

moval,00h;关闭喇叭

outdx,al

popbx;寄存器出栈

popbp

popsi

popdi

movax,4c00h;返回DOS

int21h

starendp

new_intrproc;新中断服务程序

decbx;该服务程序只将延时次数-1

iret

new_intrendp

time_delayprocnear;延时子程序

pushf;压栈

pushds

pushes

pushbx

movah,35h;取原中断(INT1CH)的向量,并保存

moval,1ch;INT1CH—用户时钟服务

int21h

movold_off,bx

movbx,es

movold_seg,bx

popbx

popes

pushds

movah,25h;设置新中断服务程序的向量

moval,1ch

movdx,segnew_intr

movds,dx

leadx,new_intr

int21h

popds

TD:

cmpbx,0h;延时次数已到?

jnzTD;未到,则继续

movah,25h;已到,则恢复原中断向量

moval,1ch

movdx,old_seg

pushdx

movdx,old_off

popds

int21h

popds

popf

;timedelayend

ret

time_delayendp

codeends

endstar;程序结束

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2