absacc.h keil软件里怎么找不到 ,如何找?

发布时间:2024-08-05  

把下面的内容保存成absacc.h即可:原因是高版本的KEIL进行了优化,将以前很多库文件去除了,需要用户手动添加

#ifndef __ABSACC_H__

#define __ABSACC_H__

#define CBYTE ((unsigned char volatile code *) 0)

#define DBYTE ((unsigned char volatile data *) 0)

#define PBYTE ((unsigned char volatile pdata *) 0)

#define XBYTE ((unsigned char volatile xdata *) 0)

#define CWORD ((unsigned int volatile code *) 0)

#define DWORD ((unsigned int volatile data *) 0)

#define PWORD ((unsigned int volatile pdata *) 0)

#define XWORD ((unsigned int volatile xdata *) 0)

#ifdef __CX51__

#define FVAR(object, addr) (*((object volatile far *) (addr)))

#define FARRAY(object, base) ((object volatile far *) (base))

#define FCVAR(object, addr) (*((object const far *) (addr)))

#define FCARRAY(object, base) ((object const far *) (base))

#else

#define FVAR(object, addr) (*((object volatile far *) ((addr)+0x10000L)))

#define FCVAR(object, addr) (*((object const far *) ((addr)+0x810000L)))

#define FARRAY(object, base) ((object volatile far *) ((base)+0x10000L))

#define FCARRAY(object, base) ((object const far *) ((base)+0x810000L))

#endif

#endif


当51单片机通过8255和锁存器74LS273来扩展IO时,经常用到头文件absacc.h。

在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD [0x0002];指向外RAM的0004h地址

再如:

#define COM8255 XBYTE[0X060FF]  //后面若出现COM8255,则单片机端口P0和P2联合输出0X060FF绝对物理地址(地址指向82C55指令寄存器)
#define PA8255 XBYTE[0X000FF]  //后面若出现PA8255,则单片机端口P0和P2联合输出0X000FF绝对物理地址(地址指向82C55的A组端口寄存器)
#define PB8255 XBYTE[0X020FF]  //后面若出现PB8255,则单片机端口P0和P2联合输出0X020FF绝对物理地址(地址指向82C55的B组端口寄存器)
#define PC8255 XBYTE[0X040FF]  //后面若出现PC8255,则单片机端口P0和P2联合输出0X040FF绝对物理地址(地址指向82C55的C组端口寄存器)

absacc.h里的宏#define CBYTE ((unsigned char volatile code   *) 0) 

value = CBYTE[0x002]; 

这句该如何理解?

A1: 

结果是将程序空间(code)地址为0x002单元的内容放到变量value中。

A2: 

替换一下考虑

value = ((unsigned char volatile *) 0)[0x02]; 

替换一下考虑

unsigned char volatile *CBYTE = 0/*NULL*/; 

这里CBYTE[0x02] = 1和*(CBYTE+0x02) = 1等价 

#define CBYTE ((unsigned char volatile code   *) 0) 是把CBYTE是指针,即code地址0 在这里,数组和指针是可以互用的。

CBYTE[0x02]也就是*(CBYTE+0x02),都是指的是地址0x02里的内容,并是unsigned char 类型的。

#define CBYTE ((unsigned char volatile code   *) 0) 

考虑下这个define定义的内容

1、把CBYTE定义成一个0(0); 

2、这个0是个地址(*号);

3、这个地址是代码段的地址(code); 

4、并是unsigned char类型的地址(unsigned char); 

5、并这个地址的内容是易逝性的(volatile); 本质上是定义了一个地址(CBYTE )。指针就是地址。地址是内存的序号。指针通过指向内存的序号访问内存。替换点是都是地址。

内部的括号用来强制类型转换用的,外部的的括号用来防止宏定义展开时错误的用法


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    的安装包目录列表如下图。软件下载方式见页底介绍。双击keil_c51v959.exe文件开始安装,默认下一步,自行选择软件安装目录。       2、然后等待一会安装过程,安装好后,桌面会多出来一个Keil......
    使用Keil下载Hex文件进STM32;  前言   初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载......
    直接来教大家方法: 第一步:分别下载 Keil C51 和MDK包,以及Keil软件的注册机。 下载的版本尽量都是最新的,建议大家下载使用Keil 5。 如上图,用到的工具有: 1.2020版keil......
    在于介绍keil单片机编程软件如何将hex下载进STM32,如何烧写hex文件以及如何直接使用二进制数。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 一、使用Keil下载Hex文件进STM32 初学......
    到电脑, 安装ST的ST-LINK Utility软件,使用STM32 ST-LINK Utility 软件下载固件(这个软件官网可以下载)。先连接后下载,要是软件识别不了你的芯片,那你......
    步:进入网站,点击“Get Software” 第二步:根据电脑系统下载相应的软件版本(这里以window版本为例),点击“Get latest”。 软件下载需要注册,按照网站的要求填写信息,下载软件......
    的是HAL库,CubeMX软件以及HAL库的优点就不再做介绍了;接下来,准备开干~ 二.软件工具下载及环境配置 1.Visual Studio Code:  直接在微软官网下载最新版软件:https......
    把没有用的管脚设置为输入三阻态。 (2)设置ROM程序存储模块的编号,目的是在将网表文件下载到FPGA后能够通过QuartusII软件访问ROM模块,能将.hex文件下载到FPGA中的ROM(其实FPGA中是......
    科技没有开发自己的单片机开发环境,是Keil C51软件来开发的。 STC单片机程序开发用的是Keil C51. (最常见的Keil 软件还有一个MDK版本,但MDK不适合STC单片机,MDK主要适用于ARM内核单片机开发使用),所以我们就需要下载......
    C51安装 1.软件获取 要在电脑上成功安装KEIL C51,首先必须要有安装包,我们可以通过万能的百度,搜索关键字“KEIL C51 下载”,上面会有很多下载渠道,也可以在KEIL的官网上下载,打开......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>