Типа поборол лень. привожу свой вариант правда только для AVR
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено F8 11 августа 2004 г. 16:27
В ответ на: Ох лень матушка меня сегодня обуяла... поделитесь кому не жалко хвункцией на С для перевода из PDU(это который в sms) формата в обычную строку, а я вам СПАСИБО скажу. отправлено F8 11 августа 2004 г. 10:02

правда несовсем на С уж больно гнусное это дело строки на С сдвигать
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