- 打卡等级:以坛为家I
- 打卡总天数:312
- 最近打卡:2025-03-11 13:20:13
荣誉版主
- 积分
- 5395
|
发表于 2022-12-17 05:38:16
|
显示全部楼层
STC8H系列单片机C51定点库、浮点库自动调用专用运算库函数,合适有效地插入了STC8H系列的特色----准16位乘除法指令。并且针对
STC8H系列集成了16位硬件乘除法器,作了特别优化。
增加了对所有关联到的无符号、有符号int型,无符号、有符号long型 和 float型变量的乘除运算,均作了运算速度大幅度提升,为方便使用,
以外挂库形式加入,实行对C51内库自动替换,无缝嵌入,其中最具有特色的是float型的除法运算,用STC8H系列的准16位乘除法指令,
代替原Keil C51的加减法模拟除法程序,大幅度地提升了原float型的除法的运算速度,解决了原51浮点除法特慢的通病。
内部函数库列表:
extern int16 uishr(int16 value1, uint8 value2); // 16位无符号数右移N位
extern int32 slshr(int32 value1, uint8 value2); // 32位有符号数右移N位
extern int32 ulshr(int32 value1, uint8 value2); // 32位无符号数右移N位
extern int16 ishl(int16 value1, uint8 value2); // 16位数左移N位
extern int32 lshl(int32 value1, uint8 value2); // 32位数左移N位
extern uint16 imul(uint16 value1,uint16 value2); // 16位*16位-->16位(无符号二进制乘法)
extern uint16 uidiv(uint32 value1,uint16 value2); // 16位/16位-->16位(无符号二进制除法)
extern uint32 lmul(uint32 value1,uint32 value2); // 32位*32位-->32位(无符号二进制乘法)
extern uint32 uldiv(uint32 value1,uint32 value2); // 32位/32位-->32位(无符号二进制除法)
extern float fpadd(float value1, float value2); // 二进制浮点数加法
extern float fpsub(float value1, float value2); // 二进制浮点数减法
extern float fpmul(float value1, float value2); // 二进制浮点数快速乘法
extern float fpdiv(float value1, float value2); // 二进制浮点数快速除法
extern float fcastl(int32 value1); // 32位有符号数-->二进制浮点数
......
目前在做程序最后优化及库功能测试,等测试通过了即上传公开,包括函数库及库程序所有原型!
静请关注!
谢谢!
|
|