Pic Basic pro для начинающих
|
|
MAX232 |
Дата: Ср, 21.03.2012, 04:23 | Сообщение # 796 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Quote (anatol) Может скажешь и про Корабельникова ничего не слышал?
Если честно то нет, а как применительно к PicBasicPRO можно сделать ЧМЗ ? как считать данные с порта?
|
|
|
|
anatol |
Дата: Ср, 21.03.2012, 08:37 | Сообщение # 797 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
А вот эту книгу "Учимся программировать микроконтроллеры PIC на языке PicBasicPro В.Н. Хилинский 2007.г" на сервере не видел? Тогда адрес Учимся ... PicBasicPro В.Н. Хилин. Здесь помогают, а не учат основам. В книге в частности на странице 49 - порязрядные операторы. А напрямую через оператор присваивания значения переменной: a=PORTX, где Х - A,B...номер порта.
Сообщение отредактировал
anatol - Ср, 21.03.2012, 09:07
|
|
|
|
MAX232 |
Дата: Ср, 21.03.2012, 09:10 | Сообщение # 798 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Я учился по Чаку Хелибайку, Хилиского позже нашел, когда уже основы изучил. Правильно заметили, здесь помогают, а не ГОВОРЯТ О ТОМ ЧТО ПОМОГАЮТ. В чем сложность подсказать непонимаю ?
До того как предложили решение:
Quote (holyuser) IF x=0 THEN PORTB = PORTB | %00000111 ' утанавливаются первые (младшие) 3 бита IF x=0 THEN PORTB = PORTB & %11111000 ' нулируются младшие 3 бита
Я использовал следующий алгоритм:
PORT.0=0 ' обнуляем PORT.1=0 PORT.2=0 PORT.3=0 IF x=0 THEN PORT.1=1 ' сдвигаем единичку в зависимости от условий IF x=1 THEN PORT.2=1
Таким образом изменениям подвергаются только первые 4 порта B , единственный недостаток обработка только по одному выводу.Добавлено (21.03.2012, 09:10) ---------------------------------------------
Quote (anatol) В книге в частности на странице 49 - порязрядные операторы. А напрямую через оператор присваивания значения переменной: a=PORT.X
Спасибо за подсказку, но я так и не понял как можно присвоить переменной выводы порта B к примеру с B0 по B3 (то есть первые 4 выхода).
|
|
|
|
anatol |
Дата: Ср, 21.03.2012, 09:14 | Сообщение # 799 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Quote (MAX232) сдвигаем единичку в зависимости от условий Quote (anatol) Весь фокус в том что регистры в ПИКах (порты в том числе) работают через аккумулятор, т.е. что есть в аккумуляторе, то будет записано в порт. Повторюсь - вы в аккумулятор занесли "1" в определенный разряд. В остальных при этом "0". И записываете в порт не разряд, а весь аккумулятор. Извини с телефона работаю - разжевать накладно.Добавлено (21.03.2012, 09:14) ---------------------------------------------
Quote (MAX232) Спасибо за подсказку, но я так и не понял как можно присвоить переменной выводы порта B к примеру с B0 по B3 (то есть первые 4 выхода). Quote (anatol) В книге в частности на странице 49 - порязрядные операторы. Операции из Булевой алгебры - это основы работы с двоичными числами.
|
|
|
|
ivan_fd |
Дата: Ср, 21.03.2012, 11:38 | Сообщение # 800 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (MAX232) Спасибо за подсказку, но я так и не понял как можно присвоить переменной выводы порта B к примеру с B0 по B3 (то есть первые 4 выхода).
Если я Вас правильно понял. Делаете маску, по тому какие биты Вам нужно. В Вашем случаи с B0 по B3 - это %00001111.
Перменная = PORTB & %00001111
|
|
|
|
anatol |
Дата: Ср, 21.03.2012, 12:37 | Сообщение # 801 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
ivan_fd, я немного ошибся с ником и выразил удивление. У MAX232 страдают основы. 1. Переменная не может быть с произвольным количеством байт - т.е. должно соответствовать бит, байт, слово... 2. Маска - от слова маскировать - т.е. удаление не требующихся бит или даже байта. 3. Про сдвиги я молчу пока. В примере ivan_fd Перменная = PORTB & %00001111 Перменная - это то что плучится для дальнейшей работы - можно назвать (присвоить имя) "кот в сапогах" PORTB = состоянию порта В пред операцией (можно и другой порт к примеру А или Е...) & = логическому "И" что при поразрядном сложении (см. ниже) обнуляет старшие разряды % = признак двоичного числа за ним 00001111 = двоичное число
Таким образом если порт В = 10101010 то результат будет 00001010 и если нам надо записать "1" в старшие разряды к примеру 11110000 то проводим операцию Перменная = Перменная & %11110000 результат Перменная =%11111010
Целиком А = PORTB & %00001111 А=А & %11110000 PORTB=А
|
|
|
|
MAX232 |
Дата: Чт, 22.03.2012, 12:39 | Сообщение # 802 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Quote (anatol) У MAX232 страдают основы.
Спорить не стану ))
Прошу прощения что тупил, когда спрашивал как опросить порт, до самого потом дошло, но писать не стал. Функция действительно полезная, помогает сэкономить кучу кода при организации динамической индикации или при работе с регистрами.
Всем СПАСИБО! за подсказки.
|
|
|
|
darken |
Дата: Чт, 22.03.2012, 14:33 | Сообщение # 803 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
2
Замечания:
±
На сайте с 22.03.2012
Статус:
Offline
|
люди помогите выставить частоту проца 161628А частота нужна побольше, 20-30Мгц генератор внутренний, RC-clockout нужно для управления яркостью по шим. вот такие строчки прописал, конфиг прописался а частоту не знаю как прикрутить @ device INTRC_OSC_CLKOUT, wdt_off, PWRT_ON,mclr_off, protect_off Define OSC 4
все компилируется в Pic Basic
|
|
|
|
anatol |
Дата: Чт, 22.03.2012, 15:16 | Сообщение # 804 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
darken, Чапаев прежде чем махать шашкой объясни 161628А это PIC 16F628A или что-то другое. Что означает строчка Define OSC 4. INTRC_OSC_CLKOUT - Это кажется для работы на внутреннем генераторе. Слазь в документацию на PIC и посмотри на каких частотах работает кристалл при внутреннем генераторе. А теперь и я
|
|
|
|
darken |
Дата: Пт, 23.03.2012, 00:03 | Сообщение # 805 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
2
Замечания:
±
На сайте с 22.03.2012
Статус:
Offline
|
Quote (anatol) darken, Чапаев прежде чем махать шашкой объясни 161628А это PIC 16F628A или что-то другое. Что означает строчка Define OSC 4. INTRC_OSC_CLKOUT - Это кажется для работы на внутреннем генераторе. Слазь в документацию на PIC и посмотри на каких частотах работает кристалл при внутреннем генераторе. А теперь и я Я не Чапаев, я только учусь. Проц PIC 16F628A. Строчкой "Define OSC 4" хотел задать частоту проца, взята из книжки -В.Н. Хилинский "Учимся программировать микроконтроллеры Pic на языке PicBasiPro" DEFINE OSC 4 ' Установить частоту генератора в МГц: 3(3.58), 4, 8, 10, 12, ‘ 16, 20, 24, 25, 32, 33, 40
В общем разобрался, внутренний генератор на 628A не меняет частоту. по крайней мере на большую. придется оптимизировать программу чтоб считала быстрей
|
|
|
|
anatol |
Дата: Пт, 23.03.2012, 07:55 | Сообщение # 806 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Quote (darken) В общем разобрался Молодец! Научишь других. Кстати Quote DEFINE OSC 4 ' Установить частоту генератора в МГц: 3(3.58), 4, 8, 10, 12, ‘ 16, 20, 24, 25, 32, 33, 40 - указание частоты генератора нужно компилятору BASICа для правильных расчетов временных интервалов (пауз, задержек, таймингов...) и все.
Сообщение отредактировал
anatol - Пт, 23.03.2012, 08:00
|
|
|
|
dimitriy-bc |
Дата: Сб, 24.03.2012, 14:30 | Сообщение # 807 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Всем доброго времени суток. У меня следующая проблема. После компилирования программы, текст asm. не читается в MPLAB. Возможно ли получить текст в asm. читаемым MPLAB? MPLAB 8.50
|
|
|
|
holyuser |
Дата: Сб, 24.03.2012, 15:06 | Сообщение # 808 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Quote (dimitriy-bc) Возможно ли получить текст в asm. читаемым MPLAB? Попробуйте при компиляции использовать MPASM, вместо встроенного PM ассемблера. View > Compile and Program Options... > Assembler > Use MPASM
|
|
|
|
dimitriy-bc |
Дата: Сб, 24.03.2012, 15:22 | Сообщение # 809 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
holyuser, Спасибо, что не обошли стороной мою проблему. Use MPASM галочкой отмечен. В автомате поиск давал, останавливался на папке microchip. В ручном, указывал путь до папки MPASM Suite. Все равно ерунда получается.
Сообщение отредактировал
dimitriy-bc - Сб, 24.03.2012, 16:33
|
|
|
|
anatol |
Дата: Сб, 24.03.2012, 18:22 | Сообщение # 810 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Выложить файл *.asm не желаете. Продолжим гадания на кофейной гуще. Снесите и переустановите МПЛАБ. И т.д.
|
|
|
|