预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

8253音乐发生器实验 接线图: 单线连接: F区 PC0 Q区 门控(启/停) 控制(音调) E区 OUT2 排线连接: J3 20 心 并 行 口 插 座 J4 20 芯 并 行 口 插 座 连接线 将模块电源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,当用户需要进行中断实验时,可以任意用单线连接,进行中断申请。 跳线开关说明 跳线开关所在区功能JP1G(1-2)远距离通信(2-3)近距离通信JP2G(1-2)RS485方式(2-3)RS232方式JP3G(RXD-TXD)表示自发自收(空)表示双机通信JP4G(跳接)收发时钟连到8253的OUT2作为波特率发生,(空)由用户自己连接收发时钟JP5L(跳接)接通芯片6264电源(空)断开6264芯片电源JP6L(跳接)接通芯片DAC0809电源(空)断开芯片DAC0809电源JP7L(跳接)Q区74LS08芯片、M区74LS245芯片电源JP8L(跳接)P区74LS373芯片、R区74LS04芯片、M区74LS06芯片、N区拨码开关、 T区4044芯片电源JP9L放置跳接子JP10O模拟量通道选择JP11E(1-2)用PC6接Gate2(2-3)用PC3接Gate2JP12O(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的PC