⚠本篇文章参考网址1:https://wenku.baidu.com/view/e04ce53c42323968011ca300a6c30c225901f099.html
⚠本篇文章参考网址2:
https://blog.csdn.net/qq_43207916/article/details/101175328
目测应该是个17级的大佬?
⚠感谢我可爱的室友们在实验过程中对我的帮助 + 一部分学习资料的提供
⚠感谢ZYLXGG
⚠感谢大佬们在实验课程中的扶贫工作
害,不赞同你们单纯的抄袭行为嗷,希望能帮你们解决一些实际问题,但不希望你们的实验报告完全照搬嗷,还是要看懂原理,不然考试咋搞啊,这也是我头秃的问题,唉😔(补一句,大数据不学这个😭...//恶龙咆哮!)
关于这些代码,其实可以把网址存在txt文本里,然后就可找到这个专题啦,接着搬搬代码就可以啦(啊,我什么都没说,要自己肝代码!💪),也不用每次都提前搞代码,或者手机看网页,手动抄代码,电脑大屏 + ctrl c/v 香香甜甜😏!
一、实验题目:
1.8255输入、输出实验。(参考书上214页基本输入输出应用举例)
2.利用8255设计跑马灯(软延时)。
3.带有控制键的跑马灯。(参考实验一中的跑马灯 [实验1-2] )
二、实验目的:
熟悉汇编语言编程环境,掌握8255芯片工作原理、电路设计及利用汇编语言编写接口软件。
三、实验电路图
I/O译码地址选择接口:
8255芯片:Y1作为片选地址
Y1:288H-28FH
288H -> A口
289H -> B口
28AH -> C口
28BH -> 控制口
实验中我们选择:B口作为输入,C口作为输出
按照电路图红色的地方接线就可,其余线不用接,注意接线的对应关系,尤其是8根线的那2个✊
实验1实物图.jpg
四、软件设计程序流程图
实验1-1:8255输入、输出实验
实验1-2:利用8255设计跑马灯(软延时)
实验1-3:带有控制键的跑马灯
五、实验软件代码(加注释)
实验1-1:8255输入、输出实验(参考书上214页基本输入输出应用举例)
CODE SEGMENT;段定义语句
ASSUME CS:CODE;段寄存器分配
MOV DX, 28BH;
MOV AL, 10000010B;根据书上207页图6.10
OUT DX, AL;写端口用OUT指令,将控制字写入控制口
IN_PORTA:MOV DX, 289H
IN AL, DX;读端口用IN指令,读B口(289H,也即逻辑电平开关)入AL
MOV DX, 28AH
OUT DX, AL;写端口用OUT指令,将AL中的信息写入C口(DX)
JMP IN_PORTA;无条件转移语句,转移回IN_PORTA循环
CODE ENDS;代码段定义语句
END START
实验1-2:利用8255设计跑马灯(软延时)
CODE SEGMENT
ASSUME CS:CODE;段寄存器分配
START: MOV DX, 28BH;控制字寄存器
MOV AL, 10000010B;控制字寄存器端口,根据书上207页图6.10
OUT DX, AL;写端口用OUT指令,将控制字写入控制口
MOV DX, 28AH;C口输出
MOV AL, 00000001B;跑马灯从L0开始亮(AL设置每次循环灯从何处亮)
LEFT: OUT DX, AL;写端口用OUT指令,将AL中的信息写入C口(DX)
ROL AL, 1;循环左移一位
MOV BX, 20H;给BX赋初值20H
DELAY: MOV CX, 65535;双层循环,用来延时,否则跑马灯跑太快,无法观察(滑稽脸)
LOOP1: DEC CX;CX=CX-1,CX自减1
CMP CX,0;CX-0是否为0?
JNZ LOOP1;否,继续循环LOOP1
DEC BX;BX=BX-1,BX自减1
JNZ DELAY;否(若 BX ≠ 0),继续循环DELAY
JMP LEFT;无条件转移语句,循环检测该程序
CODE ENDS
END START
实验1-3:带有控制键的跑马灯(参考本实验中的 8255输入、输出 [实验1-1] 和 本实验中的 跑马灯 [实验1-2] )
CODE SEGMENT;段定义语句
ASSUME CS:CODE;段寄存器分配
START: MOV DX,28BH
MOV AL,10000010B;写入控制字,A口输出,工作方式为方式0,C口输出,B口输入,工作方式为方式0
OUT DX,AL;将控制字送入控制口
MOV AH,00000001B;跑马灯从L0开始亮(AH设置每次循环灯从何处亮)
NEXT: MOV DX,289H;从B口输入
IN AL,DX;读端口用IN指令,读B口(289H,也即逻辑电平开关)入AL
CMP AL,00000010B;测试开关K1状态,AL中的值 减去 02H(00000010B)
JNZ NEXT;否(若K1不为高电平),跳到NEXT,实现对跑马灯暂停的控制
MOV AL,AH;AH(跑马灯从L0开始亮)将信息给AL
MOV DX,28AH;指向C口
OUT DX,AL;从C口输出AL中的值(跑马灯此时的值)
ROL AL,1;AL中的值左移一位
MOV AH,AL;将当前AL的值保存于AH中
MOV BX,500H;将500H存入BX中,双层循环延时
DELAY1: MOV CX,12345;将12345存入CX
DELAY2: LOOP DELAY2;循环DELAY2,每循环一次,CX自减1,直至CX = 0
DEC BX;BX=BX-1,BX自减1
JNZ DELAY1;若BX ≠ 0,则跳至DELAY1
JMP NEXT;无条件转移语句,跳至NEXT
CODE ENDS
END START
六、实验结果
- 实验1-1结果:利用8255芯片完成了输入、输出实验。
- 实验1-2结果:利用8255芯片完成了软延时的跑马灯运行。
- 实验1-3结果:利用8255芯片完成了带有控制键的跑马灯。
七、实验小结
实验从最初的一头雾水到最后的豁然开朗(感觉并没有),这次的实验课将理论和实践结合在了一起,嗯,这是一次不错的体验(真的吗???😭)!
网友评论