ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
166761 Топик полностью
Brains (16.09.2009 20:57, просмотров: 1) ответил rezident на А пардон! У вас же переменная типа short (2 байта), а читаете вы значение из 8-ми битного порта. Так что компилятор в своем праве: сначала читает значение 8-ми битной переменной в 16-ти разрядный регистр, а потом значение 16-ти разрядного регистра
Ваш пример работает, но мне, к сожалению не подходит. Вот более полный код: int main(void) { unsigned char in_byte; in_byte = ReadExtMem(); //--------------------------------- unsigned short ReadExtMem(void) { unsigned short result; result= DATA_IN; result=__swap_bytes(result); result+=DATA_IN; return result; } А вот что получается: unsigned short result; 25 result= DATA_IN; \ 000000 5F426102 MOV.B &0x261, R15 \ 000004 4F4F MOV.B R15, R15 \ 000006 0C4F MOV.W R15, R12 26 result=__swap_bytes(result); \ 000008 0F4C MOV.W R12, R15 \ 00000A 8F10 SWPB R15 \ 00000C 0C4F MOV.W R15, R12 27 result+=DATA_IN; \ 00000E 5F426102 MOV.B &0x261, R15 \ 000012 4F4F MOV.B R15, R15 \ 000014 0C5F ADD.W R15, R12 28 return result; \ 000016 1001 RETA