本文主要是介绍微机实验考试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
本以为微机实验会很难很难(因为周围有几个同学都说没做完,emmm),于是就一直在搜集前面同学考过的题目来看,复习得神经兮兮的。。。结果手气太好,抽到一条类似的题目,反正吧,看了这么多题目,感觉这最后的考试就是大杂烩,把以前做过的芯片做个排列组和,感觉就是他的题库了。。。就是8255,8253,0832,0809加上4*4键盘,还有各种奇葩输出,输出到LED,蜂鸣器,直流电动机等等
正文
不多说,先放上一波考试题目
我比较懒,就随意记录一下思考过程吧,画的脑图太丑,就不挂上来了
首先要实现简单的硬延时跑马灯,这里就要涉及到8253以及8255,移动到第6位的时候就要开启跳转了,跳转到蜂鸣器,这里又得用到一次8253延时,响完之后就得关闭,然后重新跳转到跑马灯的实现过程中了。。思路很清晰,LED->蜂鸣器->LED
于是在队友的帮助下开始写代码。。代码如下:
CODE SEGMENT
ASSUME CS:CODE
START:MOV AL,35H MOV DX,293H ;控制口OUT DX,AL ;输出控制字MOV AL,00H ;低字节MOV DX,290H ;通道0口OUT DX,ALMOV AL,20H ;高字节OUT DX,AL;级联MOV AL,77H MOV DX,293H OUT DX,ALMOV AL,00HMOV DX,291H ;通道1口OUT DX,ALMOV AL,20HOUT DX,ALMOV DX,283H ;8255控制口MOV AL,10010000B OUT DX,ALMOV BL,80H ;初始化
LIGHT1:MOV DX,280H ;A口输入IN AL,DXAND AX,01H ;和00000001与保留最低位CMP AL,01H ;比较最低位JZ DOWN ;高电平不亮MOV DX,282H ;低电平时C口输出MOV AL,BLOUT DX,AL ;输出TEST AL,4H ;检测是否到达第六位JNZ XIANG ;是第六位的话就响
WAN: ROR BL,1
ON:MOV DX,280H ;A口输入IN AL,DXAND AX,01H CMP AL,01H ;比较最低位是否为1JNZ ON
DOWN:MOV DX,280H ;A口输入IN AL,DXAND AX,01HCMP AL,0H ;比较最低位是否为0JNZ DOWN JMP LIGHT1 ;最低位为0时跳到LIGHT1
XIANG: MOV DX,281HMOV AL,01HOUT DX,ALMOV AL,35H MOV DX,293H ;控制口OUT DX,AL ;输出控制字MOV AL,00H ;低字节MOV DX,290H ;通道0口OUT DX,ALMOV AL,20H ;高字节OUT DX,AL;级联MOV AL,11110001B MOV DX,293H OUT DX,ALMOV AL,00HMOV DX,291H ;通道1口OUT DX,ALMOV AL,10HOUT DX,ALCHK: MOV DX,280HIN AL,DXTEST AL,01H ;检测是否到达高电频JZ CHK ;不是就继续监测,是就关闭蜂鸣器MOV AL,0HMOV DX,281HOUT DX,AL JMP WAN ;然后跳回跑马灯执行程序CODE ENDS
END START
结语
先得谢谢两位队友的鼎力相助,因为他们,我完成了实验报告,因为本人不喜欢写实验报告,哈哈哈。。。
从这次考试里面又加深一波自己对于8253工作与各种方式下的应用,在这次考试里面确实只能用方式3或者是方式0,方式4是不能用的,方式4还得处理GATE信号会有点麻烦,一般都不会使用,所以这里推测期末考试很大可能性考方式0,方式2以及方式3?常规期末考试押题套路,猥琐地笑了。。。在这里方式2是不能用的,会少了一个CLK,这还是老师答辩的时候发现我的问题,emmmm….
顺便吐槽一下每次跟微机老师交流都会小紧张,语速极其快的问答让我的大脑超频工作,这样才能跟上他的节奏,这也从侧面反映了自己基础还是不牢靠,赶紧抓紧时间复习,下周五得考试了
欢迎大家多来踩踩我的博客:https://0verwatch.top
这篇关于微机实验考试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!