Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Pic Basic pro для начинающих
MAX232 Дата: Ср, 21.03.2012, 04:23  |                                                                                                                Сообщение # 796
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Quote (anatol)
Может скажешь и про Корабельникова ничего не слышал?


Если честно то нет, а как применительно к PicBasicPRO можно сделать ЧМЗ ? как считать данные с порта?
anatol Дата: Ср, 21.03.2012, 08:37  |                                                                                                                Сообщение # 797
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (MAX232)
Спасибо за подсказку, но я так и не понял как можно присвоить переменной выводы порта B к примеру с B0 по B3 (то есть первые 4 выхода).


Если я Вас правильно понял. Делаете маску, по тому какие биты Вам нужно. В Вашем случаи с B0 по B3 - это
%00001111.

Перменная = PORTB & %00001111
anatol Дата: Ср, 21.03.2012, 12:37  |                                                                                                                Сообщение # 801
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 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=А
ЯНДЕКС Дата: 21.03.2012
MAX232 Дата: Чт, 22.03.2012, 12:39  |                                                                                                                Сообщение # 802
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Quote (anatol)
У MAX232 страдают основы.


Спорить не стану ))

Прошу прощения что тупил, когда спрашивал как опросить порт, до самого потом дошло, но писать не стал.
Функция действительно полезная, помогает сэкономить кучу кода при организации динамической индикации или при работе с регистрами.

Всем СПАСИБО! за подсказки.
darken Дата: Чт, 22.03.2012, 14:33  |                                                                                                                Сообщение # 803
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 22.03.2012

Статус: Offline

люди помогите выставить частоту проца 161628А
частота нужна побольше, 20-30Мгц
генератор внутренний, RC-clockout
нужно для управления яркостью по шим.
вот такие строчки прописал, конфиг прописался а частоту не знаю как прикрутить angry
@ device INTRC_OSC_CLKOUT, wdt_off, PWRT_ON,mclr_off, protect_off
Define OSC 4

все компилируется в Pic Basic
anatol Дата: Чт, 22.03.2012, 15:16  |                                                                                                                Сообщение # 804
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

darken, Чапаев прежде чем махать шашкой объясни 161628А это PIC 16F628A или что-то другое.
Что означает строчка Define OSC 4.
INTRC_OSC_CLKOUT - Это кажется для работы на внутреннем генераторе. Слазь в документацию на PIC и посмотри на каких частотах работает кристалл при внутреннем генераторе.
А теперь и я angry
darken Дата: Пт, 23.03.2012, 00:03  |                                                                                                                Сообщение # 805
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Quote (darken)
В общем разобрался

Молодец! Научишь других. wink
Кстати
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
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

Всем доброго времени суток. У меня следующая проблема. После компилирования программы, текст asm. не читается в MPLAB. Возможно ли получить текст в asm. читаемым MPLAB?
MPLAB 8.50
holyuser Дата: Сб, 24.03.2012, 15:06  |                                                                                                                Сообщение # 808
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 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
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

holyuser, Спасибо, что не обошли стороной мою проблему.
Use MPASM галочкой отмечен. В автомате поиск давал, останавливался на папке microchip. В ручном, указывал путь до папки MPASM Suite. Все равно ерунда получается.

Сообщение отредактировал dimitriy-bc - Сб, 24.03.2012, 16:33
anatol Дата: Сб, 24.03.2012, 18:22  |                                                                                                                Сообщение # 810
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Выложить файл *.asm не желаете. Продолжим гадания на кофейной гуще. Снесите и переустановите МПЛАБ. И т.д. sad
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: