keil absacc.h头文件volatile的问题 [问题点数:50分]

Bbs1
本版专家分:0
结帖率 0%
Bbs7
本版专家分:16445
版主
Blank
红花 2013年11月 硬件/嵌入开发大版内专家分月排行榜第一
Blank
黄花 2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
Blank
蓝花 2013年10月 硬件/嵌入开发大版内专家分月排行榜第三
2013年6月 硬件/嵌入开发大版内专家分月排行榜第三
2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
Bbs1
本版专家分:0
单片机c语言XBYTE的使用
大家都知道一般的并行扩展总线---地址总线,数据总线和控制总线一般是相互独立的。但单片机由于受引脚的限制,P0口为低8位地址/数据复用口。其读写时序符合intel8080控制时序。使用外部扩展时,wrrd 等控制引脚不需要特殊配置,只使用指令来区分是否访问外部扩展的存储空间或者外部io设备。当使用 movx等这样的指令时,单片机就会自动产生扩展总线做需要的时序。不需要编程者编程实现。但是,有一个问
80C51常用头文件
80C51常用<em>头文件</em>:reg51.h、math.h、ctype.h、stdio.h、stdlib.h、<em>absacc.h</em>、intrins.h。 (1)reg51.h 定义51系列单片机特殊功能寄存器和特殊位。 (2)<em>absacc.h</em> 访问绝对地址<em>头文件</em>。当用绝对地址访问内部RAM(data)、外部RAM的一页(pdata)、整个外部RAM(xdata)和ROM(cod
C语言关键字volatile(不知道的别说你是干嵌入式的)
我在网上看见一个帖子说回答不出这个<em>问题</em>的人是不会被雇佣的。这是区分C程序员和嵌入式系统程序员的最基本的<em>问题</em>。搞嵌入式的家伙们经常同硬件、中断、RTOS等打交道,所有这些都要求用到<em>volatile</em>变量。下面来看下面试题中提到的<em>问题</em>(答案我从网络整理,以便复习): 关键字<em>volatile</em>有什么含意?并给出三个不同的例子。 <em>volatile</em>的本意是“易变的” 由于访问寄存器的速度要快过RAM
提高volatile并发效率
一、著名的Java并发编程大师Doug lea在JDK 7的并发包里新增一个队列集合类Linked- TransferQueue,它在使用<em>volatile</em>变量时,用一种追加字节的方式来优化队列出队和入队的性 能。LinkedTransferQueue的代码如下。 /** 队列中的头部节点 */ private transient f?inal PaddedAtomicReference&amp;lt;...
keil里中断服务函数设置标志位时加volatile
在中断服务函数中,如果设置标志位,然后其他函数判断标志位,需要设置全局变量来实现。全局变量的声明中需要添加修饰符<em>volatile</em>,防止编译器对变量进行优化,导致程序出错。 下面是<em>volatile</em>的用法说明: <em>volatile</em>用于防止相关变量被优化。   例如对外部寄存器的读写。对有些外部设备的寄存器来说,读写操作可能都会引发一定硬件操作,但是如果不加<em>volatile</em>,
C51中关键字volatile的用法
<em>volatile</em>的本意是“易变的” 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如: static int i=0; int main(void) { ... while (1) { if (i) dosomething(); } } void ISR_2(void) { i=1; } 程序的本意是希望ISR_2中断产生时,在main当中调用dos
C51中的volatile关键字
C51中的<em>volatile</em>关键字   2009-08-07 13:12:05|  分类: 51单片机|举报|字号 订阅 这几天写了个“怪”程序,说它“怪”,是因为在单片调试它的时候,有一个变量的值老是不变的。最典型的“怪”语句是:_uKey=P2;。结果_uKey的值还是初定义时的值(0x00),我被它气死了。上网问高手,好在用高手指点用<em>volatile</em>这个关键
嵌入式中 static, const, volatile, 绝对地址访问, 死循环小结
static: 在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.在文件域内(但在函数体外),一个被声明为静态的变量可以被文件域内所有函数访问,但不能被文件域外其它函数访问。它是一个本地的全局变量. 在文件域内,一个被声明为静态的函数只可被这一文件域内的其它函数调用。那就是,这个函数被限制在声明它的文件的本地范围内使用. const: 只读(不能简
关键字volatile 在C51中的使用
在C中会遇到一个一个不是很常用的关键字<em>volatile</em>,如果是仅仅是应用层编程,在控制台打印东西,这个用的不多,但是在C的嵌入式编程这个关键字会很有用,使用它编译器不会对C代码进行优化,老老实实将C直接转换成汇编,否则会出现优化。下面还是举个例子来理解: 1.未使用关键字<em>volatile</em>声明局部变量 C代码: #include char num2; void main() { cha
ctype.h(cctype)库函数使用详解
ctype.h(cctype)库函数使用详解 一. ctype.h库函数 序号 函  数 功   能 说  明 1 int isalnum( int ch ); 判断字符变量ch是否为字母或数字 当ch为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。 2 int
在SDCC编译器中使用51单片机的外部扩展存储(外部8080总线)
  熟悉Keil的朋友应该都知道,在Keil中可以使用XBYTE关键字使用P0与P2组成一个标准的16位Intel总线收发器对外部设备(一般为扩展RAM,常见于8031系列单片机)进行读写操作。最近打算把代码移植到SDCC环境下开发的时候便遇到了SDCC中没有XBYTE关键字的<em>问题</em>,折腾一番后找到了如下的解决方案:   例如8255的PA端口地址为0x0001,在Keil中若要将其赋值0xAA的...
51头文件详解
/*-------------------------------------------------------------------------- REG51.H //REG 就是 Register(寄存器)的意思,对51单片机的操作就是对寄存器的操作Header file for generic 80C51 and 80C31 microcontroller. Cop
volatile变量修饰符—意料之外的问题(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17101369     <em>volatile</em>用处说明     在JDK1.2之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下<em>volatile</em>关键字的使用变得非常重要。 在当前的Java内存模型下
volatile讲解与宏定义
在嵌入式面试时<em>volatile</em>是必考题!下面来解释一下<em>volatile</em>关键字的作用:<em>volatile</em>关键字,是用于表明变量代码无法被优化!比如:int a = 0; a = 1; a = 2; a = 3;经过编译器代码优化后:int a = 0; a = 3;省去重复工作,debug下不会作任何优化,但这样的代码效率一般只用在调试下,release模式下会对齐进行优化,在GCC的编译器下会直接对...
stm32f103学习笔记——关键字extern、static、const
1、extern extern放在变量和函数声明之前,表示该变量或者函数在别的文件中已经定义,提示编译器在编译时要从别的文件中寻找。除此之外,extern还可以用来进行链接指定。 (1) 声明外部变量。在声明全局变量时,不同的文件在编译器编译时是不透明的,在A.c中定义 int i,同时在B.c中定义 int i,编译器编辑时是不会报错的,但是当链接linking...时会报错重复定义,链接是
keil 工程头文件包涵及结构体重定义问题
最近在写一个太阳能电池控制板的项目,
Keil头文件重复定义的问题
提示 <em>头文件</em>已经包含,并且错误指向了我的<em>头文件</em>定义的地方,用sourceinsight搜多了一下,整个项目也只有在当前的》h文件中有定义,最后从代码的main函数开始分析,并且查看调用文件, 如图 在文件的开头已经包含了"app_console.h",一般习惯是包含的多一点好,全面一点,不会报找不到的错误。在这个文件的后面,定了一个宏,如图:
关于KEIL C 中 ABSACC.H的XBYTE问题
芯片为AT89S52,P2.1口与T6963C的片选相连,P2.0口与T6963C读/写使能控制口相连,其它5个口用于别的芯片控制,P0口与T6963C的数据/命令口(8位)相连,但我总是搞不明白为什么XBYTE[0xXXXX]定义后的宏是怎么回事。rnrn#include rn#include rnrn#define d_add XBYTE[0xfc00]//为什么说这就是数据通道rn#define c_add XBYTE[0xfd00]//为什么说这就是命令通道rnrnvoid main()rnrn /*比如说*/rn d_add=0x90; //为什么这就是将数据写到T6963C目前显示存储器地址(地址由其它命令设定)中,而不是将数据0x90写到外部RAM地址为0xfc00中呢(再说我们的外部RAM也没这么大)??有人讲等同汇编的 rnrnMOV DPTR #0FC00H rnMOV A #90HrnMOVX @DPTR,A rn(这真是不可理喻了?)rn rn rn /*比如说*/rn c_add=0xC0; //为什么这是一条控制T6963C的命令,而不是将数据0xc0写到外部RAM地址为0xfd00中呢!!!rn rnrnrnrn找了些资料没看明白,很多人只是COPY一些杂碎,希望得到高人指点,我看到也有不少人问这个<em>问题</em>,如果能找到答案,我一定转贴,让大家一起分享。。。。。rnrnrnrn
sdcc 存储类型关键字
一、存储类型关键字1.1 sdcc中特殊关键字的使用sdcc提供和<em>keil</em>一样的特殊关键字来指定变量的存储类型,和<em>keil</em>不同的是,sdcc在使用c51专用的特殊关键字时,要用两个下划线作为前缀,比如申明一个idata存储类型的变量时语句如下。__idata unsigned char i; 1.2 __data类型该类型是small存储模式下默认使用的存储类型,对应直接寻址方式。1.3 __pda
在DSP的寄存器头文件中使用到VOLATILE(TMS320F2812)
http://hi.baidu.com/lianghu3124/blog/item/4bcff0029aa25deb08fa9331.html   在DSP的寄存器<em>头文件</em>中使用到VOLATILE(TMS320F2812) 2009-02-26 14:28 在链接器配置文件中的SECTIONS段中为各种外设的寄存器结构映射了他们在dsp内部存储器中的地址。例如tms320f2
keil中使用头文件实现多文件编程
如上图所示,在这里,MAX7219driver.c为将被包含的源文件,max7219.h为对应MAX7219driver.c的<em>头文件</em>,而(驱动测试)显示PZ-122345.c这个文件里包含了MAX7219driver.c对应的<em>头文件</em>max7219.h,从而实现了对MAX7219driver.c的引用下面为具体操作步骤1,在<em>keil</em>中新建一个工程 2,新建MAX7219driver.c文件并编写好其
__I、 __O 、__IO volatile是什么?怎么用?(作者写的太棒了,给赞)
__I、 __O 、__IO是什么意思?  这是ST库里面的宏定义,定义如下: #define __I <em>volatile</em> const /*! #define __O <em>volatile</em> /*! #define __IO <em>volatile</em> /*! 显然,这三个宏定义都是用来替换成 <em>volatile</em> 和 const 的,所以我们先要了解 这两个关键字的作用:  volatil
keil5不能识别自己写的头文件
<em>keil</em>5不能识别自己写的<em>头文件</em> 遇到这种情况是应为自己没有在编译器中告诉编译器你的<em>头文件</em>在哪个文件夹里造成的, SO 首先project–>option…..—>…在这里设置编译文件的文件夹 OK
keil4中头文件路径设置
<em>keil</em>4中<em>头文件</em>路径设置 被<em>头文件</em>的路径设置困扰了很长时间,现在终于知道了! 在<em>keil</em>4中<em>头文件</em>路径设置的方法: 假设这里有若干个文件,分别是: main.c  dong.c peng.h 其中,main.c和dong.c都依赖与peng.h。他们的内容分别如下: main.c: 绝对路径是:E:\MY_Documents\<em>keil</em>\C51\include\ff\dd
KEIL环境下批量指定头文件路径
今天初用STM32模板建工程什么的,总之一大堆<em>头文件</em>啦,有经历的朋友你们都懂的,还没有经历的朋友,mark下这个方法吧,以后肯定用得上的。      具体方法:打开Options for Target 选项框,选择C/C++ 选项卡,找到Include Paths,就在这里定义自
Keil ARM编译器命令行编译中实现头文件依赖的自动推导
接触了几个编译器之后发现编译器基本上都有依赖文件的自动推导功能,最初掌握这个功能是在使用gcc的时候。后来发现其他的编译器基本上也有这个功能而且基本上都与gcc有着一样的语法。             今天简单试探了一下Keil编译器,没有查什么文档,纯粹是按照之前的老路子输入猜测的命令试了一下,还真是存在!             我在一个文件夹放了一个C文件一个<em>头文件</em>,C文件中包含了<em>头文件</em>
Keil中添加自己的头文件
 方法一 在<em>keil</em>的开发环境下添加:                   请注意上面的系统生成的<em>头文件</em>目录是:,即.\dd\jj\pp\kk,其中.\是相对于项目文件.uvproj 而言的,其中 .\ 表示项目文件所在的当前目录, 项目文件的绝对路径是:E:\MY_Documents\<em>keil</em>\C5
Keil添加头文件的方法
文字配图详细介绍如何在勊了<em>keil</em>中铁建<em>头文件</em>
keil工程中找不到头文件的可能原因
Keil中找不到文件的<em>问题</em>
keil头文件路径设置
总结了<em>keil</em>中常见的几种<em>头文件</em>添加的方法。
与原子操作相关的 volatile 和 sig_atmotic_t
1).<em>volatile</em>    影响编译器编译的结果,指出,<em>volatile</em> 变量是随时可能发生变化的,每次使用时都需要去内存里重新读取它的值,与<em>volatile</em>变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加<em>volatile</em>关键字的变量有关的运算,将不进行编译优化。)。  例如:   <em>volatile</em> int i=10;     int
keil自带的头文件进行更改存在的一个潜在问题
今天遇到了个小<em>问题</em>,写个日志可以以后提醒自己。 之前电脑有点<em>问题</em>,重装了系统和<em>keil</em>。再编译一个以前通过的过程,就一直报错,说引脚没有定义。一直想不通,因为这个工程在写好后就没有改过,为什么会有<em>问题</em>呢。 找了半天发现,原来是<em>头文件</em>regx52.h的<em>问题</em>。我用的单片机是STC89C52RC,工程中用到了它的P4口。 <em>keil</em>中在建立工程时是没有STC的模板的,所以一般选ATMEL得C52,而
keil4中头文件路径设置的方法汇总
不复制了 真麻烦... http://pengdonglin137.blog.163.com/blog/static/13319983320130159449234/
关于XBYTE的使用
原文地址:关于XBYTE的使用(收集)作者:Simba The XBYTE macro accesses individual bytes in the external data memory of the 8051. You may use this macro in your programs as follows: #include .rval = XBYTE [0x000
关于全局变量被修改以及volatile的用法
..... unsigned char num=0; ..... INTERRUPT() { .... num++; .... } void main() { out(num); } 很不幸的事情是在主函数中,num一直都不会变,编译器avrstdio,外部中断。 调试中发现中断时可以进去的,然而中断出来以后,这个全局变量就被改变了,后来加了volitale就可以了
keil 编译时遇到的错误,头文件明明已经加进去了,却仍显示未定义
将stm32f10x_conf.h中注释掉的<em>头文件</em>恢复即可。
Keil 头文件源程序代码——Math.h
/*-------------------------------------------------------------------------- MATH.H   Prototypes for mathematic functions. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All
keil编译头文件路径的设置
留个印象: 编译<em>头文件</em>路径的设置:(目前找到的勉强可行的方法) 把存放的<em>头文件</em>的路径添加到整个工程Prj中(具体在options选项中),而不需要每个C源代码文件都要设置一遍。 起因: 最近使用<em>keil</em>开发单片机,但是我的工程有许多<em>头文件</em>,而Keil只能搜索它默认的<em>头文件</em>路径,自己定义的<em>头文件</em>需要一个一个的设置。一开始的时候我每个C源代码文件的Optio
stm32f10x_conf.h
<em>头文件</em> stm32f10x_conf.h 解决<em>keil</em> 4.2.2 下建立工程重定义<em>问题</em>
Keil C51头文件
C:\Keil\C51\INC: ABSACC.H ASSERT.H CTYPE.H ERRNO.H FLOAT.H INTRINS.H LIMITS.H MATH.H REG51.H REG52.H RTX51TNY.H SETJMP.H SROM.H STDARG.H STDDEF.H STDIO.H STDLIB.H STRING.H
哪位兄弟有absacc.h头文件
在线等 有的朋友加我qq27770131发个给我 先谢了
解决编译通过,Keil5打红叉问题
Keil5打红叉<em>问题</em>
stm32 volatile变量的正确使用
<em>volatile</em>变量的使用是区分c程序员和嵌入式系统程序员的最基本<em>问题</em>。不懂得<em>volatile</em>变量的内容将带来灾难。这个文档帮助你减少因此带来的bug。
keil加载自己编写的驱动程序的.h头文件
  要添加flash.c和flash.h到工程中。 加了之后有了.c。   对应<em>头文件</em>中放入宏定义和函数声明,对应.c文件中放入函数主体。然后↓ 选择编译就能看到flash.c下的<em>头文件</em>了。   成功!...
嵌入式编程(以STM32为例)中的volatile,const意义及应用场景
__I、 __O 、__IO是什么意思? 这是ST库里面的宏定义,定义如下: #define     __I       <em>volatile</em> const        /*! #define     __O       <em>volatile</em>                  /*! #define     __IO      <em>volatile</em>                  /*!
解决重复包含一个头文件时变量重复定义的问题
#include文件的一个不利之处在于一个<em>头文件</em>可能会被多次包含,为了说明这种错误,考虑下面的代码: #include "x.h" #include "x.h" 显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码。但是下面的代码: #include "a.h" #include "b.h" 看上去没什么<em>问题</em>。如果a.h和b.h都包含了一个<em>头文件</em>x.h。那么x.h在
头文件Delay.h(网上很难找到的,建议下载后收藏,并放到keil的INC文件夹中,以后就可以直接调用了)
<em>头文件</em>Delay.h(网上很难找到的,建议下载后收藏,并放到<em>keil</em>的INC文件夹中,以后就可以直接调用了)
在 Keil5 中添加 .h 文件的问题
由于不是经常用到<em>keil</em>,所以有一些常识性的<em>问题</em>会忘记,因此特地写下来防止下次再忘记 一般来说的步骤:    得到text文件,然后文件名保存为xx.h,之后就直接在代码里用就好了; 不过也有在外部找.h文件后,加不进去的<em>问题</em>: 解决: 这里添加.h文件的路径。注意:是该文件前的那部分路径,不是该文件本身的!!
Keil头文件代码—Absacc
/*-------------------------------------------------------------------------- ABSACC.H   Direct access to 8051, extended 8051 and NXP 8051MX memory areas. Copyright (c) 1988-2010 Keil Elektronik Gm
项目之IC卡程序2
项目之IC卡程序2、 C51 从Keil到IAR 由于某些原因不能使用Keil编译51代码,所以转到IAR,发现很多地方不一样。 首先是sbit IAR中不支持未定义,IAR中的位访问是通过位段的形式来实现的。所以在Keil中的sbit LED_POWER = P0^4;需要改为宏的形式:#define LED_POWER  P0_bit.pin5,而这里还需要<em>头文件</em>里做点
keil 中建立多文件时,变量重复定义的解决
<em>keil</em> 中建立多文件时,变量重复定义的解决      c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义,会给编程带来很大的麻烦,为了使大家少走弯路,特祥细的说明一下。     对于比较小的程序,一般只有一个c文件和一个<em>头文件</em>,全局变量我们通常会直接定义在c文件中,在程序之前加int i定义。如果要在<em>头文件</em>中定义有以下两种方法:用extern来声明:extern
C++ 头文件相互包含问题的解决
 所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。 类A和类B需要彼此互相引用,这样必然有一个类会先被定义,而另外一个类后被定义,这样在 先被定义的类引用后被定义的类的时候,就导致了所谓的超前引用。 超前引用导致的错误有以下几种处理办法:   1) 使用类声明    在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。
keil51下使用sprintf问题
测试环境:<em>keil</em> c51 + STC89C52 说明: 1.<em>keil</em>的不定参数只有15个字节 也就是说sizeof(...) 加起来总共不能超过15字节,否则会出错 2.当不定参数中有常数时,你也会得不到你想要的结果,字符串除外 例:  unsigned char count_sec=2, count_min=3, count_hour=4;  xdata char buf[1
头文件顺序调换编译出错、添加头文件后仍然报错
第一次看到下划线的地方报错,以为是<em>头文件</em>没有包含,导致未定义错误,后来发现<em>头文件</em>添加后错误依然存在。 void five_key_air_dev_fun_exec_fan(void) { device_hac_cfg_type_def *device_hac_cfg_ptr; gui_draw_hac_pib_t *draw_hac_pib_ptr; draw_hac_pib_pt
Keil MDK配置----头文件问题
#include "sys.h"; #include "delay.h"; int main(void) { } 编译后错误:    error: can't open   source input file "sys.h":no such file or directory
Keil C51对C语言的关键词扩展之九: idata
idata声明的变量存储在内部ram 256字节范围内。 data声明的变量存储在内部ram低128字节范围内。
absacc.h
介绍是说这个<em>头文件</em>主要用来访问“绝对地址”。rnrn绝对宏:rn在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括:rnCBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORDrn具体使用可看一看<em>absacc.h</em>便知rn例如:rnrval=CBYTE[0x0002];指向程序存贮器的0002h地址rnrval=XWORD [0x0002];指向外RAM的0004h地址rnrn这些都还好理解。rnrn但是最近读到一程序:rn#includern#includern#define uchar unsigned charrn#define COM8255 XBYTE[0x007F] //命令口地址rn#define PA8255 XBYTE[0x00FC] //A口地址rn#define PC8255 XBYTE[0x00F] //C口地址rnvoid printchar(uchar *p);rnrnvoid main(void) //主函数rnrn uchar idata chara[]="HELLO"; //测试用的字符串rn COM8255=0x8E; //输出方式选择命令字rn printchar(chara); //打印字符串rnrnrnvoid printchar(uchar *p) //打印字符串子函数rnrn while(*p!='\0')rn while((0x80&PC8255)!=0); //查询等待打印机的BUSY状态rn PA8255=*p; //输出字符rn COM8255=0x00; //模拟STB脉冲rn COM8255=0x01;rn p++;rn rnrnrn 是《单片机C语言编程与实例》中的例程(其实书中还有许多这种程序,另有这种程序的书也不只这一本,我在书城看见很多),就是通过《<em>absacc.h</em>》定义访问的“外部绝对地址”不是在程序/数据存储芯片中,如上例,是将C51与外围并行接口8255芯片连接。PA8255,PC8255就是8255芯片的PA(8个)口,PC(8个)口。rn 从“访问存储芯片内部地址”到“将并行接口8255芯片的外部接口用起来像C51自身接口一样方便”,我实在不明白。rnrn要电路的大侠们请留下信箱,我会将这个电路图发过去。(电路很简单)rnrn
keil中c51编程中常用的头文件
这是<em>keil</em> c51 编程时经常用到的一些<em>头文件</em>,其中包含了最常用的函数定义
浅谈keil程序中include 后的尖括号与引号的区别
在程序中,尤其是51和32为例,程序中最上面,时常会看见这样一行代码: #include 而后面有时候会是
IAR 和 keil 使用外部 SDRAM 的区别
当芯片内部的 SRAM 不够用时,就需要在外部扩展 SDRAM,然后在写程序时将一些比较大的 buffer 定义在外部内存中。在进行正确的配置之后,对外部 SDRAM 的使用,和芯片内部的 SRAM 是一样的,可以直接对 SDRAM 的地址进行读写访问。 因此,最简单的方法就是,如下所示的代码,直接使用指针指到外部 SDRAM 的地址,之后对指针进行移动,便可以对全部 SDRAM 进行读写。使用...
keil和ads冲突
电脑先装的<em>keil</em>  4.7,后来因为要用到ads. ads可以用了之后,<em>keil</em>再编译之前的代码时候,发现有些<em>头文件</em>找不到.比如: 看了一篇帖子后知道ads的环境变量影响了<em>keil</em>用c库的<em>头文件</em>,看了下有的是因为<em>头文件</em>有些改变,用不了。 现在要做的就是在用<em>keil</em>的时候,把这些环境变量给删除,用到ads的时候再改过来. 经过尝试: //ARMCONF=C:\Program Fil
keil中怎么添加自己的头文件,加入工程,保存路径。#include还用吗
<em>keil</em>中怎么添加自己的<em>头文件</em>,例如:添加#include&amp;lt;led.h&amp;gt;,要把它写在哪里,保存在哪里,才能编译后,显示 #include&amp;lt;reg51.h&amp;gt;#include&amp;lt;led.h&amp;gt;我这样写了,没反应。是不是要新建文件led.h,再保存在那个文件里面才可以。... #include&amp;lt;reg51.h&amp;gt; #include&amp;lt;led.h&amp;gt; 我...
keil 中——C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法
详解<em>keil</em>采用C语言模块化编程时全局变量、结构体的定义、声明以及<em>头文件</em>包含的处理方法!            以前写单片机程序时总是把所用函数和变量都写在一个c文件里,后来遇到大点的项目,程序动则几千行,这种方式无疑会带来N多麻烦,相信大家都有所体验吧!     后来学会了在<em>keil</em>里进行模块化编程,即只把功能相同或相近的函数写在同一个c文件,这样以来一个项目往往由很多个c文件组成,但又带来
【Keil】keil 文件里面有个红叉
现象 : 解决 : 具体做法是 Edit - >Configurations - >Text Completion 然后可以看到左下角有一个Dynamic Syntax Checking,把enable去掉就可以了。
让KEIL输入二进制的头文件
td {font-family:"宋体"; font-size:10.5pt} body {font-family:"宋体"; font-size:10.5pt} a:hover {font-family:"宋体"; color:red; text-decoration:none} a:link {font-family:"宋体"; color
【多线程系列】Volatile总结之同步问题
Volatile总结之同步<em>问题</em> 在java线程并发处理中,有一个关键字<em>volatile</em>的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的<em>问题</em>,在语言内部引入了 同步块 和 <em>volatile</em> 关键字机制。     synchronized  同步块大家都比较熟悉,通过 synch
错误:重复定义变量的解决办法——不要在头文件里定义变量
在写C代码的时候,经常需要在<em>头文件</em>中包含有些预定义的信息。比如一些结构体的声明,外部变量,函数的声明等。 有时候觉得有必要在<em>头文件</em>中定义一些变量,这样在源文件中就不需要定义了。但是这样做,有很大的<em>问题</em>。 比如 [cpp] view plain copy //test.h 1 #ifndef _TEST_H 2 #define _TEST_H 3 int x; 4 c...
keil delay.h头函数,C语言
这是<em>keil</em> uvision软件中的delay头函数,很难找到,十分难得
8051 - 在keil中添加STC型号的3种方法
【1】数据库替换法(STC官网方法): 说明:这个方法最简单,但缺点是在器件选型时,只能选择STC单片机,原来的单片机都没了,让人不爽。 操作步骤:        先备份KEIL安装目录UV2(或者UV3/UV4)文件夹下面的UV2.CDB(或者UV3.CDB/UV4.CDB)文件,然后用STC官网提供的同名的CDB文件代替。 注:没有UV4.CDB的话,可以将“UV2.C
如何解决Keil5打红叉的问题
很多人换到Keil5,可能会遇到上图这个<em>问题</em>,这是<em>keil</em>新增的同步查错功能。一般情况下大家的项目编译通过了,也可以仿真运行了,以至于这些红叉看起来多余,实在是别扭。如何解决掉这些红叉呢?最好的办法就是关掉这个功能:Dynamic Syntax Checking。 具体做法是 Edit - Configurations - Text Completion  然后可以看到左下角有一个 Dynami
Keil4如何组织arm-mdk头文件、库文件
一、集成开发环境很多不透明,和ZF一样。今天想向板子写点东西,就去看arm-mdk使用,发现ppt里面说的和Keil4有很大出入,于是自己分析Keil4如何组织的。 二、由c程序到bin文件,必定经过编译、汇编、链接,<em>keil</em>4只是开发环境(类似于make管理器),真正调用的肯定还是arm自己的编译器、汇编器、连接器。       1. 于是打开Keil4工程,点开Option>LD_LIBR
ARM VFP的一点体会
关键字: VFP arm1136JF-SMCIMX31 gcc linux 参考文献:>、>、> 前言: MCIMX31是一款基于ARM1136JF-S的多媒体处理器。他适合用来做智能手机,手持式游戏终端,多媒体播放器等智能手持式设备。有关这款CPU的参数特性可以参考Freescale的DataSheet。 最近使用MCIMX31的VFP有些收获,写出来与大家分享。 调试环境: 成都莱
关于Keil5编译成功但是会有红叉的问题
很多人在用<em>keil</em>5时编译项目无错误无警告但是程序右边会出现红色叉号,如下图所示 这是因为<em>keil</em>新增的同步查错功能,想要关闭的方法是:  Edit - Configurations - Text Completion- Dynamic Syntax Checking然后把使能关掉就可以了。  ...
KEIL中左侧project 的文件编译后没有显示.h文件
1. 退出软件,重新打开试试 2. 如果还没有,查看是否点了show
测试volatile变量的读写性能
<em>volatile</em>变量与非<em>volatile</em>变量的区别在于,<em>volatile</em>变量每次读都需要去主内存读取最新的值,每次写也需要写回到主内存;非<em>volatile</em>变量允许在缓存中读写以加快计算速度。
空指针(NULL,0),野指针,void*的讲解
转自:http://www.educity.cn/develop/407055.html 一:野指针   “野指针”不是NULL指针,是指向“垃圾”内存的指针。   “野指针”的成因主要有两种:   (1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法
volatile的适用场景(面试问题volatile有什么作用)
把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。 原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。可见性则更为微妙,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的。 —— 如果
CC2530头文件,寄存器设置
CC2530寄存器<em>头文件</em>,所有字节寻址 位寻址寄存器
彻底明白volatile关键字
一,基本概念1,CPU多核时代的到来,引入了著名的缓存一致性<em>问题</em>。(通常称这种被多个线程访问的变量为共享变量)。硬件层面有两个方案,一是对总线加LOCK,禁止别的CPU访问;二是MESI协议(如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会...
keil头文件
许多初学者使用网上下载的程序时都会遇到这样一个<em>问题</em>,就是<em>头文件</em>找不到。我想就这个<em>问题</em>说明一下。/·首先,我们用到的KEIL有几种版本的,<em>头文件</em>也不同。有reg51.h和at89x51.h两种比较常见。at89x51和reg51这两个文件有点不同,reg51没有对IO口的位地址进行定义。所以我们在使用reg51的时候,可能会有一些相关语句通不过,比方说P0_1=1;这样的位操作。文件都放在Keil的KEILC/C51/INC目录下,大家可以看看自己的KEIL版本
C#多线程同步(九)【volatile
每个人都是自己的上帝。如果你自己都放弃自己了,还有谁会救你?每个人都在忙,有的忙着生,有的忙着死。忙着追名逐利的你,忙着柴米油盐的你,停下来想一秒:你的大脑,是不是已经被体制化了?你的上帝在哪里?# class Test { //<em>volatile</em>多用于多线程的环境,当一个变量定义为<em>volatile</em>时,读取这个变量的值时候每次都是从momery里面读取而不是从cache读。
Keil头文件
我的<em>keil</em>没有89S52等常用芯片的<em>头文件</em>!哪位仁兄给传个,小弟谢谢啦!rn或者给个比较好的破解版的Keil下载地址也行!rn谢谢啦!
多线程之内存可见性Volatile(一)
从这篇博文开始,我们开始分享一些多线程的内容,毕竟在工作中,使用多线程比较多。多总结一下,终归没有坏处。这个系列的文章不会特别长,争取在3到5分钟之间结束,主要以说明白内容,给出相应的解决方案,重点在于实践。如标题所示,这篇博文我们简单的介绍一下内存可见性<em>问题</em>,之前,要简单的介绍一下什么是内存模型?内存模型什么是JAVA 内存模型?Java Memory Model (JAVA 内存模型)是描述线程
Java基础面试总结(四、深入理解volatile关键字)
被<em>volatile</em>修饰的变量,可以保证不同的线程都能多能取得最新状态值;<em>volatile</em>保证了可见性,避免在线程在缓存中取旧值;1. <em>volatile</em> 保证可见性一旦一个共享变量(类的成员变量、类的静态成员变量)被<em>volatile</em>修饰之后,那么就具备了两层语义:1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2)禁止进行指令重排序。2...
volatile关键字解析(jdk1.5之后)
学习过并发编程的同学应该对<em>volatile</em>关键字并不陌生。它也是用来保证多线程读写数据时保证数据的一致性,但它不如synchronized强大。synchronized是在执行代码块或是方法体时中隐式的加锁而禁止其他线程来访问。而<em>volatile</em>仅仅是对某个变量的修改及时的可见于其他的线程
KEIL用的sst89e58头文件
KEIL用的sst89e58<em>头文件</em>,大家可以直接用在<em>keil</em> 中!
浅谈MDK环境下使用#include 的问题
在使用MDK进行嵌入式开发,特别是调试串口的时候经常要用到C语言的标准输入输出库函数,如printf();。这样写出来的程序,通常编译和链接过程都不会报错,但是程序却无法正常运行,查看反汇编可以发现程序停在了BKPT 0xAB一行。 原因分析如下: 标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数.  例如:printf
keil C51中使用sprintf问题
unsigned char count = 12; UartInit(); TI = 1; sprintf(pstr,&quot;%d&quot;,count); printf(&quot;%s\n&quot;,pstr);如上将count定为unsigned char 型变量使用printf函数输出时,会出现错误。将其定义为unsigned int型正确输出。通过查阅资料(https://www.cnblogs.com/shirish...
使用GCC内置函数代替Linux内核asm/atomic.h头文件
automic.h#ifndef _ATOMIC_H #define _ATOMIC_H /* Check GCC version, just to be safe */ #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC_MINOR__ < 1) # error atomic.h works only with GCC newer than
volatile和重排序得一些小疑问
http://yeziwang.iteye.com/blog/1042492  好吧,这里我只想说说<em>volatile</em>在JMM中的语义。     当我们在使用<em>volatile</em>的时候,实际上它表达了下面那么些意思。      1. 可见性。       这个是大多数人都知道的一个特质, JAVA的线程有自己的工作内存区,与主存区不同,当我们对变量使用了<em>volatile</em>后,那么不管对这个...
单片机之KEIL--添加头文件
点击打开链接KEIL v3添加STC系列单片机库文件 方法+<em>头文件</em>库   增加一个单片机数据库,既可以选择STC单片机,又不影响原来数据库的使用。 操作步骤: 1.下载用于<em>keil</em>的STC数据库更名为STC.CDB。将文件夹中的文件放到相应的文件夹下,若没有STC文件夹,自己新建一个。或者拷贝到Keil/UV2目录下。(如果是Kile3则是UV3,Kile4则是UV4)。STC文件夹里包含...
STM32汇编指令(一)WFI 和 WFE
STM32汇编学习
使用KEIL5进行STM32开发时常见的三个错误
1.用<em>keil</em>5编译提示 warning: #1-D: last line of file ends without a newline最后行回车不管用          最后一行回车后还要保证是在第一列,新的一行不能有空格等空字符才能不出此警告2.定义<em>头文件</em>时总是在界面上出现类似 X #include &quot;led.h&quot; ,但编译没有出现错误和警告     打开<em>keil</em>5的option for ...
关键字volatile的作用和三个不同的应用场合
学习C关键词的时候,我们看到了一个新面孔——<em>volatile</em>。在程序员面试宝典中提到“关键字<em>volatile</em>的面试例题是考查嵌入式编程”,中间有一段解析: 回答不出这个<em>问题</em>的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的<em>问题</em>。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到<em>volatile</em>变量。不懂得<em>volatile</em>的内容将会带来灾难。 假设被面
volatile无法保证i++原子性的解决方案
一、阻塞算法与非阻塞算法1、阻塞算法以常见的同步实现方式synchronized为例,同一时间段,同一个锁,只能有一个线程获得,其他未获取到的线程阻塞,直到拥有锁的线程释放锁。下图演示了一个阻塞算法保证一个共享数据结构的行为:2、非阻塞算法线程A请求某种操作,如果系统无法响应;则通知A线程,A可先去执行其他操作;下图演示了一个非阻塞算法保证一个共享数据结构的行为:二、Volatile 变量存在的<em>问题</em>
java 多线程需要处理的问题/volatile/指令重排
<em>volatile</em> <em>volatile</em> 有两种语义: 1. <em>volatile</em> 修饰的变量可以保证其内存可见性, 即在读写的时候都是操作主存, 而不是操作分配给各个线程的cache; 2. <em>volatile</em> 可以阻止指令重排. 此作用并不是因为语义1的原因. java的内存分为主内存和各个工作内存, 工作内存里存有该线程下的局部变量和从主内存里拷贝的共享变量副本. 当变量没有<em>volatile</em>...
LCD1602的头文件及相关函数
#include #include #include "./LCD/LCD.h" #include"./delay/DELAY.H" sbit RS = P2^4;     sbit RW = P2^5; sbit EN = P2^6; #define  _Nop()  _nop_()        //定义空指令 #define RS_CLR RS=0 
Volatile、多核cpu 处理多线程
这篇文档居然在我的优盘里躺了很久,知道整理U盘文件的时候才发现居然还没有粘到blog上。多cpu就意味着多个寄存器,实践证明,拥有一个多核cpu对于一个coder来说还是很重要的。 Declaring a <em>volatile</em> Java variable means: ·         The value of this variable will never be cached t
文章热词 双目视觉问题 特征点问题 相机标定问题 最优化问题 统计学稳健估计问题
相关热词 c++和c混合编程 keil c++ volatile 多线程 volatile关键字的作用c++ c++ volatile关键字 区块链问题 学习python时遇到的问题
我们是很有底线的