Ele*_*ger 4 c embedded pic hi-tech-c
码:
static volatile unsigned char TMR0 @ 0x01;
static volatile unsigned char PORTA @ 0x05;
static volatile unsigned char PORTB @ 0x06;
static volatile unsigned char PORTC @ 0x07;
Run Code Online (Sandbox Code Playgroud)
此代码来自PIC16F877A的HT-PICC编译器pic.h库文件
我理解静态volatile和其他关键字的含义.这里Timer0的寄存器地址是0x01,但为什么它们@在它前面使用呢?它与指针有关吗?
它是许多嵌入式编译器中常见的编译器扩展,允许您将变量放在绝对存储器地址中.
来自HI-TECH C编译器手册:
3.5.4绝对变量
大多数变量可以通过遵循构造@ 地址的声明来定位在绝对地址,其中address是存储器中要定位变量的位置.这种变量称为绝对变量.
3.5.4.1数据存储器中的绝对变量
绝对变量主要用于将C标识符的地址与特殊功能寄存器等同,但可用于将普通变量放在数据存储器的绝对地址中.
在你的例子中:
static volatile unsigned char TMR0 @ 0x01;
Run Code Online (Sandbox Code Playgroud)
TMR0 可能是8位无符号硬件寄存器,存在于地址0x01.
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |