51单片机变量 51的单片机变量是怎么个定义法。全局变量,局部变量都放在什么存储器里的
发布网友
发布时间:2022-05-07 10:58
我来回答
共2个回答
热心网友
时间:2023-10-27 13:52
不能这样定义,这样定义是错的。你这个是赋值,不是定义在0x22单元格里。
unsigned char bdata SS _at_ 0x22;
只有在Keil编译环境下才可以这样使用。还有,这种语法不适合用C语言,我说的是不适合,不是不能用。C语言里面的指针就是针对这个的,不建议使用 _at_ 进行变量在RAM中固定,这样对程序编译优化时,带来很多麻烦,也得不到充分的优化。
其实用C语言指针的方法是可行的。
bdata区虽然有自己独立的位地址,但你用的是char型 ,是一个字节的,所以你说的0x22只是bdata区的字节地址,而不是位地址,那麽用C语言的方式实现 就是这样:
unsigned char *p;
p=0x22;
*p=50;
*p 表示指向0x22所在的单元格,就是将50赋值到0x22地址所指向的单元格里。
再从另一个角度讲,如果你没于传参或改变实参的情况下,不建议使用这类,即使有,也不是很建议。因为单片机高手是不会用_at_这类关键字进行变量定位的。
有什么疑问可以一起探讨。
希望我的回答对你有帮助,谢谢。追问哦,明白了。。。谢谢!
再问个问题 keil u2能软仿真那种波形么 比如用延时产生一个方波,在u2能看到么?它上面有performance analyzer窗口 ,是看波形的吗 怎么用的? 还有像mplab sim中的外加激励一样的东东u2有吗?
热心网友
时间:2023-10-27 13:52
这个应该是汇编时才要考虑的吧?地址寻址一般都有专用的地址寄存器
C语言的话都是编译软件自动反汇编下载到单片机的,这些都不用考虑的。
热心网友
时间:2023-10-27 13:52
不能这样定义,这样定义是错的。你这个是赋值,不是定义在0x22单元格里。
unsigned char bdata SS _at_ 0x22;
只有在Keil编译环境下才可以这样使用。还有,这种语法不适合用C语言,我说的是不适合,不是不能用。C语言里面的指针就是针对这个的,不建议使用 _at_ 进行变量在RAM中固定,这样对程序编译优化时,带来很多麻烦,也得不到充分的优化。
其实用C语言指针的方法是可行的。
bdata区虽然有自己独立的位地址,但你用的是char型 ,是一个字节的,所以你说的0x22只是bdata区的字节地址,而不是位地址,那麽用C语言的方式实现 就是这样:
unsigned char *p;
p=0x22;
*p=50;
*p 表示指向0x22所在的单元格,就是将50赋值到0x22地址所指向的单元格里。
再从另一个角度讲,如果你没于传参或改变实参的情况下,不建议使用这类,即使有,也不是很建议。因为单片机高手是不会用_at_这类关键字进行变量定位的。
有什么疑问可以一起探讨。
希望我的回答对你有帮助,谢谢。追问哦,明白了。。。谢谢!
再问个问题 keil u2能软仿真那种波形么 比如用延时产生一个方波,在u2能看到么?它上面有performance analyzer窗口 ,是看波形的吗 怎么用的? 还有像mplab sim中的外加激励一样的东东u2有吗?
热心网友
时间:2023-10-27 13:52
这个应该是汇编时才要考虑的吧?地址寻址一般都有专用的地址寄存器
C语言的话都是编译软件自动反汇编下载到单片机的,这些都不用考虑的。
热心网友
时间:2023-10-27 13:52
不能这样定义,这样定义是错的。你这个是赋值,不是定义在0x22单元格里。
unsigned char bdata SS _at_ 0x22;
只有在Keil编译环境下才可以这样使用。还有,这种语法不适合用C语言,我说的是不适合,不是不能用。C语言里面的指针就是针对这个的,不建议使用 _at_ 进行变量在RAM中固定,这样对程序编译优化时,带来很多麻烦,也得不到充分的优化。
其实用C语言指针的方法是可行的。
bdata区虽然有自己独立的位地址,但你用的是char型 ,是一个字节的,所以你说的0x22只是bdata区的字节地址,而不是位地址,那麽用C语言的方式实现 就是这样:
unsigned char *p;
p=0x22;
*p=50;
*p 表示指向0x22所在的单元格,就是将50赋值到0x22地址所指向的单元格里。
再从另一个角度讲,如果你没于传参或改变实参的情况下,不建议使用这类,即使有,也不是很建议。因为单片机高手是不会用_at_这类关键字进行变量定位的。
有什么疑问可以一起探讨。
希望我的回答对你有帮助,谢谢。追问哦,明白了。。。谢谢!
再问个问题 keil u2能软仿真那种波形么 比如用延时产生一个方波,在u2能看到么?它上面有performance analyzer窗口 ,是看波形的吗 怎么用的? 还有像mplab sim中的外加激励一样的东东u2有吗?
热心网友
时间:2023-10-27 13:52
这个应该是汇编时才要考虑的吧?地址寻址一般都有专用的地址寄存器
C语言的话都是编译软件自动反汇编下载到单片机的,这些都不用考虑的。