rfid_conversions.c

来自「找的一个用U2270B开发的射频卡项目文件」· C语言 代码 · 共 380 行

C
380
字号
// $Id: rfid_Conversions.c,v 1.1 2006/09/25 22:08:15 tprescott Exp $
/*****************************************************
Project : rfid_Conversions.c
Date    : 9/08/2006
Author  : Toby Prescott                   
Company : Atmel                           
Comments: AVR Studio GCC

Revisions:
	v1.0 - Started written for CodeVision 
	v2.6 - Clean for WinAVR
*****************************************************/

#include "rfid_Conversions.h"

// *******************************************************************************
// *   Converts a hex number into an ASCII string for display 
// *******************************************************************************
void conv_Char2HexStr2(unsigned char *outStr, unsigned char inChar)
{ 
	unsigned char tmp1, tmp0;
	
	tmp1 = inChar >> 4;			// Separate into high four bits
	tmp0 = inChar & 0x0F;                   // and low four bits
	
	if(tmp1 < 10){*outStr = tmp1+'0';}	// If 0-1 return ASCII value
	else if(tmp1 < 16){*outStr = tmp1+'7';} // If A-F return ASCII value
	outStr++;				// Increment pointer to next string value
	
	if(tmp0 < 10){*outStr = tmp0+'0';}	// If 0-1 return ASCII value
	else if(tmp0 < 16){*outStr = tmp0+'7';} // If A-F return ASCII value
	outStr++;				// Increment pointer to next string value
} 

void conv_HexArray2Ascii(unsigned char *outStr, unsigned char *inStr) 
{
	unsigned char i, j, k=0, workingByte, carryVal=0;
	unsigned char string1[12] = {0}, string2[12] = {0};
	
	workingByte = *inStr--;
	for(j=1; j<39; j++)
	{
		if(k == 8)
		{
			workingByte = *inStr--;
			k=0;
		}
		for(i=0; i<12; i++){string2[i]=0;}
		if((workingByte&0x01) == 0x01)
		{
			switch(j){
			case 1:
				string2[11]=1;
				break;
			case 2:
				string2[11]=2;
				break;
			case 3:
				string2[11]=4;
				break;
			case 4:
				string2[11]=8;
				break;
			case 5:
				string2[10]=1;
				string2[11]=6;
				break;
			case 6:
				string2[10]=3;
				string2[11]=2;
				break;
			case 7:
				string2[10]=6;
				string2[11]=4;
				break;
			case 8:
				string2[9]=1;
				string2[10]=2;
				string2[11]=8;
				break;
			case 9:
				string2[9]=2;
				string2[10]=5;
				string2[11]=6;
				break;
			case 10:
				string2[9]=5;
				string2[10]=1;
				string2[11]=2;
				break;
			case 11:
				string2[8]=1;
				string2[9]=0;
				string2[10]=2;
				string2[11]=4;
				break;
			case 12:
				string2[8]=2;
				string2[9]=0;
				string2[10]=4;
				string2[11]=8;
				break;
			case 13:
				string2[8]=4;
				string2[9]=0;
				string2[10]=9;
				string2[11]=6;
				break;
			case 14:
				string2[8]=8;
				string2[9]=1;
				string2[10]=9;
				string2[11]=2;
				break;
			case 15:
				string2[7]=1;
				string2[8]=6;
				string2[9]=3;
				string2[10]=8;
				string2[11]=4;
				break;
			case 16:
				string2[7]=3;
				string2[8]=2;
				string2[9]=7;
				string2[10]=6;
				string2[11]=8;
				break;
			case 17:
				string2[7]=6;
				string2[8]=5;
				string2[9]=5;
				string2[10]=3;
				string2[11]=6;
				break;
			case 18:
				string2[6]=1;
				string2[7]=3;
				string2[8]=1;
				string2[9]=0;
				string2[10]=7;
				string2[11]=2;
				break;
			case 19:
				string2[6]=2;
				string2[7]=6;
				string2[8]=2;
				string2[9]=1;
				string2[10]=4;
				string2[11]=4;
				break;
			case 20:
				string2[6]=5;
				string2[7]=2;
				string2[8]=4;
				string2[9]=2;
				string2[10]=8;
				string2[11]=8;
				break;
			case 21:
				string2[5]=1;
				string2[6]=0;
				string2[7]=4;
				string2[8]=8;
				string2[9]=5;
				string2[10]=7;
				string2[11]=6;
				break;
			case 22:
				string2[5]=2;
				string2[6]=0;
				string2[7]=9;
				string2[8]=7;
				string2[9]=1;
				string2[10]=5;
				string2[11]=2;
				break;
			case 23:
				string2[5]=4;
				string2[6]=1;
				string2[7]=9;
				string2[8]=4;
				string2[9]=3;
				string2[10]=0;
				string2[11]=4;
				break;
			case 24:
				string2[5]=8;
				string2[6]=3;
				string2[7]=8;
				string2[8]=8;
				string2[9]=6;
				string2[10]=0;
				string2[11]=8;
				break;
			case 25:
				string2[4]=1;
				string2[5]=6;
				string2[6]=7;
				string2[7]=7;
				string2[8]=7;
				string2[9]=2;
				string2[10]=1;
				string2[11]=6;
				break;
			case 26:
				string2[4]=3;
				string2[5]=3;
				string2[6]=5;
				string2[7]=5;
				string2[8]=4;
				string2[9]=4;
				string2[10]=3;
				string2[11]=2;
				break;
			case 27:
				string2[4]=6;
				string2[5]=7;
				string2[6]=1;
				string2[7]=0;
				string2[8]=8;
				string2[9]=8;
				string2[10]=6;
				string2[11]=4;
				break;
			case 28:
				string2[3]=1;
				string2[4]=3;
				string2[5]=4;
				string2[6]=2;
				string2[7]=1;
				string2[8]=7;
				string2[9]=7;
				string2[10]=2;
				string2[11]=8;
				break;
			case 29:
				string2[3]=2;
				string2[4]=6;
				string2[5]=8;
				string2[6]=4;
				string2[7]=3;
				string2[8]=5;
				string2[9]=4;
				string2[10]=5;
				string2[11]=6;
				break;
			case 30:
				string2[3]=5;
				string2[4]=3;
				string2[5]=6;
				string2[6]=8;
				string2[7]=7;
				string2[8]=0;
				string2[9]=9;
				string2[10]=1;
				string2[11]=2;
				break;
			case 31:
				string2[2]=1;
				string2[3]=0;
				string2[4]=7;
				string2[5]=3;
				string2[6]=7;
				string2[7]=4;
				string2[8]=1;
				string2[9]=8;
				string2[10]=2;
				string2[11]=4;
				break;
			case 32:
				string2[2]=2;
				string2[3]=1;
				string2[4]=4;
				string2[5]=7;
				string2[6]=4;
				string2[7]=8;
				string2[8]=3;
				string2[9]=6;
				string2[10]=4;
				string2[11]=8;
				break;
			case 33:
				string2[2]=4;
				string2[3]=2;
				string2[4]=9;
				string2[5]=4;
				string2[6]=9;
				string2[7]=6;
				string2[8]=7;
				string2[9]=2;
				string2[10]=9;
				string2[11]=6;
				break;
			case 34:
				string2[2]=8;
				string2[3]=5;
				string2[4]=8;
				string2[5]=9;
				string2[6]=9;
				string2[7]=3;
				string2[8]=4;
				string2[9]=5;
				string2[10]=9;
				string2[11]=2;
				break;
			case 35:
				string2[1]=1;
				string2[2]=7;
				string2[3]=1;
				string2[4]=7;
				string2[5]=9;
				string2[6]=8;
				string2[7]=6;
				string2[8]=9;
				string2[9]=1;
				string2[10]=8;
				string2[11]=4;
				break;
			case 36:
				string2[1]=3;
				string2[2]=4;
				string2[3]=3;
				string2[4]=5;
				string2[5]=9;
				string2[6]=7;
				string2[7]=3;
				string2[8]=8;
				string2[9]=3;
				string2[10]=6;
				string2[11]=8;
				break;
			case 37:
				string2[1]=6;
				string2[2]=8;
				string2[3]=7;
				string2[4]=1;
				string2[5]=9;
				string2[6]=4;
				string2[7]=7;
				string2[8]=6;
				string2[9]=7;
				string2[10]=3;
				string2[11]=6;
				break;
			case 38:
				string2[0]=1;
				string2[1]=3;
				string2[2]=7;
				string2[3]=4;
				string2[4]=3;
				string2[5]=8;
				string2[6]=9;
				string2[7]=5;
				string2[8]=3;
				string2[9]=4;
				string2[10]=7;
				string2[11]=2;
				break;
			default:
				break;
			}
		}
		for(i=0; i < 12; i++)
		{
			string1[11-i] = string1[11-i]+string2[11-i]+carryVal;
			if(string1[11-i] >= 10)
			{
				string1[11-i] = string1[11-i]-10;
				carryVal = 1;
			}
			else{carryVal = 0;}
		}
		workingByte = workingByte>>1; 
		k++;
	}
	for(i=0; i < 12; i++){*outStr++ = string1[i]+'0';}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?