微机原理与接口技术 | 四种可编程芯片的编程要点不完全记录

    技术2024-07-08  90

    注:未记录芯片的引脚和具体工作方式,主要记录芯片的各控制字或命令字的初始化编程要点,其字格式也并未给出,可翻阅书籍查找。

    CONTENTS

    可编程中断控制器Intel 8259A可编程定时/计数器芯片8253可编程并行接口芯片8255A可编程串行接口芯片8251A具体代码的编写方式(汇编,可先行看此)

    写入到芯片端口 OUT指令 从芯片端口读 IN指令

    1.可编程中断控制器Intel 8259A

    对应写入的芯片端口地址:(小—偶地址,大—奇地址)

    ICW1ICW2ICW3ICW4OCW1OCW2OCW3小大大大大小小

    a.初始化编程:根据使用要求,在正常操作开始前写入 写入顺序(要考虑题意是否需要此命令字):ICW1 -> ICW2 -> ICW3 -> ICW4

    芯片控制初始化命令字ICW1:需要ICW4?单、多片8259?电平、边沿? 中断类型初始化命令字ICW2:一般写入最小的中断类型号 主 / 从片初始化命令字ICW3:主从格式不同 方式控制初始化控制字ICW4:嵌套?缓冲?EOI?88/85?

    b.工作方式编程:OCW1、OCW2、OCW3 %根据使用要求,在工作开始前或工作期间写入皆可

    屏蔽操作命令字OCW1:对应位屏蔽或开放中断 中断方式操作命令字OCW2:中断结束?优先级循环? 状态操作命令字OCW3:读IRR、ISR或状态寄存器状 注:当需要读IMR时,按我的做题经验直接从大地址(奇地址)读

    2.可编程定时/计数器芯片8253

    芯片端口地址: a.单字节,eg : 40H 41H 42H 43H b.双字节,eg:310H 312H 314H 316H

    计数器0(通道0)计数器1(通道1)计数器2(通道2)控制端口40H41H42H43H310H312H314H316H

    一个控制字:初始化时先写控制字(写入控制端口),再送计数初值(写入相应计数器的端口)。 要根据计数初值字节数来选用具体的读写格式和计数制。 当计数初值为两字节时,先写入低字节再高字节。

    3.可编程并行接口芯片8255A

    芯片端口地址:eg : 40H 41H 42H 43H

    A口B口C口控制口40H41H42H43H

    a.方式选择控制字:写入控制口 b.C口置位/复位控制字:写入控制口,对C端口任意位置复位 有需求的话一般先a后b

    4.可编程串行接口芯片8251A

    一个控制口地址(先写a后b) a.方式控制字:写入控制口,若有同步字符,则需要在此后写入字符,同样写入控制口 b.命令控制字:写入控制口 c.状态字

    5.具体代码的编写方式

    eg.控制字为10110000B,写入控制口地址为单字节34H

    MOV AL,10110000B OUT 34H,AL

    eg.控制字为10110000B,写入控制口地址为双字节310H,要用DX做跳板

    MOV DX,310H MOV AL,10110000B OUT DX,AL

    eg.读取指定端口的内容如上,单字节直接读,双字节需要借助DX

    IN AL,30H ;单字节端口 MOV DX,310H ;双字节端口 IN AL,DX

    中断服务程序普通EOI命令:

    MOV AL,20H OUT 小地址,AL IRET

    中断服务子程序的装载(借助DOS功能调用装载),即写入中断向量表

    MOV DS,n_CS ;n的基地址,基地址为16位时要借助AX跳板 MOV DX,n_IP ;n的偏移地址 MOV AL,n ;中断类型号n MOV AH,25H INT 21H
    Processed: 0.010, SQL: 9