单片机8255型号大全(工作字的选择,单片机连接,初始化程序分析)

单片机8255型号大全(工作字的选择,单片机连接,初始化程序分析):工作字该如何选择? 1. 工作方式的控制字
例:设8255a的控制端口地址为00e6h,要把a口指定为方式1输入,c口上半部定为输出,b口指定为方式0输出, c口下半部定为输入,则方式控制字应是:10110001b或bih。
若将此控制字的内容写入8255a的控制寄存器,即实现了对8255a工作方式的指定(或者说完成了对8255a的初始化) ,初始化的程序段为:
mov dx, 00e6h ;控制端口地址00e6h
mov al, 0bih ;方式控制字
out dx, al ;送控制端口。
2. c口的位控字
8255a的c口具有位控功能,即允许cpu用输出指令单独对c口的某一位写“1”或“0”,c口的位控字的格式 如图所示。这是通过向8255a的控制寄存器写入(注意不是直接对c口写入)一个位控字来实现的。最高位 d7必须为“0”是 c口置位/复位控制字的特征位。d0位决定了是置“1”还是置“0”操作;d3~d1位决定了 对c口中的哪一位进行操作。
单片机8255型号大全(工作字的选择,单片机连接,初始化程序分析):单片机连接方法: 就我们平时所用到8255的功能,本人认为很简单!!
为什么这么说呢?
其实我只是把8255看成一个139译码器(2-4),cs为片选,a0,a1分别选中pa,pb,pc,d口(控制寄存器),唯一不同的是可以通过d口控制pa,pb,pc的工作方式。先来看看8255的引脚图 http://www.51hei.com/chip/161.html
首先cs=0,即p25=0,然后就是通过p21,p22分别选中几个口。所以pa的地址可以0000-d9ff
同理pb:dbff,pc:ddff,con:dfff。
通过配置d口来控制p口的功能,不管三七二十一,都配置成输出就可以(方式一)。
#include 《absacc.h》
#define a8255_pa xbyte[0xd1ff] /*pa口地址*/
#define a8255_pb xbyte[0xd2ff] /*pb口地址*/
#define a8255_pc xbyte[0xddff] /*pc口地址*/
#define a8255_con xbyte[0xdfff] /*控制字地址*/
a8255_con=0x81;
以上是例子的程序里面配置的,由于开始没有看到这个头文件,看到这程序感觉有点懵,后面我看了头文件的东西,哈哈,原来是这么回事啊!当然他头文件里面有很多东西,其实只有只一句起作用:#define xbyte ((unsigned char volatile xdata *) 0)
幸亏看arm的时候见过这东西,不然真的不知道怎么办了!!!!
#define xbyte ((unsigned char volatile xdata *) 0)
定义 :xbyte 为 指向 外部 地址空间
unsigned char 数据类型的指针,指针值为0(我也不知道为什么为char型)
至于 volatile的作用就是让编译器不至于优化掉它的操作(不是特别理解)
这样,可以直接用xbyte[0xnnnn]或*(xbyte+0xnnnn)访问外部ram了。
所以我们用8255的时候可以不用头文件。
#define xbyte ((unsigned char volatile xdata *) 0)
#define a8255_pa xbyte[0xd1ff] /*pa口地址*/
#define a8255_pb xbyte[0xd2ff] /*pb口地址*/
#define a8255_pc xbyte[0xddff] /*pc口地址*/
#define a8255_con xbyte[0xdfff] /*控制字地址*/
只要把上面五行代码拷贝进去就行了!unsigned char 数据类型的指针,指针值为0(我也不知道为什么为char型)
这是c语言中的强制转换,转换成什么类型根据要转换成的目标的单位长度,单片机是8位的,都是以字节为单位,所以转换成char。在arm中,一般就要转成unsigned int(4字节)。当然,如果操作的外设的数据宽度是16bits,就要转换成unsigned short
单片机8255型号大全(工作字的选择,单片机连接,初始化程序分析):初始化程序分析: 1、地址确定因为a10a9a8a7a6a5a4a3=01010011,a2a1=11为控制字端口,a2a1=10为c口,a2a1=01为b口,a2a1=00为a口,a0为0,所以8255a地址范围为24ch~24fh。
2、控制字确定因为a口为方式0输出,b口为方式0输入,所以控制字为10000010b=82h3、初始化程序mov al,82hmov dx,24fhout dx,al附8255知识:8255是微机并行接口芯片。8255是可编程i/o口扩展芯片。对8255输入不同的指令可改变i/o口的工作方式。8255与单片机系统连接方式简单,工作方式由程序设定,图2为8255的引脚图。8255内部有4个寄存器:分别为寄存器a、b、c和控制寄存器。a、b、c寄存器的数据就是引脚pa7~pa0、pb7~pb0、 pc7~pc0上输入或输出的数据。而控制寄存器的数据则表明pa、pb、pc的工作方式。通过cs、a0、a1、rd和wr对4个寄存器进行操作。1)cs为低电平时选通8255;2)a1、a0为地址选通;3)rd和wr为读、写信号:rd为低、wr为高时为读方式,rd为高、wr为低时为写方式。4)d0~d7为数据口。向控制寄存器写入不同的数据可以使8255工作在三种不同的方式下。这里只介绍应用最多的方式0。方式0下8255的pa、pb及pc口上半部分(pc7~pc4)和下半部分(pc3~pc0)中任何一个端口都可以设定为输入或输出,pc口还可以进行位操作。控制寄存器各位的含义如图3所示。 slpc-24中8255工作在方式0。pa、pb为输入口、pc为输出口,对控制寄存器写入的数据为10010010b,即92h。

HK32MCU应用笔记(二)| 国外品牌采用航顺HK32F030R8T6代替出现串口不兼容解决方法
又是一年618,你知道攀升电脑销冠的真正秘诀在哪吗?
IBM:将向所有云平台开放自家Watson人工智能系统
三星Q2季度5nm EUV投入量产,将更多关注消费计算领域
TWS耳机市场百花齐放,2021年哪些款型是你的最爱?
单片机8255型号大全(工作字的选择,单片机连接,初始化程序分析)
寄生电感的优化
人工智能参加高考作文PK著名作家,AI得了多少分?
最大尺寸量产OLED电视画质参数对比
磁性元器件行业协会第三届第三次会员大会圆满落幕
双面现场动平衡操作步骤
创意RGBLED的制作
人形机器人的发展及其趋势
基于AR领域内主要公司的策略,以及AR在产业链上下游一些梳理工作
因与大华产生买卖合同纠纷,中威电子被冻结1622.16万元
动力电池系统失效模式的分类
三角波产生电路 三角波发生电路
中国电信正在计划采集10G及以下的光模块来推动现网应用
LED原材料涨价 再次引爆倒闭潮?
什么是Matter认证?