Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 07.12.2007, 16:29  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию Старший и младшие байты

Если мне надо разбить число на старший и младший байт, я пишу:
OCR1AH = (char)(pwm_val›› 8 );
OCR1AL = (char)pwm_val;

А если мне надо наоборот, собрать число из старшего и младшего байтов?
Реклама:
retcom вне форума  
Непрочитано 07.12.2007, 16:43  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Код:
int test;
unsigned char t1,t2;
t1=0x12;
t2=0x34;
test=t1 ‹‹8;
test|= t2;
Для кодевижин -
Код:
int test;
unsigned char t1,t2;
t1=0x12;
t2=0x34;
test=(int)t1 ‹‹8;
test|= t2;
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 07.12.2007, 16:53  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Спасибо.
retcom вне форума  
Непрочитано 07.12.2007, 22:38  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Этот код работать не будет, вот правильный:
Код:
int test;
unsigned char t1,t2;
t1=0x12;
t2=0x34;
test=t1;
test= (test‹‹8) | t2;
dimonbest вне форума  
Непрочитано 07.12.2007, 23:21  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Не будет работать - это смело
Хайтек - пик
Код:
125:               int test;
126:               unsigned char t1,t2;
127:               t1=0x12;
   0C2    3012     MOVLW 0x12
   0C3    1283     BCF 0x3, 0x5
   0C4    1303     BCF 0x3, 0x6
   0C5    00B6     MOVWF 0x36
128:               t2=0x34;
   0C6    3034     MOVLW 0x34
   0C7    00B7     MOVWF 0x37
129:               test=t1 ‹‹8;
   0C8    01B8     CLRF 0x38
   0C9    3012     MOVLW 0x12
   0CA    00B9     MOVWF 0x39
130:               test+= t2; 
   0CB    3034     MOVLW 0x34
   0CC    07B8     ADDWF 0x38, F
   0CD    1803     BTFSC 0x3, 0
   0CE    0AB9     INCF 0x39, F
codevision
Код:
           	   ;     257 int test;
                 ;    258 unsigned char t1,t2;
                 ;    259 t1=0x12;
0000df 9724      	SBIW R28,4
                 ;	test -› Y+2
                 ;	t1 -› Y+1
                 ;	t2 -› Y+0
0000e0 e1e2      	LDI  R30,LOW(18)
0000e1 83e9      	STD  Y+1,R30
                 ;     260 t2=0x34;
0000e2 e3e4      	LDI  R30,LOW(52)
0000e3 83e8      	ST   Y,R30
                 ;    261 test=t1 ‹‹8;
0000e4 81a9      	LDD  R26,Y+1
0000e5 e0e8      	LDI  R30,LOW(8)
0000e6 d0f6      	RCALL __LSLB12
0000e7 e0f0      	LDI  R31,0
0000e8 83ea      	STD  Y+2,R30
0000e9 83fb      	STD  Y+2+1,R31
                 ;     262 test+= t2; 
0000ea 81e8      	LD   R30,Y
0000eb 81aa      	LDD  R26,Y+2
0000ec 81bb      	LDD  R27,Y+2+1
0000ed e0f0      	LDI  R31,0
0000ee 0fea      	ADD  R30,R26
0000ef 1ffb      	ADC  R31,R27
0000f0 83ea      	STD  Y+2,R30
0000f1 83fb      	STD  Y+2+1,R31
iar
Код:
     34          int test;
     35          unsigned char t1,t2;
     36          t1=0x12;
      00000000   E112               LDI     R17, 18
     37          t2=0x34;
      00000002   E324               LDI     R18, 52
     38          test=t1 ‹‹8;
      00000004   E000               LDI     R16, 0
     39          test+= t2;  
      00000006   E030               LDI     R19, 0
      00000008   0F02               ADD     R16, R18
      0000000A   1F13               ADC     R17, R19
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 07.12.2007, 23:28  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от user_ushastyj
Код:
int test;
unsigned char t1,t2;
test=t1 ‹‹8;
В этой строчке test будет равен нулю, так как сдвигаешь переменную t1 , а она однобайтная.
Проверил в аврстудио...
А вот так тоже будет работать:
Код:
int test; 
unsigned int t1,t2; 
t1=0x12; 
t2=0x34; 
test=t1 ‹‹8; 
test+= t2;
dimonbest вне форума  
Непрочитано 08.12.2007, 00:00  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Внимательней посмотрите в авр-студио...
Ладно, в одном моменте я лоханулся - вместо test+= t2; лучше поставить test|=t2;
Это сэкономит 1 команду. Тем не менее, в любом варианте код рабочий.
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 08.12.2007, 00:03  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Внимательней посмотрите в авр-студио...
Ладно, в одном моменте я лоханулся - вместо test+= t2; лучше поставить test|=t2;
Это сэкономит 1 команду. Тем не менее, в любом варианте код рабочий.
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 08.12.2007, 00:23  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Ну, если это вариант рабочий...

-- Прилагается рисунок: --
dimonbest вне форума  
Непрочитано 08.12.2007, 01:22  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

да

-- Прилагается рисунок: --

__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IAR выделить из ИНТ младший старший байт? prottoss Proteus, KiCAD и другие ECAD 2 25.07.2005 22:57


Часовой пояс GMT +4, время: 22:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot