less than 1 minute read

BCD / Decimal 변환 해주는 함수

uint8_t B2D(uint8_t byte) 
{
	uint8_t low, high;
	low = byte & 0x0F;
	high = ((byte >> 4) & 0x0F) * 10;
	return high + low;  
}

uint8_t D2B(uint8_t byte) 
{
	return ((byte/10)<<4) + (byte%10);
}

uint16_t WordD2B(uint16_t word)
{
	uint16_t len, i; 
	uint16_t divisor=1;
	uint16_t pstNum;
	uint16_t u16Ret = 0;
	len = numlen(word);					//입력받은 10진수의 자리수를 len에 넣는다.
	for(i=1 ; i<len ; i++)
	{
		//divisor에 자리수만큼 10을 곱한수를 넣는다.(입력받은 10진수를 한자리씩 떼어낼 때 사용) 
		divisor*=10;
	}
	for(i=len ; i>0 ; i--)
	{
		//자리수만큼 반복 
		pstNum = word/divisor; 			//제일 큰자리의숫자부터 하나씩 끊은 정수를 pstNum에 입력 
		u16Ret |= pstNum << (4*(i-1));
		word = word-pstNum*divisor;		//이미 출력한 자리의 숫자를 빼서 없앤다. 
		divisor /= 10;					//자리수가 하나 줄었으므로 10으로 한번 나눈다. 
	} 
	return u16Ret;
}

Tags: ,

Categories:

Updated: