Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.12.2007, 16:29
|
|
Вид на жительство
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Старший и младшие байты
Если мне надо разбить число на старший и младший байт, я пишу:
OCR1AH = (char)(pwm_val›› 8 );
OCR1AL = (char)pwm_val;
А если мне надо наоборот, собрать число из старшего и младшего байтов?
|
|
|
|
07.12.2007, 16:43
|
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Код:
|
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; |
__________________
разум когда-нибудь победит... (с)
|
|
|
|
07.12.2007, 16:53
|
|
Вид на жительство
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо.
|
|
|
|
07.12.2007, 22:38
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Этот код работать не будет, вот правильный:
Код:
|
int test;
unsigned char t1,t2;
t1=0x12;
t2=0x34;
test=t1;
test= (test‹‹8) | t2; |
|
|
|
|
07.12.2007, 23:21
|
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Не будет работать - это смело
Хайтек - пик
Код:
|
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 |
__________________
разум когда-нибудь победит... (с)
|
|
|
|
07.12.2007, 23:28
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от 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; |
|
|
|
|
08.12.2007, 00:00
|
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Внимательней посмотрите в авр-студио... ![Улыбка](images/smilies/icon_smile.gif)
Ладно, в одном моменте я лоханулся - вместо test+= t2; лучше поставить test|=t2;
Это сэкономит 1 команду. Тем не менее, в любом варианте код рабочий.
__________________
разум когда-нибудь победит... (с)
|
|
|
|
08.12.2007, 00:03
|
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Внимательней посмотрите в авр-студио... ![Улыбка](images/smilies/icon_smile.gif)
Ладно, в одном моменте я лоханулся - вместо test+= t2; лучше поставить test|=t2;
Это сэкономит 1 команду. Тем не менее, в любом варианте код рабочий.
__________________
разум когда-нибудь победит... (с)
|
|
|
|
08.12.2007, 00:23
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Ну, если это вариант рабочий...
-- Прилагается рисунок: --
![](https://kazus.ru/nuke/users_images/07122007/9260317.JPG)
|
|
|
|
08.12.2007, 01:22
|
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
да
-- Прилагается рисунок: --
__________________
разум когда-нибудь победит... (с)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:19.
|
|