微原硬件实验
P1: P2: P3: P4: P5:
CMP TMP,01110111B ;0 JNZ P1
MOV AL,a0 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
CMP TMP,01111011B ;1 一行二列 JNZ P2 MOV AL,a1 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU ;如果没有按键,则继续运行 CMP TMP,01111101B ;2 JNZ P3 MOV AL,a2 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
CMP TMP,01111110B ;3 JNZ P4 MOV AL,a3 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
CMP TMP,10110111B ;4 JNZ P5 MOV AL,a4 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
CMP TMP,10111011B ;5 JNZ P6 MOV AL,a5 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
第21页
微原硬件实验
P6: CMP TMP,10111101B ;6 JNZ P7 MOV AL,a6 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
P7: CMP TMP,10111110B ;7 JNZ P8 MOV AL,a7 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
P8: CMP TMP,11010111B ;8 JNZ P9 MOV AL,a8 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
P9: CMP TMP,11011011B ;9 JNZ PA MOV AL,a9 ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
PA: CMP TMP,11011101B ;a JNZ PB MOV AL,aa ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
PB: CMP TMP,11011110B ;b JNZ PC MOV AL,ab ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
第22页
微原硬件实验
PC: CMP TMP,11100111B ;c JNZ PD MOV AL,ac ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
PD: CMP TMP,11101011B ;d JNZ PE MOV AL,ad ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
PE: CMP TMP,11101101B ;e JNZ PF MOV AL,ae ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
PF: CMP TMP,11101110B ;f MOV AL,af ;记录0的段选通信号 MOV A,AL CALL RUN ;调用响声及显示子程序 JMP JIESHU
JIESHU: MOV AH, 0BH ;检测是否有按键按下 INT 21H OR AL,AL JZ BEGIN ;如果没有按键,则继续运行 MOV AX,4C00H INT 21H
CODE ENDS END BEGIN
五、实验结果
第23页
微原硬件实验
(1)8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。按下Ki,则对应的Li亮灯。
(2) 在数码管上的最后四位显示我的学号后四位1338,按下键盘后程序终止,数码管停止显示,返回DOS。
(3)使得在小键盘上每按一个健,4位数码管上显示出相应字符。
六、实验总结
做这次实验的时候我们还没有学到8255,通过自学以及和同学的讨论,了
解了可编程并行接口电路的原理和使用,之后理论学习的时候就很容易了。但是实验三仅是简单的8255应用,控制字和状态字的写入比较容易。我学会了用并行接口8255控制数码管的亮灭,准确写入8255的控制字,并用宏的方式调用数码管显示的子过程。
七、实验收获与心得体会
虽然是硬件实验,但是硬件的连线比较容易,大部分连接部分已经集成在电路板内部了,所以对我的硬件操作能力没有太多锻炼。但是通过本次实验还是对8255的工作方式有所学习。
实验中的实验板是老师连接好了电路板和接口芯片,这样可以简化实验过程,也使得大家的硬件平台一致,我们仅需简单地连接几根线即可。但这样存在的问题是,我们对芯片的地址和连线失去了动手实践的机会,而这个恰恰是我们专业的一大弱点,硬件接触过少,不熟悉,而软件相对掌握熟练。建议给学生更多的空间去自己布线,更加熟悉硬件和接口。虽然这会加大实验难度,但是可以老师引导着学生去做布线部分,给大家讲原理。
关于实验五,这次实验是在我做了实验八之后做的,所以只是把代码改了一下,删去了喇叭放音的部分,增加了字母的显示。键盘的扫描和小学期单片机的很相似,采用了行扫描法,就是使键盘某一行线为低电平,其余为高电平,然后读取列值,如列值中有某位位低电平,则表明行列交叉点处的键被按下;否则扫描下行,知道扫完全部的行线为止。本次实验还是比较顺利的,只有一些小错误。
第24页
微原硬件实验
三、可编程定时器/计数器(8253)实验
一、实验目的
学习掌握8253用作定时器的编程原理。
二、实验原理和目的
(一)实验原理:
8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。8254是8253的改进型。 1.8253初始化
使用8253前,要进行初始化编程。初始化编程的步骤是:
①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。 ②向使用的计数器端口写入计数初值。 2.8253控制字
D7D6=00:使用0号计数器,D7D6=01:使用1号计数器 D7D6=10:使用2号计数器,D7D6=11:无效 D5D4=00:锁存当前计数值
D5D4=01:只写低8位(高8位为0),读出时只读低8位 D5D4=10:只写高8位(低8位为0),读出时只读高8位 D5D4=11:先读/写低8位,后读/写高8位计数值
D3D2D1=000:选择方式0,D3D2D1=001:选择方式1 D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3 D3D2D1=100:选择方式4,D3D2D1=101:选择方式5 D0=0:计数初值为二进制,D0=1:计数初值为BCD码数
(二)实验内容:
1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。
2.扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。 注意:8253输入频率应小于2MHz。
第25页