找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2103|回复: 1
打印 上一主题 下一主题
收起左侧

8253、8255、8259中断控制器实验汇编代码+原理图

[复制链接]
跳转到指定楼层
楼主
;代码如下

DATA    SEGMENT                             ;数据段
    MESS   DB    'PRESS ANY KEY TO EXIT',0AH,0DH,'$'
    TAB  DB   3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,76H
    INT_SEG    DW    ?              
    INT_OFF    DW    ?              
    INTSOR     DB     ?              
    FLA  DB  0
DATA    ENDS

STACK    SEGMENT                           ;堆栈段
    STA    DW    512    DUP(?)
STACK    ENDS

CODE    SEGMENT                             ;代码段
    ASSUME    CS:CODE,DS:DATA,SS:STACK

START:MOV    AX,DATA            
    MOV    DS,AX
    MOV    AX,STACK
    MOV    SS,AX
    MOV    SP,SIZE STA
    MOV    CL,0
    MOV    DX,0283H                           8253和8255的初始化         
    MOV    AL,36H                  
    OUT    DX,AL
    MOV    DX,0280H                          ;8253初始化
    MOV    AL,0E8H                  
    OUT    DX,AL
    MOV    AL,03H                  
    OUT    DX,AL
    MOV    DX,0283H                 
    MOV    AL,76H                  
    OUT    DX,AL
    MOV    DX,0281H                 
    MOV    AL,0E8H
    OUT    DX,AL
    MOV    AL,03H
    OUT    DX,AL
   
    MOV    DX,028BH                          ;8255初始化
    MOV    AL,90H
    OUT    DX,AL
     
    MOV AL,0BH                                   
    MOV AH,35H                                ;取该中断向量
    INT 21H
    MOV INT_SEG,ES                        ;保存向量段基址      
    MOV INT_OFF,BX                        ;保存向量偏移量
    CLI                                                ;修改向量前关中断
    PUSH DS
;填写中断向量表               
    MOV AX,SEG INT_PR
    MOV DS,AX
    MOV DX,OFFSET INT_PR
    MOV AL,0BH
    MOV AH,25H               
    INT 21H
    IN  AL,21H
    MOV INTSOR,AL                          ;保护原中断屏蔽字
    AND AL,0F7H                              ;开放中断请求
    OUT 21H,AL                                 ;开中断
    POP    DS
    STI                     
    LEA    DX,MESS                 
    MOV    AH,09H
    INT    21H
    STI                           
   
LOOPA:   
    HLT
    MOV    AH,01H                  
    INT    16H
    JZ     LOOPA                  
    CLI
    MOV    AX,INT_SEG                  
    MOV    DS,AX                            ;DS指向向量段基址
    MOV    DX,INT_OFF                   ;DX指向向量偏移量      
    MOV    AL,0BH
    MOV    AH,25H                          ;恢复中断向量   
    INT    21H
    MOV    AL,INTSOR                    ;恢复原中断屏蔽字
    OUT    21H,AL
    STI
  
   
  ;中断子程序
INT_PR   PROC                                                               
    PUSH DS
    STI

    MOV DX,0288H              
    IN  AL,DX
    CMP AL,0FH               
    JA LOP1                                    ;大于0fh跳转至lop1  
    MOV BX, OFFSET  TAB            ;display 低四位
    XLAT                                         ;查表
    JMP LOP3
         
LOP1:    CMP FLA,0
         JNZ LOP2                  
         MOV AL,76H                       ;数码管置为 'H'         
         MOV DX,0289H
         OUT DX,AL
         INC FLA
         JMP LOP4
        
LOP2:    MOV CL,4                          ;display 高四位
         SHR AL,CL
         MOV BX,OFFSET TAB
         XLAT                                       ;查表
         MOV DX,0289H              
         OUT DX,AL
         DEC FLA
         JMP LOP4
         
LOP3:    MOV DX,0289H
         OUT DX,AL


LOP4:    CLI
         POP DS
         MOV AL,20H                       
         OUT 20H,AL
         
         STI                                           ;开中断         
         IRET                     
INT_PR   ENDP


CODE     ENDS
         END START


电路图如下






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:328014 发表于 2020-7-12 13:11 | 只看该作者
楼主你好 能分享一下Proteus仿真工程文件吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表