|
правда несовсем на С уж больно гнусное это дело строки на С сдвигать
char HexToChar(char Hex)
{
if(Hex <= '9'){Hex -= '0';}else{Hex -= 0x37;};
return(Hex);
}
void HexStrToStr(char* str, unsigned char len)
{
char* tstr;
tstr = str;
while(len--)
*tstr++ = (HexToChar(*str++)<<4) + HexToChar(*str++);
}
void ShlStr(char* str, unsigned char len)
{
asm("mov r30,r16");
asm("mov r31,r17");
asm("ld r16,Z");
asm("clc");
asm("sbrc r16,7");
asm("sec");
asm("andi r16,0x7F");
asm("st Z+,r16");
do{
asm("ld r16,Z");
asm("rol r16");
asm("st Z+,r16");
}while(--len);
}
void PDUToStr(char* PDU, unsigned char len)
{/*len - к-во символов короче поле UDL*/
HexStrToStr(PDU,len - len/8);
while(--len)
{
ShlStr(PDU++,len);
}
*++PDU=0;
}
E-mail: info@telesys.ru