Всем огромнейшее спасибо!!! Гляньте, что получилось.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Дима 06 сентября 2004 г. 13:06
В ответ на: Как из 4х чаров собрать один лонг? отправлено Дима 06 сентября 2004 г. 00:24

Всем еще раз огромное спасибо!!! Теперь все работает!!!
Попробовал оба из предложеных методов, смотрите, что получилось. Мне больше понравился вариант с юнионом, хотя и писанины больше.


================================/с юнионом
// 83 data.LBytes.data4=0x12;
LDI R16,18
STD Y+3,R16
// 84 data.LBytes.data3=0x34;
LDI R16,52
STD Y+2,R16
// 85 data.LBytes.data2=0x56;
LDI R16,86
STD Y+1,R16
// 86 data.LBytes.data1=0x78;
LDI R16,120
ST Y,R16
// 87
// 88
// 89 USART_Transmit((char)(data.l>>24));
LDD R19,Y+3
MOV R16,R19
RCALL USART_Transmit
// 90 USART_Transmit((char)(data.l>>16));
LDD R18,Y+2
MOV R16,R18
RCALL USART_Transmit
// 91 USART_Transmit((char)(data.l>>8));
LDD R17,Y+1
MOV R16,R17
RCALL USART_Transmit
// 92 USART_Transmit((char)data.l);
LD R16,Y
RCALL USART_Transmit
================================


===========================================/с указателями
// 63 *((char*)(&data)) = data3;
MOVW R17 : R16,R5 : R4
STD Y+1,R16
// 64 *((char*)(&data)+1) = data2;
MOVW R17 : R16,R9 : R8
STD Y+2,R16
// 65 *((char*)(&data)+2) = data1;
STD Y+3,R13
// 66 *((char*)(&data)+3) = data0;
LD R16,Y
STD Y+4,R16
// 67
// 68 USART_Transmit((char)(data>>24));
LDD R19,Y+4
MOV R16,R19
RCALL USART_Transmit
// 69 USART_Transmit((char)(data>>16));
LDD R18,Y+3
MOV R16,R18
RCALL USART_Transmit
// 70 USART_Transmit((char)(data>>8));
LDD R17,Y+2
MOV R16,R17
RCALL USART_Transmit
// 71 USART_Transmit((char)data);
LDD R16,Y+1
RCALL USART_Transmit
======================================


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru