⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一个4字节bcd数除法的函数.txt

📁 一个基于PIC18F单片机的开发的流量计量仪表
💻 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 + -