最近更新,增加了一些实用小程序,完善库函数。
上传最新库,附带全部源程序~~~
/***************************************************************************************
Model : global.h
Description : Head file of defining global variable.
Author : CLR
Create Time : 2011-09-29
Version ID : 1.3
用 途 :中颖SH79/88/89F51系列MCU
作 者 :许意义
21ic ID :LAOXU
中颖论坛 : bbs.21ic.com
****************************************************************************************/
#ifndef _GLOBAL_H
#define _GLOBAL_H
#pragma MODDP2 // 打开中颖单片机双DPTR功能,加速数据传送
//#pragma NOMODDP2 // 关闭中颖单片机双DPTR功能
/*--------------------------------------------------------------------------------------*/
/* Resource - math.asm */
/*--------------------------------------------------------------------------------------*/
extern uint8 ascii_hex(uint8 value1); // 1位 ASCII --> 1位 HEX(低半字节)
extern uint8 hex_ascii(uint8 value1); // 1位 HEX(低半字节)--> 1位 ASCII
extern uint8 bcd8_hex(uint8 value1); // 8位 BCD --> 8位 HEX
extern uint16 bcd16_hex(uint16 value1); // 16位 BCD -->16位 HEX
extern uint32 bcd32_hex(uint32 value1); // 32位 BCD -->32位 HEX
extern uint16 hex8_bcd(uint8 value1); // 8位 HEX -->16位 BCD
extern uint32 hex16_bcd(uint16 value1); // 16位 HEX -->32位 BCD
extern uint32 hex32_bcd(uint32 value1); // 32位 HEX -->32位 BCD
extern uint32 bin16_bcd(uint16 value1); // 16位 HEX -->32位 BCD(DengMiao'非典'算法)
extern uint32 bin32_bcd(uint32 value1); // 32位 HEX -->32位 BCD(DengMiao'250'算法)
extern uint16 mul8(uint8 value1, uint8 value2); // 8位* 8位-->16位(无符号二进制乘法)
extern uint32 mul16_8(uint16 value1,uint8 value2); // 16位* 8位-->32位(无符号二进制乘法)
extern uint32 mul16(uint16 value1,uint16 value2); // 16位*16位-->32位(无符号二进制乘法)
extern uint32 mul32_8(uint32 value1,uint8 value2); // 32位* 8位-->32位(无符号二进制乘法)
extern uint32 mul32_16(uint32 value1,uint16 value2); // 32位*16位-->32位(无符号二进制乘法)
extern uint32 mul32(uint32 value1,uint32 value2); // 32位*32位-->32位(无符号二进制乘法)
extern uint8 div8(uint8 value1, uint8 value2); // 8位/ 8位--> 8位(无符号二进制除法)
extern uint16 div16_8(uint16 value1,uint8 value2); // 16位/ 8位-->16位(无符号二进制除法)
extern uint16 div16(uint16 value1,uint16 value2); // 16位/16位-->16位(无符号二进制除法)
extern uint32 div32_8(uint32 value1,uint8 value2); // 32位/ 8位-->32位(无符号二进制除法)
extern uint32 div32_16(uint32 value1,uint16 value2); // 32位/16位-->32位(无符号二进制除法)
extern uint32 div32(uint32 value1,uint32 value2); // 32位/32位-->32位(无符号二进制除法)
extern uint8 mod8(uint8 value1, uint8 value2); // 8位% 8位--> 8位(无符号二进制取余数)
extern uint8 mod16_8(uint16 value1,uint8 value2); // 16位% 8位--> 8位(无符号二进制取余数)
extern uint16 mod16(uint16 value1,uint16 value2); // 16位%16位-->16位(无符号二进制取余数)
extern uint8 mod32_8(uint32 value1,uint8 value2); // 32位% 8位--> 8位(无符号二进制取余数)
extern uint16 mod32_16(uint32 value1,uint16 value2); // 32位%16位-->16位(无符号二进制取余数)
extern uint32 mod32(uint32 value1,uint32 value2); // 32位%32位-->32位(无符号二进制取余数)
extern uint8 div8m(uint8 value1, uint8 value2, uint8 data *p); // 8位/ 8位--> 8位(无符号二进制除法及取余数,8位余数存*p)
extern uint16 div16_8m(uint16 value1,uint8 value2,uint8 data *p); // 16位/ 8位-->16位(无符号二进制除法及取余数,8位余数存*p)
extern uint16 div16m(uint16 value1,uint16 value2,uint16 data *p); // 16位/16位-->16位(无符号二进制除法及取余数,16位余数存*p)
extern uint32 div32_8m(uint32 value1,uint8 value2,uint8 data *p); // 32位/ 8位--> 8位(无符号二进制除法及取余数,8位余数存*p)
extern uint32 div32_16m(uint32 value1,uint16 value2,uint16 data *p); // 32位/16位-->16位(无符号二进制除法及取余数,16位余数存*p)
extern uint32 div32m(uint32 value1,uint32 value2,uint32 data *p); // 32位/32位-->32位(无符号二进制除法及取余数,32位余数存*p)
extern int16 smul8(int8 value1, int8 value2); // 8位* 8位-->16位(有符号二进制补码乘法)
extern int32 smul16_8(int16 value1,int8 value2); // 16位* 8位-->32位(有符号二进制补码乘法)
extern int32 smul16(int16 value1,int16 value2); // 16位*16位-->32位(有符号二进制补码乘法)
extern int32 smul32_8(int32 value1,int8 value2); // 32位* 8位-->32位(有符号二进制补码乘法)
extern int32 smul32_16(int32 value1,int16 value2); // 32位*16位-->32位(有符号二进制补码乘法)
extern int32 smul32(int32 value1,int32 value2); // 32位*32位-->32位(有符号二进制补码乘法)
extern int8 sdiv8(int8 value1, int8 value2); // 8位/ 8位--> 8位(有符号二进制补码除法)
extern int16 sdiv16_8(int16 value1,int8 value2); // 16位/ 8位-->16位(有符号二进制补码除法)
extern int16 sdiv16(int16 value1,int16 value2); // 16位/16位-->16位(有符号二进制补码除法)
extern int32 sdiv32_8(int32 value1, int8 value2); // 32位* 8位-->32位(有符号二进制补码乘法)
extern int32 sdiv32_16(int32 value1,int16 value2); // 32位/16位-->32位(有符号二进制补码除法)
extern int32 sdiv32(int32 value1,int32 value2); // 32位/32位-->32位(有符号二进制补码除法)
extern int8 smod8(int8 value1, int8 value2); // 8位% 8位--> 8位(有符号二进制补码取余数)
extern int8 smod16_8(int16 value1,int8 value2); // 16位% 8位--> 8位(有符号二进制补码取余数)
extern int16 smod16(int16 value1,int16 value2); // 16位%16位-->16位(有符号二进制补码取余数)
extern int8 smod32_8(int32 value1,int8 value2); // 32位% 8位--> 8位(有符号二进制补码取余数)
extern int16 smod32_16(int32 value1,int16 value2); // 32位%16位-->16位(有符号二进制补码取余数)
extern int32 smod32(int32 value1,int32 value2); // 32位%32位-->32位(有符号二进制补码取余数)
extern int8 sdiv8m(int8 value1, int8 value2, int8 data *p); // 8位/ 8位--> 8位(有符号二进制除法及取余数,8位余数存*p)
extern int16 sdiv16_8m(int16 value1,int8 value2,int8 data *p); // 16位/ 8位-->16位(有符号二进制除法及取余数,8位余数存*p)
extern int16 sdiv16m(int16 value1,int16 value2,int16 data *p); // 16位/16位-->16位(有符号二进制除法及取余数,16位余数存*p)
extern int32 sdiv32_8m(int32 value1,int8 value2,int8 data *p); // 32位/ 8位--> 8位(有符号二进制除法及取余数,8位余数存*p)
extern int32 sdiv32_16m(int32 value1,int16 value2,int16 data *p); // 32位/16位-->16位(有符号二进制除法及取余数,16位余数存*p)
extern int32 sdiv32m(int32 value1,int32 value2,int32 data *p); // 32位/32位-->32位(有符号二进制除法及取余数,32位余数存*p)
extern uint16 isqrt(uint16 value1); // 16位整数开平方
extern uint32 lsqrt(uint32 value1); // 32位整数开平方
extern uint16 dmul(uint16 value1,uint16 value2); // 16位*16位-->16位(无符号二进制小数乘法)
extern uint16 dsin(uint16 value1); // Y = SIN((PI/2)*X) (16位无符号二进制小数求sin)
// X 取值范围: 0 <= X < 1
extern void ld_pdata(int8 addr1, int8 addr2, int8 len); // @PDATA --> @IDATA(len字节PDATA读入片内IDATA RAM)
extern void st_pdata(int8 addr1, int8 addr2, int8 len); // @IDATA --> @PDATA(len字节片内IDATA RAM存入PDATA)
/* 中颖单片机C51定点库内部调用函数
extern int32 st_r03_r47(void); // R0R1R2R3 ---> R4R5R6R7
extern int16 neg(void); // -(R6R7) ---> R6R7
*/
/* 中颖单片机C51定点库、浮点库自动调用专用运算库函数,合适有效地插入了中颖SH79/88/89系列的特色----准16位乘除指令,对所有
关联到的无符号、有符号int型,无符号、有符号long型 和 float型变量的乘除运算,均作了运算速度大幅度提升,为方便使用,以外
挂库形式加入,实行对C51内库自动替换,无缝嵌入,其中最具有特色的是float型的除法运算,用中颖SH79/88/89系列的准16位乘除指
令,代替原Keil C51的加减法模拟除法程序,大幅度地提升了原float型的除法的运算速度,解决了原51浮点除法特慢的通病。
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 fpmul(float value1, float value2); // 二进制浮点数快速乘法
extern float fpdiv(float value1, float value2); // 二进制浮点数快速除法
*/
#endif |