8253、8255、8259和8251实现电子琴的自动弹凑和手动弹凑
微机原理课设 电子琴8253 8255
![微机原理课设 电子琴8253 8255](https://img.taocdn.com/s3/m/db998366ddccda38376bafc4.png)
一、内容摘要设计一个电子琴。
利用数字键1、2、3、4、5、6、7作为电子琴键,按下数字键发出相应的音调。
二、课程设计的目的和意义1、进一步掌握定时器编程和应用。
2、了解微机利用定时器产生音乐的基本方法。
三、课程设计的要点和内容1、根据音阶频率表,利用定时器可以产生相应频率的脉冲信号,不同频率的脉冲信号经驱动电路放大后,就会发生不同的音调。
2、对于每个按键的音调发音时间由软件延时控制,如键一直按下,就会连续发音各音阶标称频率值:本次课设要求设计一个电子琴,作为一个乐器,其最基本的功能就是能够发出一个音阶的所有声音,即:do,re,mi,fa,so,la,xi,dou,8个音符,不同的声音的本质就是不同频率的波,每个音符都对应着固定的频率;而声音的长短即是波的个数。
所以得出的一条思路是:用汇编语言来产生一系列频率不同的方波信号,找到各个音符的频率,然后用汇编语言产生同频信号,并将该信号输入到扬声器,如果驱动功率不够则可以加放大电路。
四、硬件电路设计1、单元电路设计:硬件结构应结合软件方案一并考虑,做到软件、硬件功能相匹配。
在DJ-598K 三合一单片机微机试验仪平台上,硬件设计参考方案如下:2、电路工作原理:2.1可编程8253计数器(1)在计算机的引用中,常常要对外设的某些信号进行计数,希望计算机既能控制技术的过程,还有能读取计数的结果,进而作为控制或管理的决策依据。
如果被计数的信号有了准确的固定的周期,就形成了定时器。
(2)图为8253的内部组成和引脚。
如图所示,与外部的连接线主要分布在右侧的三个部分,即:三个计数器。
其中CLK为计数通道的输入脉冲信号,对于8253来说的频率范围是0—2MHz。
GATE为门控信号,用来启动或禁止计数工作,高电平有效,不同的工作方式,作用也不同。
Out为输出信号,用来输出波形,不同的工作方式,不同的工作方式,输出的波形也不同;而与CPU的的内部接线主要分布在左侧的三个部分。
8253、8255、8259和8251实现电子琴的自动弹凑和手动弹凑
![8253、8255、8259和8251实现电子琴的自动弹凑和手动弹凑](https://img.taocdn.com/s3/m/c07a0c51b307e87101f69675.png)
汇编与微机接口技术试验二、实验项目名称:用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 SEGMENTCS_8259_P0 EQU 20HCS_8259_P1 EQU 21HCS_8255_CTRL EQU 73HCS_8255_PA EQU 70HCS_8253_CTRL EQU 4BHCS_8253_CH0 EQU 48HCS_8253_CH2 EQU 4AHCS_8251_STAT EQU 51HCS_8251_DATA EQU 50HASSUME CS:CODEORG 1000HSTART: JMP MAINMODE DB 0 ;0为手动弹凑模式,非0为自动手动弹凑模式TONELEN DW 0TONEFR DW 2,3030,2865,2551,2273,2024,1912,1704,1517,1433,1276,1136,1012 TABLE DB 42H,82H,82H,82H,84H,02H,72HDB 62H,72H,62H,52H,48HDB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2HDB 12H,0A2H,0D2H,92H,88HDB 82H,0B2H,0B2H,0A2H,84H,02H,72HDB 62H,72H,62H,52H,44H,02H,12HDB 12H,62H,62H,52H,44H,02H,82HDB 72H,62H,52H,32H,48HDB0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FHENDTAB DB 00HMAIN: CALL I8253ACALL INTSETCALL I8259ACALL I8255ACLDMOV AX,SEG TABLEMOV DS,AXLEA DI,ENDTABMOV AL, 0CMP MODE,ALJZ MAN_PLAYAUTO_PLAY:LEA S I,TABLESOUND:IN AL, CS_8251_STATTEST AL, 00000010BJZ NEXT1IN AL, CS_8251_DATACMP AL, 'M'JNZ NEXT1MOV AL,1MOV MODE,ALJMP MAN_PLAYNEXT1:LODSBMOV BX,AXMOV CX,AXAND CX,0FHAND BX,0F0HSHR BX,1SHR BX,1SHR BX,1; SHR BX,1MOV AX,TONEFR[BX]CALL OUTTONEMOV AX,10MUL CXMOV WORD PTR TONELEN,AXDELAY: MOV AX,WORD PTR TONELENCMP AX,0JNE DELAYCMP SI,DIJNE SOUNDJMP AUTO_PLAYMAN_PLAY:MOV AX,0MOV TONELEN, AXIN AL, CS_8251_STATTEST AL, 00000010BJZ CHK8255IN AL, CS_8251_DATACMP AL, 'A'JNZ NEXT2MOV AL,0MOV MODE,ALJMP AUTO_PLAYNEXT2: CMP AL, 31HJL CHK8255CMP AL, 38HJG CHK8255SUB AL, '0'MOV AH, 0MOV BX,AXSHL BX,1MOV AX,TONEFR[BX]CALL OUTTONEJMP MAN_PLAYCHK8255:K1: MOV DX, CS_8255_PA ;PA端口地址IN AL, DX ;读开关的状态TEST AL, 01H ;判是否是K1闭合JZ K2 ;不是转K2MOV AX, 2273 ;是K1闭合送“1”音频数据1/440.00HZJMP KEYDOWNK2: IN AL, DX ;读开关的状态TEST AL, 02H ;判是否是K2闭合JZ K3 ;不是转K3MOV AX, 2024 ;是K2闭合送“2”音频数据1/493.88HZJMP KEYDOWNK3: IN AL, DX ;读开关的状态TEST AL, 04H ;判是否是K3闭合JZ K4 ;不是转K4MOV AX, 1805 ;是K3闭合送“3”音频数据1/554.37HZJMP KEYDOWNK4: IN AL,DX ;读开关的状态TEST AL, 08H ;判是否是K4闭合JZ K5 ;不是转K5MOV AX, 1704 ;是K4闭合送“4”音频数据1/587.33HZJMP KEYDOWNK5: IN AL, DX ;读开关的状态TEST AL, 10H ;判是否是K5闭合JZ K6 ;不是转K6MOV AX, 1517 ;是K5闭合送“5”音频数据1/659.26HZJMP KEYDOWNK6: IN AL, DX ;读开关的状态TEST AL, 20H ;判是否是K6闭合JZ K7 ;不是转K7MOV AX, 1353 ;是K6闭合送“6”音频数据1/739.99HZJMP KEYDOWNK7: IN AL,DX ;读开关的状态TEST AL, 40H ;判是否是K7闭合JZ K8 ;不是转K8MOV AX, 1205 ;是K7闭合送“7”音频数据1/830.61HZJMP KEYDOWNK8: IN AL, DX ;读开关的状态TEST AL, 80H ;判是否是K8闭合JZ NOKEY ;不是转K1MOV AX, 1136 ;是K8闭合送“8”音频数据1/880.30HZJMP KEYDOWNFREQ DW 0 ;保存前次设置频率NOKEY: JMP MAN_PLAYMOV AX, 2 ; 关闭发音KEYDOWN:CMP FREQ,AXJE NOKEYMOV FREQ,AXCALL OUTTONEJMP MAN_PLAYOUTTONE PROC NEAR ;按音频数据设置定时器时间常数PUSH AX ; 键码压栈MOV AL, 36H ; 计数器0, 16位二进制,方式3(方波)。
综合实验(8253+8259+8255控制步进电动机)
![综合实验(8253+8259+8255控制步进电动机)](https://img.taocdn.com/s3/m/d514ed6831b765ce05081413.png)
mov al,34h ;通道0,方式2
out dx,al
mov dx,04b0h
mov al,0
out dx,al
mov al,96h
out dx,al
sti
jmp $
int8259: cli
mov al,bl ;中断程序
mov dx,04a0h
out dx,al
OUT DX, AL ;
MOV AL, 80H ;设置中断向量号
MOV DX, 04C2H ;从04C2H端口地址送初始化命令字ICW2
OUT DX, AL ;
MOV AL, 01H ;设置ICW4,1680X86处理器
OUT DX, AL ;
MOV AL, 0FEH ;1111 1110设置OCW1值,允许IR0中断,禁止其他中断
四、实验原理
本实验由8253、8255、8259三个芯片及步进电机组成,各芯片的工作原理参看前各部分实验。
五、实验步骤
1、实验连线
8255CS~CS0,8255A口接步进电机A、B、C、D,为了观察步进电机的通电情况,将A、B、C、D插孔与发光二极管相连
8253CS~CS1,CLK2~8253CLK0,out0~8259IR0;
STI
JMP $
int8259:
CLI
MOV AL, BL ;中断程序
MOV DX, 04A0H ;向8255的A口写入高低电平
OUT DX, AL ;
MOV DX, 04A2H ;8255 B口端口地址04A2H
IN AL, DX ;从B口读入数据
TEST AL, 01H ;读入数据与0000 0001相与
汇编接口综合实验——简易电子琴实验
![汇编接口综合实验——简易电子琴实验](https://img.taocdn.com/s3/m/ad673ecff61fb7360b4c65df.png)
简易电子琴——键盘控制电子音响发声、8x8点阵灯显示实验报告12281166 崔雪莹 12281161 安容巧 12281183 张佳悦一、实验目的1.了解小键盘的工作原理,学会如何使用小键盘进行控制,熟悉流程和代码编程;2.了解电子音响的发声原理,会利用8253A级联方式控制其发出不同频率的声音;3.了解8X8点阵灯的工作原理,学会显示想要显示的文字和图形;4.实验结合8253,8259,8255和小键盘,8*8点阵的应用共同实现。
5.实验目的效果:小键盘触发按键,控制电子音响发出相应频率的声音,8X8点阵灯显示相应的内容。
二、实验内容实验主要概述:键盘控制实现两个音部(高音部、低音部)的发声,即:当在键盘上按下‘0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’时,电子音响发出不同频率的低音调,当在键盘上按下‘8’、‘9’、‘A’、‘B’、‘C’、‘D’、‘E’、‘F’时,电子音响发出不同频率的高音调。
同时,在8x8灯上显示相应音调对应的‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘A’、‘B’、‘C’、‘D’、‘E’、‘F’。
1.小键盘按键的获取:图1 小键盘原理图小键盘按键获取原理:(1)判断是否有按键按下:若某行为低电平,此时该行某按键对应某列也为低电平,则说明该按键此时被按下。
将8255A的A口03接行0到行3,B口的03接列0到列3。
A口做输出,B口做输入。
将A口输出设置为0000读取B口的此时的值,若不是全为1则说明有按键按下。
无按键按下则等待。
(2)去抖动:延时,等待按键通断引起的抖动消失。
延时后再读B端口,若还有按键闭合,则认为按键已确定。
(3)找到被按下的按键:用逐行扫描的方法读出此时按键相应的值。
从第0行开始,输出0,顺序逐行扫描。
每扫描一行,读入列线值,从0列开始,逐列检查是否为0。
若为0,则表示该列有键按下;若为1,则表示无键按下。
微机原理课程设计——简易电子琴实验
![微机原理课程设计——简易电子琴实验](https://img.taocdn.com/s3/m/edd5b95cf01dc281e53af01f.png)
微机原理与接口技术课程设计——简易电子琴的设计作者:王雨轩指导老师:张金花摘要:本设计主要是利用可编程并行I/O接口芯片8255,通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。
利用定时器可发出不同频率的方波的原理,使不同频率的方波进入蜂鸣器发出不同音调。
Abstract: This design mainly is to use programmable parallel I/O interface chip 8255 to design the main body part of the electronic keyboard’s circuit,to achieve the basic function of the inherent.So called simple electronic keyboard.The principle of using the timer can make different frequency square wave,let the different frequency square wave into the buzzer to make different tones.关键字:微机原理接口技术 8255 电子琴目录说明书总页数:14页简易电子琴的设计 (3)一、课题要求与内容 (3)(一)课题要求 (3)(二)课题内容 (3)(三)使用设备 (3)二、系统总体方案设计 (4)(一)系统流程图 (4)三、系统硬件设计 (5)(一)设计原理图 (5)(二)主机连线说明 (5)(三)硬件调试 (5)四、系统软件设计 (6)(一)程序清单 (6)(二)软件调试 (12)五、结束语 (13)六、参考文献 (14)简易电子琴的设计随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作。
计算机是一种严格按照时序进行工作的数字化、智能化机器,实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。
8253、8259、8255综合设计题
![8253、8259、8255综合设计题](https://img.taocdn.com/s3/m/0ebf5e1502d8ce2f0066f5335a8102d276a2611c.png)
1.键盘中断(8255,8259),设计一程序当按下任意键或任意组合键时从8255的A口读出按键扫描码并显示,按“ESC”键退出。
2.交通灯控制系统:按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。
可利用8255、8253、8259等接口电路。
(可到实验室完成)
3.键盘电子乐器:利用并行接口8255作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。
微机原理实验报告-电子琴
![微机原理实验报告-电子琴](https://img.taocdn.com/s3/m/aef0f949ad02de80d4d840d6.png)
微机接口技术课程实验设计报告题目:按键电子琴姓名:学号:************、************班级: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 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_MODE EQU 0606HMY8254_MODE EQU 06C6HMY8254_A EQU 06C0HDATA SEGMENTFREQ_LIST DW 221,248,278,294,330,371,416,441DW 495,556,589,661,742,833,882,-1DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA ;初始化MOV DS,AXMOV DX,MY8255_MODEMOV AL,81H ;8255控制字OUT DX,ALMOV DX,MY8254_MODE ;8254控制字MOV AL,36HOUT DX,ALBEGIN:CALL CCSCAN ;扫描JNZ INK1JMP BEGININK1:MOV CH,0FEHMOV CL,00HCOLUM:MOV AL,CHMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXL1:TEST AL,01HJNZ L2MOV AL,00HJMP KCODEL2:TEST AL,02HJNZ L3MOV AL,04HJMP KCODEL3:TEST AL,04HJNZ L4MOV AL,08HJMP KCODEL4:TEST AL,08HJNZ NEXTMOV AL,0CH KCODE:ADD AL,CLMOV DL,2DMUL DLPLAY:MOV SI,OFFSET FREQ_LISTADD SI,AXMOV DX,0FHMOV AX,4240HDIV WORD PTR[SI]MOV DX,MY8254_AOUT DX,ALMOV AL,AHOUT DX,ALMOV CX,8DNEXT3:CALL DALLYLOOP NEXT3MOV DX,0FHMOV AX,4240HMOV SI,30DDIV WORD PTR[SI]MOV DX,MY8254_AOUT DX,ALMOV AL,AHOUT DX,ALJMP BEGIN NEXT:INC CLMOV AL,CHTEST AL,08HJZ KERRROL AL,1MOV CH,ALJMP COLUM KERR:JMP BEGIN CCSCAN:MOV AL,00HMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXNOT ALAND AL,0FHRETDALLY:PUSH CXMOV CX,000FHT1:MOV AX,009FH T2:DEC AXJNZ T2LOOP T1POP CXRETCODE ENDSEND START。
电子琴课程设计8255
![电子琴课程设计8255](https://img.taocdn.com/s3/m/f93735112f3f5727a5e9856a561252d380eb200f.png)
电子琴课程设计8255一、教学目标本节课的学习目标包括以下三个方面:1.知识目标:学生需要掌握电子琴的基本结构和功能,了解电子琴的工作原理,以及基本的音乐理论知识。
2.技能目标:学生能够熟练操作电子琴,进行基本的弹奏和演奏;能够通过电子琴创作简单的音乐作品。
3.情感态度价值观目标:培养学生对音乐的热爱和兴趣,提高学生的音乐素养,培养学生的创新精神和团队合作意识。
二、教学内容本节课的教学内容主要包括以下几个部分:1.电子琴的基本结构和功能:介绍电子琴的各个部分,如键盘、音量控制、音色选择等,以及它们的作用和功能。
2.电子琴的工作原理:讲解电子琴内部的工作原理,如声音产生、音量控制等。
3.基本音乐理论知识:介绍音阶、和弦、节奏等基本音乐理论知识。
4.电子琴操作练习:指导学生进行电子琴的基本操作练习,如开关机、选择音色、调节音量等。
5.简单弹奏和演奏练习:教授学生简单的电子琴弹奏和演奏技巧,并进行练习。
6.创作简单音乐作品:引导学生进行电子琴创作,创作简单的音乐作品。
三、教学方法本节课采用以下几种教学方法:1.讲授法:讲解电子琴的基本结构和功能、工作原理以及基本音乐理论知识。
2.示范法:教师进行电子琴操作示范,学生跟随模仿。
3.练习法:学生进行电子琴操作练习,教师进行指导。
4.创作法:学生进行电子琴创作,教师进行评价和指导。
四、教学资源本节课的教学资源包括以下几个方面:1.教材:电子琴教材,用于指导学生学习。
2.多媒体资料:电子琴教学视频、音频等资料,用于辅助教学。
3.实验设备:电子琴及相关设备,用于学生实践操作和创作。
4.参考书:音乐理论相关书籍,用于学生深入学习音乐理论知识。
五、教学评估本节课的评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与度、积极性和表现,包括发言、提问、合作等。
2.作业:评估学生提交的作业,包括练习题、创作作品等,以检查学生的学习成果和理解程度。
3.考试:进行一次电子琴操作和演奏考试,评估学生的技能水平和音乐理论知识掌握情况。
课程设计IBM-PC 82538255音乐演奏器的设计
![课程设计IBM-PC 82538255音乐演奏器的设计](https://img.taocdn.com/s3/m/b8f501f7f61fb7360b4c6531.png)
1、设计题目IBM-PC 8253/8255音乐演奏器的设计2、设计目的熟悉并掌握IBM-PC中定时器8253及并行接口芯片8255驱动扬声器发出声音的方法,熟悉并掌握接口控制程序的一般结构。
3、设计内容与要求(1)电子琴功能,编写程序,程序运行时使PC机成为一架可弹奏的“钢琴”。
PC机键盘数字键1-8分别对应1,2,3,4,5,6,7,i八个音调,演奏一段简单音乐(2)按键控制音符:即能够通过键盘上的按键实现单个音符的演奏;音乐盒功能,内部存储至少2首以上的乐曲,根据菜单选择播放。
4、程序源代码发声程序sound源代码public soundfcseg segment para'code'assume cs:csegsoundf proc farpush axpush bxpush cxpush dxpush dimov al,0b6hout 43h,almov dx,12hmov ax,348chdiv diout 42h,almov al,ahout 42h,alin al,61hmov ah,alor al,3out 61h,alwait1: mov cx,4815call waitfdelay: loop delaydec bxjnz wait1mov al,ahout 61h,alpop dipop dxpop cxpop bxpop axretsoundf endpwaitf proc nearpush axwaitf1:in al,61hand al,10hcmp al,ahje waitf1mov ah,alloop waitf1pop axretwaitf endpcseg endsend音乐程序music1源代码extrn soundf:farstack segment para stack 'stack'db 64 dup('stack...')stack endsdseg segment para 'data'mus_freq dw 330,294,262,294,3 dup(330) dw 3 dup(294),330,392,392dw 330,294,262,294,4 dup(330)dw 294,294,330,294,262,-1mus_time dw 6 dup(25),50dw 2 dup(25,25,50)dw 12 dup(25),100dseg endscseg segment para 'code'assume cs:cseg,ss:stack,ds:dsegmusic proc farmov ax,dsegmov ds,axlea si,mus_freqlea bp,ds:mus_timefreq:mov di,[si]cmp di,-1je end_musmov bx,ds:[bp]call soundfadd si,2jmp freqend_mus:mov ax,4c00hint 21hmusic endpcseg endsend music音乐程序music2源代码extrn soundf:farstack segment para stack 'stack'db 64 dup('stack...')stack endsdseg segment para 'data'mus_freq dw 330,392,330,294,330,392,330,294,330 dw 330,392,330,294,262,294,330,392,294dw 262,262,220,196,196,220,262,294,332,262,-1 mus_time dw 3 DUP(50),25,25,50,25,25,100dw 2 dup(50,50,25,25),100dw 12 dup(50,25,25),100dseg endscseg segment para 'code'assume cs:cseg,ss:stack,ds:dsegmusic proc farmov ax,dsegmov ds,axlea si,mus_freqlea bp,ds:mus_timefreq:mov di,[si]cmp di,-1je end_musmov bx,ds:[bp]call soundfadd si,2jmp freqend_mus:mov ax,4c00hint 21hmusic endpcseg endsend music按键实现单个音符的演奏程序play源代码extrn soundf:farstack segment para stack 'stack'db 64 dup('stack...')stack endsdseg segment para 'data'table dw 262,294,330,349,392,440,494,523 dseg endscseg segment para 'code'assume cs:cseg,ds:dseg,ss:stackmain proc farmov ax,dsegmov ds,axnew_note:mov ah,0int 16hcmp al,0dhje exitmov bx,offset tablecmp al,'1'jb new_noteand ax,0fhshl ax,1sub ax,2mov si,axmov di,[bx][si]mov bx,10call soundfjmp new_noteexit:mov ax,4c00hint 21hmain endpcseg endsend main主程序main源代码#include<stdio.h>#include<stdlib.h>#include<process.h>void main(){char choose;char interface();interface();scanf("%c",&choose);switch(choose){case'A':system("C:\\a\\music1.exe");case'a':system("C:\\a\\music1.exe");case'b':system("C:\\a\\music2.exe");case'B':system("C:\\a\\music2.exe");case'C':system("C:\\a\\play.exe");case'c':system("C:\\a\\play.exe");break;}}char interface(){ printf("\n");printf("\n");printf("\n");printf("***************************************\n"); printf("***************************************\n"); printf("***************A-music1****************\n"); printf("***************B-music2****************\n"); printf("***************C-play ****************\n"); printf("***************************************\n"); printf("***************************************\n"); printf("please press A or B or C!\n");}五、设计心得通过这次课程设计,令我最遗憾的是没有学习到如何用汇编编写选择程序界面,最终只能选择使用C语言编写主源程序。
8253定时器计数器接口与数字电子琴
![8253定时器计数器接口与数字电子琴](https://img.taocdn.com/s3/m/3fdb4ac59ec3d5bbfd0a74e7.png)
实验目的1.通过程序改变定时器的数值来改变声音频率2.通过编程来获得声调和节奏,使计算机演奏出乐曲来。
硬件设计利用实验板上的8253计数/定时器和8255并行接口,定时器8253利用工作方式3产生一定频率信号,通过可编程的并行外围接口芯片8255控制频率信号的通断。
8255的A 口设置为输出,8255的A 口的低两位用来控制扬声器驱动,当输出端口的PA0位为“1”或为“0”时,将使控制驱动器的与门电路接通或关闭,使8253所发出的音频信号能到达驱动器或被阻断。
这样通过控制PA0的变化,可使扬声器接通和断开,控制扬声器是否能发出声音。
此外,通过控制PA0的通断时间,就能发出不同的音长。
8255的PA1位为“1”时,控制8253定时器产生驱动扬声器发声的音频信号,该位为“0”则不发信号。
8253有三个定时器,分为0号、1号和2号定时器,驱动扬声器的是0号定时器,该定时器工作在方式3,是一个频率发生器,它负责向扬声器发送指定频率的脉冲信号。
当8255的PA0和PA1都为1时,8253发出指定频率的声音信号的前提下,声音信号通过与门到达驱动器驱动扬声器发声。
硬件原理图如图1所示: 图1 硬件原理图8253 计数器与门 扬声器驱动 扬声器8255 PA0 8255 PA1 门控控制喇叭 Q0扬声器驱动电路如图2所示。
图2 扬声器驱动电路软件设计系统要求实现2个功能,电子琴和音乐盒的功能。
两者发声的方法一样,只是一个数据是从键盘读取的,另一个是已经保存好的数据。
首先我们可以用一个子程序实现单个音调的产生,对8253输入不同的计数初值生成不同频率的波形,然后延时一段时间。
电子琴程序主要是读取键盘按键,根据键值产生不同的音调即可。
而乐曲的播放先将乐曲的音符编码表和节拍编码表建立好的,然后在播放时读取数据。
1. 单音调子程序SOUND单音调子程序的调用前需要进行以下几个方面工作:1)确定相应的音调所对应的频率,查表可以得到,再由频率得到对应的8253计数初值。
基于单片机的简易电子琴的设计与实现
![基于单片机的简易电子琴的设计与实现](https://img.taocdn.com/s3/m/49bc40998762caaedd33d451.png)
基于单片机的简易电子琴的设计与实现摘要:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
该文的主要内容是用8253芯片为核心控制元件,设计一个简易电子琴。
通过按动STAR ES598PCI单板机的G6区的1~7号键,使用单板机上的8255A芯片进行音调的选择,由8253芯片控制产生不同频率的方波,输出到单板机上D1区的蜂鸣器,使其对应于G6区的1~7号键由低到高发出1~7的音阶,并由8255A芯片控制8253芯片的工作状态,使其能够控制蜂鸣器的发声与否,从而实现简易电子琴的演奏功能。
同时,也可以通过事先设置好的“乐谱”回放一段音乐,实现简易电子琴的回放功能以及对用户演奏过的一段音乐进行重放功能。
用户可以通过DOS界面下的菜单对电子琴的回放和重放或是演奏功能进行选择。
关键词:电子琴;单片机;8253芯片中图分类号:TP313 文献标识码:A 文章编号:1009-3044(2014)13-3179-03Design and Implementation of Simple MicrocontrollerBased KeyboardZHANG Dan(Hefei University,Hefei 230601,China)Abstract:The keyboard is a combination of modern electronic music technology and the product is a new type of keyboard instrument. It plays an important role in modern music ,SCM has a powerful control functions and flexible programming features,it has been integrated into the modern people's lives ,become an irreplaceable part . The main content of this paper is to use 8253 as the core control elements ,the design of a simple flower . By pressing the number keys 1-7 STAR ES598PCI SBC G6 zone ,8255A chips on a single board computer for tone selection control 8253 generates a square wave of different frequencies ,the output of the SBC to bee region D1 buzzer to make it correspond to theG6 District No. 1 to 7 keys issued from low to high scale of 1 to 7 ,8253 by the 8255A chip to control the working status of the chip so that it can control the buzzer sound or not,thus achieve simple keyboard playing capabilities. Meanwhile ,you can also pre-set " score " a piece of music playback ,playback achieve simple keyboard and the user had to play a piece of music for playback function. DOS user interface via the menunext to the keyboard to play or replay and replay function selection.Key words:Keyboard ;SCM ;82531 解决问题方法及思路1.1硬件部分电子琴的主要的器件有一个并行接口8255和一个8253定时器。
微机原理与接口技术(电子琴设计报告)
![微机原理与接口技术(电子琴设计报告)](https://img.taocdn.com/s3/m/dda661704431b90d6d85c71b.png)
微机原理与接口技术课程设计基于 8086系统的电子琴设计报告05级电子信息工程 2班杨锡乐学号:0504030223参与成员:田友详、李丽华一、设计任务及要求1. 以 8255接八个开关 K1~K8,做电子琴按键输入。
2. 以 8253控制扬声器,拨动不同的开关,发出相应的音阶。
要求:K1—静音K2—发 si 的音 493HzK3—发 la 的音 440HzK4—发 sol 的音 392HzK5—发 fa 的音 349HzK6—发 mi 的音 329HzK7—发 re 的音 293HzK8—发 do 的音 261Hz二、方案比较和认证通过 8255和 8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
输入部分主要是由 8255和 8个常开型开关来完成。
常开型开关如右图。
8个常开型开关 K1~K8与 8255的 A 口 PA0~PA7相接,不触动开关时,为高电平输入,当按下开关时,就接地,为低电平输入。
例如当 K1键按下时,从 8255中 A 口输入的数为 11111110B ,十六进制为 0FEH 。
每一个开关按下时,都对应一个 ASCII 码,如下表所示:开关 K1 K2 K3 K4 K5 K6 K7 K8对应数据 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 7FH对应频率静音 493 Hz 440 Hz 392 Hz 349 Hz 329 Hz 293 Hz 261 Hz输入部分的硬件实现比较简单, 所以说主要还是在发音部分。
在设计中驱动扬声器地声的主要有两种方式, 分别是以位触发和定时器控制。
下面就这两种不同的方式确定两个不同的设计方案。
方案 1:发声采用位触发方式。
电路原理图如下所示。
程序直接控制 PPI (8255可编程序外围接口芯片的输出控制寄存器(I/O端口为 61H 的第一位,使该位按所需的频率进行 1和 0的交替变化,从而产生一串脉冲控制波形,这些脉冲经过放大后驱动扬声器发出声音。
数字电子钟8255 8253 8259
![数字电子钟8255 8253 8259](https://img.taocdn.com/s3/m/029d266f25c52cc58bd6bee2.png)
Hefei University微机原理与接口技术课程设计学科专业:自动化(3)班课程题目:数字电子钟完成时间:2011-1-12自动化专业微机原理课程设计任务书引言 (3)1.设计目的 (1)2.设计要求 (1)3.总体设计: (1)4.硬件设计: (2)4.1、8259A芯片的内部结构及引脚 (2)4.2、8255芯片的内部结构及引脚 (3)4.3、8253芯片的内部结构及引脚 (3)4.4.设计方案 (5)5.软件设计: (6)5.1原理框图 (6)5.2系统模块详细设计与调试 (6)5.3用定时器8253输出的脉冲 (7)5.4完整程序如下: (9)6.设计总结: (15)引言计算机的产生加快了人类改造世界的步伐,但是体积大,随着人们的生活越来越离不开计算机。
微型处理器在这种情况下应运而生。
纵观各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及生活中使用的各种智能IC卡、电子宠物等,这些都离不开微型计算机。
微机即是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
这次课程设计的题目是:数字电子钟的设计。
计时精确的电子钟在我们生活中能处处能见到。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
通过对一个学期的微机原理与接口技术的学习,我们可以利用我们所学过的知识来实现数字电子钟的工作过程。
我们选择LED显示, 8253定时功能、8255基本输入输出的功能、8259的中断功能来实现数字电子钟的设计。
电子琴微机原理基于8086课程设计
![电子琴微机原理基于8086课程设计](https://img.taocdn.com/s3/m/ace8e1f39b89680203d82580.png)
湖南科技大学潇湘学院信息与电气工程系《课程设计报告》题目:基于8086的电子琴设计专业:通信工程班级:通信一班姓名:罗婷学号: 1354040118指导老师:欧青立陈君宋芳管志利李目 2015年 12 月 28 日信息与电气工程系课程设计任务书2015—2016 学年第 1 学期专业:通信工程学号: 1354040118 姓名:罗婷课程设计名称:微机原理与接口技术设计题目:基于8056的电子琴设计完成期限:自 2015 年 12 月 14 日至 2015 年 12 月 26 日共 2 周设计内容:通过 8255 和 8253 来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
输入部分:主要是由 8255 和 8 个常开型开关来完成。
发音部分:CUP 通过对定时器 8253 的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端口 61H 的最低位控制通道 2 门控的开断,以产生特殊的音响。
本文用到的是 8253 的方式 3——方波发生器。
基本要求:1.以8255接八个开关K1~K8,做电子琴按键输入。
2.以8253控制扬声器,拨动不同的开关,发出相应的音阶。
要求:指导教师(签字):批准日期:年月日摘要定时器/ 计数器8253 可以产生不同频率的信号, 经过三极管放大驱动扬声器发出不同的音阶。
硬件上以8086 作为核心处理单元, 将8253 的输出端连接音频模块。
软件上检测按键是否有键按下, 判断按键并驱动对应发音子程序。
通用MIDI音源模块制作制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。
这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。
手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的QS6400 等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置。
此外还有音乐盒、附有生日歌的生日卡片等等。
《微机原理与接口技术》实验报告简易电子琴
![《微机原理与接口技术》实验报告简易电子琴](https://img.taocdn.com/s3/m/986e7619854769eae009581b6bd97f192279bf82.png)
《微机原理与接⼝技术》实验报告简易电⼦琴海南⼤学信息学院信息安全系专业课程《微机原理与接⼝技术》简易电⼦琴实验报告⽬录⼀、设计要求 (3)⼆、设计思路 (3)三、实验材料、⼯具、或软件 (4)四、实验内容 (4)1、实验电路连接 (4)2、程序流程图 (5)3、实验电路图 (6)4、8253与8255A相关结构及原理说明 (7)⑴8253 (7)⑵8255A (9)5、⽅案确定 (12)6、设计原程序及注释 (13)7、简易电⼦琴的安装与调试 (16)五、实验总结 (17)六、参考⽂献 (17)⼀、设计要求利⽤⽤实验箱上的扬声器与8个开关设计⼀个电⼦琴。
⽤开关模拟琴键,当开关拨为“1”时,相当于有键按下,喇叭发出声⾳。
拨动不同的开关则对应不同的⾳符,每次只能拨⼀个开关(相当于按下⼀个键)。
连续拨动开关,喇叭发出⾳乐。
⼆、设计思路简易电⼦琴设计选⽤8253计数器,8255A并⾏接⼝两个芯⽚:1. (输⼊部分)以8255A接⼋个开关K1~K8,做电⼦琴按键输⼊,由输⼊控制输出,即拨码开关控制扬声器;2. (发⾳部分)以8253控制扬声器(扬声器为输出),拨动不同的开关,发出相应的⾳阶。
将8255A芯⽚的B端⼝作为输出端⼝,PB0-PB7与输出端的K1-K8(分别对应⾳符1、2、3、4、5、6、7、i)相连接,⽽8253的时钟输⼊引脚CLK0与相应的时钟发⽣器相连接,8253的GATA0接开关K9(静⾳),8253的0通道的OUT0信号与LB区的SIN⼝相连接,从⽽驱动并控制喇叭的发⾳:当INPUT上的开关对应为“1”时喇叭连通,能够发出声⾳;当INPUT上的开关对应为“0”时喇叭被中断,不能发出声⾳。
这样,我们在硬件上实现了通过8255A芯⽚输⼊设备的输⼊信号并通过它传送给8253,让8253进⾏相应的处理后输出给喇叭的功能。
我们要通过对8255A的初始化和编程控制它的相关⼯作,使其能够实现上⾯提到的相应功能。
小键盘实现电子琴实验报告
![小键盘实现电子琴实验报告](https://img.taocdn.com/s3/m/83a0ed1ea2161479171128ae.png)
小键盘实现电子琴实验报告学生:13410801房皓;13410803 张明;13410802 张耀荣任课教师:李济生一、实验目的1、加强对8253和8255相关知识以及使用的方法的理解、掌握。
2、掌握用软件方法识别行列式键盘按键的原理和方法。
3、锻炼学生对相关知识的自学及研究能力。
4、提高学生小组协调与配合的能力。
二、实验内容(一)设计目标通过实验箱上小键盘实现电子琴,具体的实现方法是按小键盘上的0、1、2、3、4、5、6、7这8个键控制实验箱发出do、re、mi、fa、sol、la、si、do(高音),当按8键时播放《两只老虎》。
(二)音阶频率设计每个音阶都有其固定的频率,个音阶的频率值如下:音阶 1 2 3 4 5 6 7 1*低频率(单位:Hz) 262 294 330 347 392 440 494 524高频率(单位:Hz) 524 588 660 698 784 880 988 1048歌曲《两只老虎》相对应的频率表(高频率)如下:两只老虎:524,588,660,524,524,588,660,524,660,698,784,660,698,784(三)具体设计方法8255的A口和B口分别连接小键盘的行线和列线;8255的C口控制扬声器发声,方法为Pc0直接接与门的A口,Pc1接8253的GATE0,8253的的OUT0接与门的B口,与门的Y口接扬声器;8253的CLK0接1MHZ;8253和8255分别接地址译码的200H和210H;8253初始化为计时器0,工作在3方式,8255初始化为A口输出,B输入,C口输出。
(四)连接图设计8255与小键盘的连接设计8255、8253及扬声器的连接设计(五)实验流程图图1-3 实验流程图三、实验步骤1、根据原理图正确连接实验线路。
2、正确理解实验原理。
3、编写实验程序,并上机调试,观察实验结果。
四、实验结果按小键盘上的0、1、2、3、4、5、6、7这8个键控制实验箱发出do、re、mi、fa、sol、la、si、do(高音),当按8键时播放《两只老虎》。
简易电子琴设计
![简易电子琴设计](https://img.taocdn.com/s3/m/16396015d5bbfd0a785673d3.png)
1 设计任务描述1.1设计题目:简易电子琴设计1.2设计内容利用微机原理试验箱,设计简易电子琴,要求至少可以弹出7个音阶。
1.2.1设计目的通过本学期对微机原理的学习,掌握的知识还停留在理论的上。
但是这是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。
通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。
通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。
1.2.2基本要求1.可以弹出7个音阶。
2.弹奏简短音乐。
3.通过改变键盘输入来改变8254输出频率,实现扬声器发音2 设计思路通过8255和8254来实现电子琴模拟, 主要由两部分组成:第一部分为键盘扫描,用来确定按键位置,并给计数器赋初值。
第二部分为发声部分,由计数器1#的输出端产生一定频率的方波驱动扬声器发声。
其中8254和课本中学的8253在原理上是一样的,它为可编程定时器/计数器。
利用计数器0,并使它工作在方式3---输出对称方波,通过改变频率来实现不同的发声高低,再调用延时子程序来实现发音的长短,把输出方波送到扬声器,至此实现不同的音符发声。
过程中主要用到了8255芯片的PB0—PB4,PA—PA4它们分别与键盘单元的X 1—X4,Y1—Y4相连,其中B口低4位为输出端,B口低4位1为输入端。
由它们对键盘单元进行扫描,并确定键值工作过程为:先给所有列线输入低电平,然后读取行线,检测行线是否为低电平,如果有某条行线输出低电平,则说明该键盘有按键被按下,否则,说明无按键被按下.采用这种方法可以快速判断键盘是否有键按下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 SEGMENTCS_8259_P0 EQU 20HCS_8259_P1 EQU 21HCS_8255_CTRL EQU 73HCS_8255_PA EQU 70HCS_8253_CTRL EQU 4BHCS_8253_CH0 EQU 48HCS_8253_CH2 EQU 4AHCS_8251_STAT EQU 51HCS_8251_DATA EQU 50HASSUME CS:CODEORG 1000HSTART: JMP MAINMODE DB 0 ;0为手动弹凑模式,非0为自动手动弹凑模式TONELEN DW 0TONEFR DW 2,3030,2865,2551,2273,2024,1912,1704,1517,1433,1276,1136,1012 TABLE DB 42H,82H,82H,82H,84H,02H,72HDB 62H,72H,62H,52H,48HDB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2HDB 12H,0A2H,0D2H,92H,88HDB 82H,0B2H,0B2H,0A2H,84H,02H,72HDB 62H,72H,62H,52H,44H,02H,12HDB 12H,62H,62H,52H,44H,02H,82HDB 72H,62H,52H,32H,48HDB0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FHENDTAB DB 00HMAIN: CALL I8253ACALL INTSETCALL I8259ACALL I8255ACLDMOV AX,SEG TABLEMOV DS,AXLEA DI,ENDTABMOV AL, 0CMP MODE,ALJZ MAN_PLAYAUTO_PLAY:LEA S I,TABLESOUND:IN AL, CS_8251_STATTEST AL, 00000010BJZ NEXT1IN AL, CS_8251_DATACMP AL, 'M'JNZ NEXT1MOV AL,1MOV MODE,ALJMP MAN_PLAYNEXT1:LODSBMOV BX,AXMOV CX,AXAND CX,0FHAND BX,0F0HSHR BX,1SHR BX,1SHR BX,1; SHR BX,1MOV AX,TONEFR[BX]CALL OUTTONEMOV AX,10MUL CXMOV WORD PTR TONELEN,AXDELAY: MOV AX,WORD PTR TONELENCMP AX,0JNE DELAYCMP SI,DIJNE SOUNDJMP AUTO_PLAYMAN_PLAY:MOV AX,0MOV TONELEN, AXIN AL, CS_8251_STATTEST AL, 00000010BJZ CHK8255IN AL, CS_8251_DATACMP AL, 'A'JNZ NEXT2MOV AL,0MOV MODE,ALJMP AUTO_PLAYNEXT2: CMP AL, 31HJL CHK8255CMP AL, 38HJG CHK8255SUB AL, '0'MOV AH, 0MOV BX,AXSHL BX,1MOV AX,TONEFR[BX]CALL OUTTONEJMP MAN_PLAYCHK8255:K1: MOV DX, CS_8255_PA ;PA端口地址IN AL, DX ;读开关的状态TEST AL, 01H ;判是否是K1闭合JZ K2 ;不是转K2MOV AX, 2273 ;是K1闭合送“1”音频数据1/440.00HZJMP KEYDOWNK2: IN AL, DX ;读开关的状态TEST AL, 02H ;判是否是K2闭合JZ K3 ;不是转K3MOV AX, 2024 ;是K2闭合送“2”音频数据1/493.88HZJMP KEYDOWNK3: IN AL, DX ;读开关的状态TEST AL, 04H ;判是否是K3闭合JZ K4 ;不是转K4MOV AX, 1805 ;是K3闭合送“3”音频数据1/554.37HZJMP KEYDOWNK4: IN AL,DX ;读开关的状态TEST AL, 08H ;判是否是K4闭合JZ K5 ;不是转K5MOV AX, 1704 ;是K4闭合送“4”音频数据1/587.33HZJMP KEYDOWNK5: IN AL, DX ;读开关的状态TEST AL, 10H ;判是否是K5闭合JZ K6 ;不是转K6MOV AX, 1517 ;是K5闭合送“5”音频数据1/659.26HZJMP KEYDOWNK6: IN AL, DX ;读开关的状态TEST AL, 20H ;判是否是K6闭合JZ K7 ;不是转K7MOV AX, 1353 ;是K6闭合送“6”音频数据1/739.99HZJMP KEYDOWNK7: IN AL,DX ;读开关的状态TEST AL, 40H ;判是否是K7闭合JZ K8 ;不是转K8MOV AX, 1205 ;是K7闭合送“7”音频数据1/830.61HZJMP KEYDOWNK8: IN AL, DX ;读开关的状态TEST AL, 80H ;判是否是K8闭合JZ NOKEY ;不是转K1MOV AX, 1136 ;是K8闭合送“8”音频数据1/880.30HZJMP KEYDOWNFREQ DW 0 ;保存前次设置频率NOKEY: JMP MAN_PLAYMOV AX, 2 ; 关闭发音KEYDOWN:CMP FREQ,AXJE NOKEYMOV FREQ,AXCALL OUTTONEJMP MAN_PLAYOUTTONE PROC NEAR ;按音频数据设置定时器时间常数PUSH AX ; 键码压栈MOV AL, 36H ; 计数器0, 16位二进制,方式3(方波)。
MOV DX, CS_8253_CTRL ;定时器控制口地址OUT DX, ALPOP AX ; 键码出栈MOV DX, CS_8253_CH0 ;定时器0端口地址OUT DX, AL ;写时间常数低八位MOV AL, AH ;写时间常数高八位OUT DX, ALRETOUTTONE ENDPTIMER PROC FARPUSH AXMOV AX,WORD PTR TONELENCMP AX, 0JE EXITIDEC TONELENEXITI:MOV AL,20HOUT CS_8259_P0,ALPOP A XIRETTIMER ENDPINTSET PROC NEARMOV AX, 0MOV ES,AXMOV DI,(8+3)*4LEA A X,TIMERSTOSWMOV AX,CSSTOSWSTIRETINTSET ENDPI8259A P ROC NEARMOV AL,13HMOV DX,CS_8259_P0OUT DX,ALMOV AL,08HMOV DX,CS_8259_P1OUT DX,ALMOV AL,0BHOUT DX,ALMOV AL,0F7HOUT DX,ALSTIRETI8259A ENDPI8253A PROC NEAR ;按音频数据设置定时器时间常数MOV AL, 0B6H ; 计数器2, 16位二进制,方式3(方波)。
MOV DX, CS_8253_CTRL ;定时器控制口地址OUT DX, ALMOV AX, 12500MOV DX, CS_8253_CH2 ;定时器2端口地址OUT DX, AL ;写时间常数低八位MOV AL, AH ;写时间常数高八位OUT DX, ALRETI8253A ENDPI8255A P ROC NEARMOV AL, 90H ;8255的PA口输入MOV DX, CS_8255_CTRL ;8255控制口地址OUT DX, ALRETI8255A ENDPCODE ENDSEND START2.应用程序运行状态截图十、实验结论:通过此次试验达到了实验所需要达到的目地,让汇编程序编程的能力得到提升;加深了对各类芯片的理解;巩固了已学的知识;。