8086cpu 可编程接口技术(一)

news/2024/12/21 21:59:50/

可编程接口技术

    • 一,并行接口(重难点)
      • 1,8255A 的结构和功能(重点)
        • 1,输入/输出端口
        • 2,读/写控制逻辑
        • 3,A组/B组控制电路
        • 4,数据总线缓冲器
      • 2,8255A 的工作方式与应用(难点)
        • 1,8255A的控制字
        • 2,8255A的工作方式

一,并行接口(重难点)

  • 并行接口是指CPU与外设之间的信息传输是多位同时进行的。
  • 锁存器、缓冲器、收发器都是一种并行接口,但它们都不是可编程的。
  • 8255 是lntel 公司为80x86系列CPU生产的8位通用可编程并行输入/输出接口芯片,可作为任何一个与TTL兼容的并行数字设备与微机间的接口。
  • 40脚DIP,单一+5V电源,TTL电平。

1,8255A 的结构和功能(重点)

image-20211130143931568

image-20211130144246736

1,输入/输出端口

  • A口、B口通常作为独立的I/O端口使用,C口也可以作为一般的I/O端口使用。
  • 当A口、B口作为应答式的l/O口使用时,C口分别用来为A口、B口提供应答控制线。

2,读/写控制逻辑

image-20211130144855631

非CS:片选信号,低电平有效

非RD:读信号,低电平有效
非WR:写信号,低电平有效
RESET:复位信号,高电平有效。清除所有控制寄存器内容,并将各端口都置成输入方式

A1、A0:8255A 片内端口寻址线。

image-20211130145152816

一道例题辅助理解:

假设8255A端口B已设置为输出端口,口地址为1231H,端口C已设置为输入端口,口地址为1232H,写出指令序列满足以下要求:
当开关合上,上面4个灯亮,下面4个灯灭,当开关打开,上面6个灯灭,下面2个灯亮。

image-20211130152839652

分析:检测开关的状态只要读取PC 口判断PC1即可

程序代码如下:

	MOV DX,1232H
A1:	IN AL,DX	;读取PC口检测开关状态TEST AL,00000010B	;测试PC1是0还是1JNZ	A2	;ZF=0,说明PC1=1MOV AL,00001111B	;PC1=0,开关合上MOV DX,1231HOUT DX,AL	;PB口输出数据JMP	A1
A2: MOV AL,11000000B	;PC1=1,开关打开MOV DX,1231HOUT	DX,AL	;PB口输出数据JMP	A1

3,A组/B组控制电路

  • 接受来自CPU的读/写控制信号和CPU送入的控制字,然后分别决定各端口的功能。
  • 还可以对C口的某位实现“置0”或“置1"的操作。

4,数据总线缓冲器

双向三态的8位缓冲器,可与数据总线(D0~D7)直接相连。

2,8255A 的工作方式与应用(难点)

8255A 有三种工作方式:

方式0、方式1、方式2

每个端口允许的工作方式:

  • 端口A:方式0、方式1、方式2
  • 端口B:方式0、方式1
  • 端口C:方式0

1,8255A的控制字

什么叫控制字? 8255A有三种工作方式,每个端口以哪种方式来工作,作为输入接口还是输出接口,取决于CPU对8255发出的命令。CPU对8255发出命令是通过对8255的控制口写控制字实现的。

image-20211130154405104

A组/B组控制电路有两种功能:

  • 设置各端口的工作方式。
  • 对C口的某位实现“置0”或“置1”的操作。

因此,8255A的控制字有两种:

  • 工作方式控制字
  • C口置位/复位控制字

8255A只有一个控制口,当接收到CPU发来的命令时,它是如何区分该控制字的种类呢?它是通过控制字的最高位识别的,当最高位=1,工作方式控制字;最高位=0,C 口置位/复位控制字

  • 1,工作方式控制字(D7=1)(需要记住此结构)

    image-20211130154947771

    小例题:设某8255A的控制寄存器口地址为B6H,各端口工作方式如下:A口方式0、输入端口;B口方式0、输出端口;C口高4位为输出口,低4位为输入口。试编写该8255A接口的初始化程序。

    //根据上面的格式,写出工作方式控制字为 10010001B=91H
    初始化程序如下:
    MOV AL,91H	;CPU控制字91H经AL输出
    OUT 0B6H,AL	;送到8255A 控制寄存器中
    
  • 2,C 口置位/复位控制字(D7=0)

    可以设置C 口某位输出高电平还是低电平

    image-20211130160006038

    小例题:设某8255A的控制寄存器口地址为303H,编写程序,将C口的PC7位置0,PC6位置1。

    MOV DX,303H
    MOV AL,00001110B	;置PC7=0的控制字
    OUT DX,AL	;控制字送8255A控制寄存器中
    MOV AL,0001101	;置PC6=1的控制字
    OUT DX,AL	;控制字送8255A控制寄存器中
    

2,8255A的工作方式

  • (1)工作方式0(基本输入/输出)

    • A口(8位)、B口(8位)、上C口(4位)、下C口(4位)可分别独立定义为输入或输出
    • 输出可锁存,输入有缓冲无锁存
    • C口还有按位置位/复位的能力
    • 不能采用中断方式,但可采用查询方式(C口线可作联络信号)

    小例题image-20211130163134851

    image-20211130165303077

    分析:

    • 1,端口A作为输出端口,工作于方式0,查询式输出。
    • 2,端口C作为状态端口。
    • PC7用于8255A选通打印机,低电平有效。
    • PC2用于打印机送给8255A的状态信号,高电平表示忙,低电平表示空闲。

    设8255A端口地址为0380H~0383H,待打印字符的存放首地址为DS: 0300H,字符数为100个。

    ;8255A初始化程序
    BEGIN:	MOV DX,0383MOV AL,10000001	;A口方式0输出,PC7~PC4输出,PC3~PC0输入OUT DX,ALMOV AL,00001111B	;送C口置位控制字,置PC7=1,STB=1,初始状态为高电平OUT DX,AL;打印机驱动程序MOV SI,0300H	;待打印字符存放内存的首地址MOV CX,100	;打印字符个数
    CONP:	MOV DX,0382H
    LPST:	IN AL,DXTEST AL,00000100B	;检测PC2(BUSY)JNZ	LPST	;若BUSY=1,等待;反之,则向下执行MOV AL,[SI]	;从内存中取等打印的数据MOV DX,0380H	;待打印数据输出至8255A口OUT DX,ALMOV AL,00001110BMOV DX,0383HOUT DX,AL	;置PC7=0,产生选通信号NOP	;使STB信号低电平有一定宽度NOP	;保证传送至打印机数据稳定NOPMOV AL,000011111B	;置PC7=1,即STB=1高电平,利用STB上升沿将数据打入到打印机数据缓冲区中OUT DX,ALINC SI	;修改指针,指向下一次欲打印的数据LOOP CONP	;未打完,继续HLT	;所有数据打印完毕,暂停
    
  • (2)工作方式1 (选通输入/输出)

    • A口(8位)、B口(8位)适用,C口不能工作于方式1
    • A口/B口可分别定义为输入或输出
    • 支持查询、中断方式传送数据
    • C口部分位作为控制信号和状态信号
    • C口其余位可独立置位/复位

    输出

    image-20211130165643281

    image-20211130165800657

    image-20211130165859593

    输入

    image-20211130165952223

    image-20211130170024860

    image-20211130170053155

    image-20211130170113901

    端口A 与端口B 的比较

    image-20211130170230420

  • (3) 工作方式2 (双向输入输出)

    image-20211130170312652


http://www.ppmy.cn/news/768107.html

相关文章

你们口中的接口是什么

先从一个通俗的解释看起 (原文:C# 接口《通俗解释》) 如果你的工作是一个修水管的,一天客户找上你让你帮装水管,但是有个要求,就是客户喜欢管子是三角形的。 你立马买了三角形的水管回来,在墙…

utf-8中一个汉字是3个字节,你知道吗?

问题导入: 今天学习了mysql中的函数,length(字符串),计算字符串长度函数,返回字符串的字节长度。 select length(‘abc’); 查询的结果是3。 select length(‘中国’); 查询的结果是6。 第二个查询为什么是6&#xff0…

并行I/O 接口、8255A控制字与初始化编程、工作方式与时序

文章目录 第十章 并行I/O 接口一、可编程并行I/O接口芯片8255A的内部结构及引脚端口地址方式0:基本型输入/输出方式,ABC口都适用方式1:选通型输入/输出方式:查询方式或中断方式,只有AB口可以作为联络信号方式2:双向数据传送方式二、8255A控制字与初始化编程8255的两个控制…

日本的出前一丁是什么意思啊

出 前 一 丁 外卖一份 这个牌子的泡面大家一定不陌生吧 小时候你是不是也一头雾水 出前一丁? 是吃之前“叮”一下吗 问了身边的朋友 都以为是日本有个人叫出前一丁 其实他的意思是 外卖一份 出前(でまえ) demae 外卖 いっちょう icchyou 一份…

什么是口子查?

口子查是什么?今天我就给大家分享一些关于国外问卷调查口子查这方面的干货。口子查是不同于站点查跟渠道查,不仅付款方式不同,题目出现的方式也不同。 一般一家公司想要做一份调查的话,通常会有两个选择:选择一&#…

或是独体字吗_独体字结构 独体结构的字有哪些字?

相关解答一:独体结构字 独体结构字是针对字的结构而言的,独体字的构成大致有三种情况:(1)由基本笔画构成一个部件独立成字的。如:“一、乙”(1画),“人、几”(2画),“口,山”(3画),“…

接口(上)

🐷1.接口的概念 🐱‍🚀2.接口的语法规则 💚3.接口的使用 🚀4.接口的特性 🎆5.实现多个接口 🐶6.接口间的继承 🎊7.接口使用的实例 1.什么是接口呢??&a…

IO 口的位操作实现

一、概念 该部分代码在 sys.h 文件中,实现对 STM32 各个 IO 口的位操作,包括读入和输出。当然在这些函数调用之前,必须先进行 IO 口时钟的使能和 IO 口功能定义。此部分仅仅对 IO 口进 行输入输出读取和控制。 位带操作简单的说&…