C语言中_at_的用法

主要目的是为了明白能不能在单片机的FALSH里的固定地址写入自己定义的数据

  在vector里用,vector.at(n)表示vector里的下标为n的值。

  C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
  尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-12
不是通用的C语言。Cx51 支持 _at_. 手册上有例子:
struct link {
struct link idata *next;
char code *test;
};

// 下面4行给了地址,主程序里赋值。
struct link idata list _at_ 0x40; /* list at idata 0x40 */
char xdata text[256] _at_ 0xE000; /* array at xdata 0xE000 */
int xdata i1 _at_ 0x8000; /* int at xdata 0x8000 */
char far ftext[256] _at_ 0x02E000; /* array at xdata 0x03E000 */

void main ( void ) {
link.next = (void *) 0;
i1 = 0x1234;
text [0] = 'a';
ftext[0] = 'f';
}追问

想知道的是这样执行的结果
比如拿i1来说明
0x1234写入的地方是在代码存储器的FLASH里还是数据存储器里

追答

用于外围设备加 volatile :
If you use the _at_ keyword to declare a variable that accesses an XDATA peripheral, you may require the volatile keyword to ensure that the C compiler does not optimize out necessary memory accesses.

本回答被网友采纳
第2个回答  2018-05-22

    at+ 读写打开一个文本文件,允许读或在文本末追加数据。

    在vector里用,vector.at(n)表示vector里的下标为n的值。

    C语言是一门通用计算机编程语言,应用广泛。

    C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

本回答被网友采纳

C语言中_at_的用法
at+ 读写打开一个文本文件,允许读或在文本末追加数据。在vector里用,vector.at(n)表示vector里的下标为n的值。C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

c语言中有关_at_使用的问题及指针变量
_at_ 并非C语言的普通语法,而是Cx51特有的语法,属于嵌入式C的关键字,用于将特定变量存放在指定的绝对地址中。这句话有两个词语要格外注意:1、变量:即函数和位变量不能定义在绝对地址;2、绝对地址:要考虑你的物理内存到底有多大,要符合实际情况,不能超出实际边界。接下来回答你的两个问题:1...

_at_在c语言里面是什么意思!怎么用。例如:unsigned int idata wX _at...
!_at_0x30的作用是指定变量wX的数据放在30H单元

51单片机c语言怎样访问固定的内存空间
C中定义的全局变量、数组就是固定的了,直接操作吧,比较方便。实际的地址是编译器自动分配的,具体在哪里要看汇编。汇编里可以直接指定,这是汇编的好处。以下转自网络 在网上看到有人提到在keil中使用_at_进行绝对地址定位问题,我简单介绍一下它的用法。使用_at_关键字对存储器进行绝对地址定位程序如...

c语言 at 前后下划线
嵌入式C的关键字,变量可能定位在绝对内存地址 ———The absolute address following the _at_ keyword must conform to the physical boundaries of the memory space for the variable. The Cx51 Compiler checks for and reports invalid address specifications.The following restrictions apply to abso...

...资料存入指定的地址或在读指定地址的资料用C语言怎么写..._百度知...
1. 使用绝对巨集:在C语言程序中,可以通过包含``头文件来使用绝对地址访问巨集,如`CBYTE`、`XBYTE`、`PWORD`、`DBYTE`、`CWORD`、`XWORD`、`PBYTE`、`DWORD`。例如:```c unsigned char rval = CBYTE[0x0002]; \/\/ 读取存储器地址0002h的资料 ```2. 使用`_at_`关键字:在资料定义...

怎么在单片机C51语言中使用AT指令
用C语言写,如WriteUART0(char*p),其中p是缓冲区指针,那么AT命令程序如下:WriteUART0(“AT+CSCA=\\"+8613010180500\\"r”);\/\/设置短信中心号码 WriteUART0(“AT+CMGF=1\\"r”);\/\/设置为Text模式 ...

...资料存入指定的地址或在读指定地址的资料用C语言怎么写?
xdata char text[25b] _at_0xE000;指定text阵列从0E000H开始 提示:如果外部绝对变数是I\/O埠等可自行变化资料,需要使用volatile关键字进行描述,请参考absa.h。微控制器 用C语言如何往一个指定的地址村资料 在说了 知道地址可以用C语言直接往里面写的啊 某个地址等于某个值。vb 修改指定的...

C语言中,有12种文件使用方式,有哪12种,并给予简要解释?
“ at ”追加打开一个文本文件,并在文件末尾写数据 “ rb ”只读打开一个二进制文件,只允许读数据 “ wb ”只写打开或建立一个二进制文件,只允许写数据 “ ab ”追加打开一个二进制文件,并在文件末尾写数据 “ rt+ ”读写打开一个文本文件,允许读和写 “ wt+ ”读写打开或建立一个文本...

在51单片机中怎样使用C语言预留一片存储区,使得变量自动分配内存时避开...
看你用的什么编译器。我自学51单片机用的编译器是SDCC,里面有一个修饰叫做__at 用sdcc的话可以写 __at(0x20) char reversed[16];然后这一块内存就分配给此全局变量了

相似回答