工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

在PICC中使用常数指针

作者:dolphin时间:2012-10-31

在PIC中使用常数指针

常数指针使用非常灵活,可以给编程带来很多便利。

我测试过,PICC也支持常数指针,并且也会自动分页,实在是一大喜事。

定义一个指向8位RAM数据的常数指针(起始为0x00):

#define DBYTE ((unsigned char volatile *) 0)

定义一个指向16位RAM数据的常数指针(起始为0x00):

#define CWORD ((unsigned int volatile *) 0)


((unsigned char volatile *) 0)中的0表示指向RAM区域的起始地址,可以灵活修改它。

DBYTE[x]中的x表示偏移量。

下面是一段代码1:

char a1,a2,a3,a4;

#define DBYTE ((unsigned char volatile *) 0)

void main(void){
long cc=0x89abcdef;
a1=DBYTE[0x24];
a2=DBYTE[0x25];
a3=DBYTE[0x26];
a4=DBYTE[0x27];
while(1);
}

2:

char a1,a2,a3,a4;

#define DBYTE ((unsigned char volatile *) 0)

void pp(char y){
a1=DBYTE[y++];
a2=DBYTE[y++];
a3=DBYTE[y++];
a4=DBYTE[y];
}


void main(void){
long cc=0x89abcdef;
char x;
x=cc;
pp(x);

while(1);
}

3:

char a1,a2,a3,a4;

#define DBYTE ((unsigned char volatile *) 0)

void pp(char y){
a1=DBYTE[y++];
a2=DBYTE[y++];
a3=DBYTE[y++];
a4=DBYTE[y];
}


void main(void){
bank1 static long cc=0x89abcdef;
char x;
x=cc;
pp(x);
while(1);
}


关键词: 使用 DBYTE char void volatile

评论

技术专区