Дистанционное управление на ИК-лучах RC5 (продолжение)

PIC версия программы(разные темы)

Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение muzikantgleb (Александр) » 04 ноя 2013, 10:12

Начало темы, примеры, обсуждения.

Доброго времени всем. На старом форуме есть пример от мима управление ИК-лучах RC5. Подскажите почему у меня не компилится СИ вставка ( FCL_COD<<=1;) составной поразрядный сдвиг влево, пишет ошибка! если же написать вот так ( Transmit_Cod.Cod = Transmit_Cod.Cod << 1), то все работает нормально. Что вообще означает префикс FCL_ ? В спарвке по фловкод нашел только ( FCV_, FCM_ и FCC_ ). Версия программы 5.1
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: muzikantgleb
Имя: Александр
(Курск)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение mim (mim) » 04 ноя 2013, 10:24

muzikantgleb писал(а): Что вообще означает префикс FCL_ ?

Это локальная переменная. Локальная переменная - переменная созданная в Макросе (в подпрограмме, в функции). Такая переменная видна только внутри Макроса, память выделяется для нее только на время работы Макроса.
Создай в 5.1 локальную переменную и посмотри в Си как она там называется. Насколько я помню в этой переходной версии Матриксы их называли как-то по другому, что то типа такого FCL_ИМЯ ФУНКЦИИ_ПЕРЕМЕННАЯ. В 4-х и 5.5 они FCL_.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение muzikantgleb (Александр) » 04 ноя 2013, 10:47

Посмотрел, так и пишется FCL_ . Получается мне нужно было написать (FCL_TRANSMIT_COD_COD<<=1;) так компилится, почему вы написали иначе, причина в версии что ли?
Аватар пользователя
Ник: muzikantgleb
Имя: Александр
(Курск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение mim (mim) » 04 ноя 2013, 10:50

muzikantgleb писал(а):Посмотрел, так и пишется FCL_ . Получается мне нужно было написать (FCL_TRANSMIT_COD_COD<<=1;) так компилится, почему вы написали иначе, причина в версии что ли?

Почему иначе? В 4 версии одно, в 5.1 - другое, а в 5.5 - снова как в 4. Ты внимательно читай что я пишу.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение muzikantgleb (Александр) » 04 ноя 2013, 10:59

интересненько! спасибо mim. На самом деле никогда еще не применял локальные переменные и не смотрел особенности работы с ними.
Аватар пользователя
Ник: muzikantgleb
Имя: Александр
(Курск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение muzikantgleb (Александр) » 04 ноя 2013, 18:46

mim, подскажите пожалуйста теперь уже по приемнику. Как понять это выражение в решении (COD_RC5 & 0x03C0) = 832 ? Тут просеиваются старшие 3 бита?
Аватар пользователя
Ник: muzikantgleb
Имя: Александр
(Курск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение mim (mim) » 04 ноя 2013, 19:00

Там есть комментарий...
    Start_Chk_Address = 0b11001101
    //Start = 11
    //Chk = 0
    //Address =01101
    Здесь выделяем адресную часть //Address =01101
    00001101000000 = 832
В каком формате записано число 0x03C0?
Как число 0x03C0 выглядит в двоичном виде?
Сделай пример в ФК
Код: выделить все
COD_RC5=0xFFFF
COD_RC5=COD_RC5 & 0x03C0
и посмотри результат.
Прочитай что такое "маска".
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение muzikantgleb (Александр) » 04 ноя 2013, 19:21

1) число записано в формате hex
2) в двоичном виде оно будет выглядеть 0b1111000000
3) пример собрал число 960
4) маска принимает значения 1-3-7-15-31-63-127 ( для байтовой переменной)
пока не нашел информации, что происходит если переменная иного типа.
Аватар пользователя
Ник: muzikantgleb
Имя: Александр
(Курск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение mim (mim) » 04 ноя 2013, 19:33

muzikantgleb писал(а):1. в двоичном виде оно будет выглядеть 0b1111000000
2. пример собрал число 960
3. маска принимает значения 1-3-7-15-31-63-127 ( для байтовой переменной)


1. 0b0000001111000000 - это есть 960.
2. 0xFFFF&0x03c0
    0b1111111111111111
    0b0000001111000000
    ----------------------------------
    0b0000001111000000
Какое бы ни было число, через маску 0x03c0 пройдут только эти четыре разряда остальные обнуляться, таким образом мы выделяем только нужные нам разряды. В этих разрядах может быть любое число состоящее из 4 разрядов, но порядок его равен номеру этих разрядов.
3. не понял...

ЗЫ читай СИ и этот документ boostc.pdf.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Дистанционное управление на ИК-лучах RC5 (продолжение)

Сообщение muzikantgleb (Александр) » 04 ноя 2013, 19:59

2-е понял, остальное так сразу не изучешь... туговато дается че то.
Аватар пользователя
Ник: muzikantgleb
Имя: Александр
(Курск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

След.

Вернуться в Flowcode PIC

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron