一、实验名称
通过8253,8255,8086实现电子琴功能,控制亮灯功能和8253方式0计数中断功能。
二、实验目的
1.熟悉及掌握proteus的使用方法,并通过这个环境实现芯片仿真;
2.用汇编语言实现芯片的工作方式设定及初始数据赋值。
3.了解8086与8253的连接方法、控制方法。利用8086外接8253可编程定时器/计数器,用8253的PB口接7只按钮,作为电子琴1、2、3、4、5、6、7数字键按键,编程完成按下数字键即发出相应的音调。
4.设定8255的PB口为开关量输入,PC口为开关量输出,编写程序时将PB口的开关状态通过PC口的发光二极管显示出来。
5.利用8086外接8253可编程定时器/计数器,编写程序使得在一段时间后发光二极管闪烁。
三、实验方法
(1)原理图设计
(2)具体功能展示:
1.通过8086、8255、8253实现电子琴功能,将开关状态从8255的B端口读入。通过对开关状态进行判断,对不同的开关分配不同的数字,再8086的控制下,通过数据总线传给8253,通过8253方式3的控制,产生不同频率的信号,并将信号传给喇叭以产生不同频率的声音。
代码如下:
2.通过8255、8086实现读取开关状态亮灯的功能,将开关状态从8255的B端口读入。通过对开关状态进行判断,对不同的开关分配不同的数字,再8086的控制下,传给8255A端口,通过读取A端口的数据,控制与A端口相连的灯的状态。
当按下开关1的时候,L1灯会亮,以此类推,当按下开关8的时候,L8灯亮。
部分代码如下:
3.8253方式0控制中断功能,通过初始化8253工作方式0,和计数器的值,当值为0的时候产生中断,Out0=1,使得彩灯两边产生电压差,并且闪烁。
代码如下:
四、实验结果
由于声音无法以书面的形式展示,第三个功能只是闪烁了一下,持续时间过于短暂,因此这里就只展示第二个功能,当按下开关4时,灯4亮。