📄 一个4字节bcd数除法的函数.txt
字号:
//********************************************************************//
//Name :Arithmetic_ShenYuShuiLiang
//Input :unsigned char * ptSYJE
// :unsigned char * ptDJ
//Output :void
//Function :Get ShenYuJinE
//D.R.P :QiuHao.
//Date :06.07.08
//********************************************************************//
void Arithmetic_ShenYuShuiLiang(void)
{
// CardBalance[4] ----- xxxxx.xxx
// Settingprice[3] ----- 000xx.xxx
// ShenYuShuiLiang[4] ----- xxxxx.xxx
unsigned char result;
unsigned char temppai=0;
unsigned char temppbi=0;
// unsigned char temppci=0;
unsigned char tempbcdcyenum[4];
unsigned char tempbcdcdj[4];
tempbcdcyenum[0] = CardBalance[0];
tempbcdcyenum[1] = CardBalance[1];
tempbcdcyenum[2] = CardBalance[2];
tempbcdcyenum[3] = CardBalance[3];
tempbcdcdj[0] = 0x00;
tempbcdcdj[1] = Settingprice[0];
tempbcdcdj[2] = Settingprice[1];
tempbcdcdj[3] = Settingprice[2];
timers=0;
do
{
result=BCDBytesSub(tempbcdcyenum,tempbcdcdj,4);
// HexNumGuptoBcd(tempbcdcyenum,4);
BCDBytesAdd(ShenYuShuiLiang,one,4);
// HexNumGuptoBcd(ShenYuShuiLiang,4);
if(tempbcdcyenum[0]==0)
if(tempbcdcyenum[1]<=tempbcdcdj[1])
{
if(tempbcdcyenum[1]<tempbcdcdj[1])
temppai=1;
else
{
if(tempbcdcyenum[2]<=tempbcdcdj[2])
{
if(tempbcdcyenum[2]<tempbcdcdj[2])
temppai=1;
else
{
if(tempbcdcyenum[3]<=tempbcdcdj[3])
{
if(tempbcdcyenum[3]<tempbcdcdj[3])
{
temppai=1;
}
}
}
}
}
}
}
while(!temppai);
Delay1TCY();
temppbi=3;
// while(!((*tempbcdcyenum)&0xf0))
while(temppbi)
{
--temppbi;
temppai=(*tempbcdcyenum)&0x0f;
temppai=temppai<<4;
(*tempbcdcyenum)=temppai;
temppai=(*(tempbcdcyenum+1))&0xf0;
temppai=temppai>>4;
*(tempbcdcyenum)&=0xf0;
(*tempbcdcyenum) |= temppai;
temppai=(*(tempbcdcyenum+1))&0x0f;
temppai=temppai<<4;
*(tempbcdcyenum+1)&=0x0f;
*(tempbcdcyenum+1)|=temppai;
temppai=(*(tempbcdcyenum+2))&0xf0;
temppai=temppai>>4;
*(tempbcdcyenum+1)&=0xf0;
*(tempbcdcyenum+1)|=temppai;
temppai=(*(tempbcdcyenum+2))&0x0f;
temppai=temppai<<4;
*(tempbcdcyenum+2)&=0x0f;
*(tempbcdcyenum+2)|=temppai;
temppai=(*(tempbcdcyenum+3))&0xf0;
temppai=temppai>>4;
*(tempbcdcyenum+2)&=0xf0;
*(tempbcdcyenum+2)|=temppai;
temppai=(*(tempbcdcyenum+3))&0x0f;
temppai=temppai<<4;
*(tempbcdcyenum+3)&=0x0f;
*(tempbcdcyenum+3)=temppai;
}
Delay1TCY();
while(!(ShenYuShuiLiang[0]&0xf0))
{
temppai=ShenYuShuiLiang[0]&0x0f;
temppai=temppai<<4;
ShenYuShuiLiang[0]=temppai;
temppai=ShenYuShuiLiang[1]&0xf0;
temppai=temppai>>4;
ShenYuShuiLiang[0] &= 0xf0;
ShenYuShuiLiang[0] |= temppai;
temppai=ShenYuShuiLiang[1]&0x0f;
temppai=temppai<<4;
ShenYuShuiLiang[1] &= 0x0f;
ShenYuShuiLiang[1]|=temppai;
temppai=ShenYuShuiLiang[2]&0xf0;
temppai=temppai>>4;
ShenYuShuiLiang[1] &= 0xf0;
ShenYuShuiLiang[1]|=temppai;
temppai=ShenYuShuiLiang[2]&0x0f;
temppai=temppai<<4;
ShenYuShuiLiang[2] &= 0x0f;
ShenYuShuiLiang[2]|=temppai;
temppai=ShenYuShuiLiang[3]&0xf0;
temppai=temppai>>4;
ShenYuShuiLiang[2] &= 0xf0;
ShenYuShuiLiang[2]|=temppai;
temppai=ShenYuShuiLiang[3]&0x0f;
temppai=temppai<<4;
ShenYuShuiLiang[3] &= 0x0f;
ShenYuShuiLiang[3] =temppai;
}
Delay1TCY();
do
{
result=BCDBytesSub(tempbcdcyenum,tempbcdcdj,4);
// HexNumGuptoBcd(tempbcdcyenum,4);
BCDBytesAdd(ShenYuShuiLiang,one,4);
// HexNumGuptoBcd(ShenYuShuiLiang,4);
if(tempbcdcyenum[0]==0)
if(tempbcdcyenum[1]<=tempbcdcdj[1])
{
if(tempbcdcyenum[1]<tempbcdcdj[1])
temppai=1;
else
{
if(tempbcdcyenum[2]<=tempbcdcdj[2])
{
if(tempbcdcyenum[2]<tempbcdcdj[2])
temppai=1;
else
{
if(tempbcdcyenum[3]<=tempbcdcdj[3])
{
if(tempbcdcyenum[3]<tempbcdcdj[3])
{
temppai=1;
}
}
}
}
}
}
}
while(!temppai);
Delay1TCY();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -