1. 单片机 用c语言如何往一个指定的地址村数据
。。。。有的单片机可以在EEPROM里面指定地址存数据,但是在ROM里面,地址是由编译器来决定的,你要存储一个数据,要自己先定义一个变量名称, 这个变量的地址就是有编译器来决定的。
2. c语言中可以定义固定变量的地址吗
变量就有地址,但是常量不会有地址。
比如
const int * p=&a;
就定义了一个变量指针,指向const int型的变量a
3. 单片机C语言怎样申请固定地址的变量操作步骤解析
在Keil中有两种方式申请固定地址的变量:
1、使用CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
比如:dat=DBYTE[0x40];
dat=XBYTE[0x1000];
2、使用_at_
比如:
idata dat _at_ 0x40;
xdata dat _at_0xE000;
4. 单片机C语言怎么声明一个可以位寻址的变量
是这个样子的,你只要声明了位变量,比如bit a;而且这个变量是全局变量,或者是函数内部的静态变量,那么,这个位变量的地上就恒不变了,只是地址是多少这个是编译器随机分配的,不敢十分确定,但是在以后的运行中,地址肯定是不变的。
如果你声明的是函数内部的动态变量,比如在函数内部声明:bit a,那么,这个位变量是随着函数的调用变化的,其地址也是变化的。
所以,你只要声明一个全局的位变量,那么,这个变量就肯定是地址不变的,当然,不知道其地址具体是多少罢了。
如果你非要知道每个地址是多少,那么,有两个办法:
1 你集中把128个位全部都定义出来。
比如,你在某个C文件里,这样写:
bit Bit00 = 0;
bit Bit01 = 0;
bit Bit02 = 0;
bit Bit03 = 0;
一直定义128个,把所有位空间占满,那么,这样,就可以肯定Bit00的地址是0x20的最低位,bit01的地址是0x20的次低位了。
2 用sbit,而不用bit.
比如:unsigned char data B_Var[16] = 0;
sbit Led_Status1 = B_Var[0]^7;那么,就表示Led_Status 是第20H地址中的最高位。
sbit Led_Status2 = B_Var[6]^3;那么,就表示Led_Status 是第26H地址中的第3位。
这个其实并不是定义了位变量,只是起了个别名而已。但效果一样,只是注意,你更改B_Var[6],可能会更改26H的地址第3位,所以,如果你只用位,那么,就不要操作B_Var[6]这个数组元素。
其实呢,你只要定义个全局变量就行了,没有必要知道这个bit变量的地址,因为没有什么实际意义。
5. 单片机c语言怎么把一个变量放到固定的地址
int *P;
P = 28h;
*P = 0x1234;
这样就把变量存在指定的两个地址单元了
6. 单片机C语言怎样申请固定地址的变量操作
void delay()
{
unsigned int i;
for(i=0;i<1500;i++)
}
void fun(void)
{
unsigned char i;
for (i=0;i<8;i++)
{
P0=1<<i;
delay();
}
while(--i)
{
P0=1<<i;
delay();
}
}
void main()
{
while(1)
{
fun();
}
}
7. c语言中可以定义固定变量的地址吗万分感谢
不能,在一开始创建的时候计算机就会自动分配给它特定的地址,况且有些地址还是不能访问的。
8. 单片机C编程怎么对固定地址操作例如 我要给50H这个地址赋值0x00应该怎么写
【答1】对内部内存操作:sfr H50=0x50; H50=0;
【答2】对外部RAM操作:xbyte[50H]=0;
【警】不过,警告你,C语言这么干,很危险,很可怕的。建议你调试后,确定此空间不会被任何其他变量以及堆栈空间占用。
【问】对了,想问问你,你想干嘛呀?高级语言干低级活,为毛?
9. 51单片机把数据存入指定的地址或在读指定地址的数据用C语言怎么写
1. 绝对宏:
在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
具体使用可看一看absacc.h便知,例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD[0x0002];指向外RAM的0002h地址
2. _at_关键字
直接在数据定义后加上_at_ const即可,但是注意:
(1)绝对变量不能被初使化;
(2)bit型函数及变量不能用_at_指定。
例如:
idata struct link list _at_ 0x40;指定list结构从40h开始。
xdata char text[25b] _at_0xE000;指定text数组从0E000H开始
提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。
10. 合泰的单片机用C语言如何把一个变量定位到指定ROM地址 比如:const unsigned char mydata @0x300;
ROM是保存指令和常量的地方,不是存变量的地方;
如果是访问flash之类的可擦写ROM可以当成是外部RAM使用,一般通过absacc.h
里的XBYTE[addr] 来定义外部地址的。
PS:如果是常量需要保存到ROM的指定地址,查看项目文件下的*.m51文件,里面有程序段及常数段的地址分配,修改code memory 下的BASE(起始地址、基地址)和LENGTH(长度、字节数)值,可以指定程序段或常量的ROM地址。