KungFu8是一种功耗极低,高性能单时钟周期的8位单片机,结构简洁,有利于提高代码密度并简化程序设计。
KungFu8 使用 ChipOn-IDE 编译器,但目前编译器只支持通过在RAM中建立表格,当表格略为大一点时,占据过多的RAM空间 以及初始化执行程序空间,因此,想了一个办法,利用嵌入式汇编,搞了一个小程序,把表格建立在ROM中,直接查询ROM中表格数据,大大减少了RAM占用空间。
本程序封装成函数,方便C语言直接调用。
查询最大 256字节的 C程序:
// a为入口参数,范围:0-255, 返回查表值
char table_256(unsigned char a)
{ __asm // 查 256字节表
ADD PCL,R0
.DT '1','2','3',0; // 最大256字节数据
__endasm;
}
如果查询字节数大于256,可自行扩展,下面例举了一个查询 512字节的 C程序:
// a为入口参数,范围:0-511, 返回查表值
char table_512(unsigned int a)
{ if (a>>8)
{ __asm // 查高 256字节表
ADD PCL,R0
.DT 'A','B','C',0; // 高256字节数据
__endasm;
}
else
{ __asm // 查低 256字节表
ADD PCL,R0
.DT '1','2','3',0; // 低256字节数据
__endasm;
}
}
|