微机实验考试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011377996/article/details/80957490

前言

本以为微机实验会很难很难(因为周围有几个同学都说没做完,emmm),于是就一直在搜集前面同学考过的题目来看,复习得神经兮兮的。。。结果手气太好,抽到一条类似的题目,反正吧,看了这么多题目,感觉这最后的考试就是大杂烩,把以前做过的芯片做个排列组和,感觉就是他的题库了。。。就是8255,8253,0832,0809加上4*4键盘,还有各种奇葩输出,输出到LED,蜂鸣器,直流电动机等等

正文

不多说,先放上一波考试题目
Pe5shT.png
我比较懒,就随意记录一下思考过程吧,画的脑图太丑,就不挂上来了
首先要实现简单的硬延时跑马灯,这里就要涉及到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,AL
    MOV AL,20H     ;高字节
    OUT DX,AL
                   ;级联
    MOV AL,77H     
    MOV DX,293H    
    OUT DX,AL
    MOV AL,00H
    MOV DX,291H    ;通道1口
    OUT DX,AL
    MOV AL,20H
    OUT DX,AL

    MOV DX,283H    ;8255控制口
    MOV AL,10010000B     
    OUT DX,AL
    MOV BL,80H     ;初始化
LIGHT1:
    MOV DX,280H    ;A口输入
    IN AL,DX
    AND AX,01H     ;和00000001与保留最低位
    CMP AL,01H     ;比较最低位
    JZ DOWN        ;高电平不亮
    MOV DX,282H    ;低电平时C口输出
    MOV AL,BL
    OUT DX,AL      ;输出
    TEST AL,4H      ;检测是否到达第六位
    JNZ XIANG       ;是第六位的话就响
WAN:    ROR BL,1       
ON:
    MOV DX,280H    ;A口输入
    IN AL,DX
    AND AX,01H     
    CMP AL,01H     ;比较最低位是否为1
    JNZ ON        
DOWN:
    MOV DX,280H    ;A口输入
    IN AL,DX
    AND AX,01H
    CMP AL,0H      ;比较最低位是否为0
    JNZ DOWN        
    JMP LIGHT1     ;最低位为0时跳到LIGHT1
XIANG: MOV DX,281H
     MOV AL,01H
     OUT DX,AL

    MOV AL,35H     
    MOV DX,293H    ;控制口
    OUT DX,AL      ;输出控制字
    MOV AL,00H     ;低字节
    MOV DX,290H    ;通道0口
    OUT DX,AL
    MOV AL,20H     ;高字节
    OUT DX,AL
                   ;级联
    MOV AL,11110001B    
    MOV DX,293H    
    OUT DX,AL
    MOV AL,00H
    MOV DX,291H    ;通道1口
    OUT DX,AL
    MOV AL,10H
    OUT DX,AL

CHK:    MOV DX,280H
    IN AL,DX
    TEST AL,01H ;检测是否到达高电频
    JZ CHK       ;不是就继续监测,是就关闭蜂鸣器
     MOV AL,0H
     MOV DX,281H
     OUT DX,AL     
     JMP WAN     ;然后跳回跑马灯执行程序


CODE ENDS
END START 

结语

先得谢谢两位队友的鼎力相助,因为他们,我完成了实验报告,因为本人不喜欢写实验报告,哈哈哈。。。
从这次考试里面又加深一波自己对于8253工作与各种方式下的应用,在这次考试里面确实只能用方式3或者是方式0,方式4是不能用的,方式4还得处理GATE信号会有点麻烦,一般都不会使用,所以这里推测期末考试很大可能性考方式0,方式2以及方式3?常规期末考试押题套路,猥琐地笑了。。。在这里方式2是不能用的,会少了一个CLK,这还是老师答辩的时候发现我的问题,emmmm….
顺便吐槽一下每次跟微机老师交流都会小紧张,语速极其快的问答让我的大脑超频工作,这样才能跟上他的节奏,这也从侧面反映了自己基础还是不牢靠,赶紧抓紧时间复习,下周五得考试了


欢迎大家多来踩踩我的博客:https://0verwatch.top

猜你喜欢

转载自blog.csdn.net/u011377996/article/details/80957490