реклама на сайте
подробности

 
 
> Ошибка операции __swap_nibbles ?
SZ0
сообщение Aug 22 2008, 12:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



IAR C/C++ Compiler for AVR 5.11B/W32 (5.11.2.5)
В следующем коде __swap_nibbles выполняется ошибочно:

Код
    132           buffer = byte;    //передача младших битов 3-0
   \   00000034   2F10               MOV     R17, R16
    133           __swap_nibbles(buffer);//обмен битов
   \   00000036   2F21               MOV     R18, R17
   \   00000038   9522               SWAP    R18
    134           buffer &= lcd_mask;    //выделим старшие биты 7-4 сбросив остальные
   \   0000003A   7F10               ANDI    R17, 0xF0
    135           LCD_PORT &= ~lcd_mask;    //сбросим биты на шине данных ЖКИ
   \   0000003C   91200105           LDS     R18, 261
   \   00000040   702F               ANDI    R18, 0x0F
   \   00000042   93200105           STS     261, R18


Как видим, обмен битов происходит в другом регистре. А buffer используется дальше, нисколько не изменённый swap. Как исправить такое?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016