0x00前言
今天微机原理接口结课了,好不容易整理出实验报告
顺便以博客的形式记录一下本学期7个微机实验
2020.6.19
刚刚考完微机实验,运气好,实验很简单
文章最后记录一下实验过程
0x01 8255
1.8255输入、输出实验
1 | CODE SEGMENT |
2.利用8255设计跑马灯(软延时)
1 | CODE SEGMENT |
0x02 8253
1.8253定时实验,利用8253完成2秒的延时。
1 | CODE SEGMENT |
2.利用8253硬件延时控制跑马灯运行。
1 | CODE SEGMENT |
0x03 A/D转换
1.利用0809完成1个通道的模拟量采集,并利用8255输出二进制码。
1 | CODE SEGMENT |
2.利用0832产生三角波输出,并在直流电机上观察结果。
1 | CODE SEGMENT |
0x04 键盘
实现扫描键盘上的按键,并在数码管上显示
1 | PORT_A EQU 280H |
进阶区
0x10 来自热心同学小张
要求:当0809 采集数据超过4.5V 时,由 8253 提供 0.5 秒控制 8255 输出8个发光二极管中的红灯闪烁。当低于4.5V时输出正常的二进制值。
0809 地址为 298H~29FH,8253 0 通道地址 2A8H, 8255 控制口地址 293H, 8253 通道 1 工作方式 2,8253 通道 0 工作方式 3。
1 | CODE SEGMENT |
0x02 来自一叶飘零学长
利用0809采集数据,转换后用IN5打到数码管上
1 | PORT_A EQU 290H ;8255A口地址 |
0x03 实现左右轮循环跑马灯
利用8253提供定时时间(2秒),8255输出至发光二极管,显示要求为:从左向右移位显示一次循环,然后从右向左移位显示一次循环。8253控制口地址283H,8255控制口地址293H。
1 | ORT_A EQU 290H ;8255A口地址 |
0x04记微机实验考试
要求:利用8253提供定时时间(1秒),8255输出为跑马灯形式至发光二极管。显示要求为从左向右每次移2位循环4次,然后以8253以2秒延时从右向左每次移1位循环5次后灯全
亮后停止。控制跑马灯暂停键为K4键,当K4键位时暂停。
8253 控制口地址 2A3H,8255A 口地址 2B0H。
拿到题目的一瞬间全组狂喜,
很简单,8255、8253两个芯片,两个硬延时就可以了
但是一个看似三十分钟程序却做了将近一个半小时,事情是这样的
在写完第一个延时后,本想先测试一下效果,但正常测试几次后LED灯突然就不亮了
???疑惑,研究了好久,写了程序测试小灯、换线,最后直接5v接上,还是不行
而且小灯的迷惑行为止不亮这么简单,它的亮灭随机的,不断调整线的位置并且分析灯的亮灭规律我们断定——箱子坏了
没办法,找老师,老师瞄了一眼,“线有问题,换线就好……”
心态崩了,明知道换线行不通,又不好意思让老师来帮忙找问题,没办法自己来吧
就这样估计半个小时过去了,突然萄萄调线的时候动了一下电源插头
!!!!灯亮了,竟然没想过是电源接触的问题
打扰了,问题解决后
接着很快代码完成,应该是第一组完成
1 | CODE SEGMENT |
遗憾的是老师竟然没问我什么问题,
总的来说考试还算顺利,收拾书包走人…
0x05 小结
从第一次接触汇编到现在也算有点收获,虽然只是一些皮毛
但学习二进制以后还会经常和汇编打交道,现在混个脸熟,将来慢慢深入了解也不迟
暂时告别芯片和箱子,我会想你的,ノBye~