NetLab · Rules · Torrent Tracker · Have a problem? · Eng/Rus | Help Search Members Gallery Calendar |
Welcome Guest ( Log In | Register | Validation ) | Resend Validation Email |
Парочка строк на Бейсике, для pic |
|
Posted: 26-06-2006, 02:28
(post 1, #619814)
|
||
Ненавижу Fujitsu за их харды... Group: Members Posts: 3274 Warn:0% |
Господа програмисты, помогите решить проблемку. Черкните пару строчек на пикбэйсике. Задача - прочитать уровень сигнала, скажем на PORTA.1 . Если высокий, то выставить третье состояние, скажем на PORTA.2, если низкий, выставить высокий уровень там же. Очень нужно наладить одну схемку на pic16f628a - заменил рекомендуемые схемой транзисторы и оптопары на имеющиеся под рукой и как результат придется подбирать резисторы и кондеры. Для освоения Ассемблера я староват, а Бейсик в самый раз. Если не влом, киньте ссылочку с описанием команд пикбейсика, желательно на русском. Поиском что-то не ищется, наверное не те слова в поиск вставляю... |
||
|
Posted: 26-06-2006, 10:34
(post 2, #619887)
|
||
Sowjetische Panzersoldat Group: Members Posts: 934 Warn:0% |
Наверное, смогу написать такое, но только на pic'овском asm'e Кроме того, разве у PIC16 можно поставить порт в третье состояние? Его вроде бы в таком случае на вход ставят? |
||
|
Posted: 26-06-2006, 11:02
(post 3, #619896)
|
||
Intellectuals group Group: News makers Posts: 3628 Warn:0% |
1. Что ты имееш виду под 3-м состоянием? Насколько я помню PIC-и один из портов можно настрить под аналог тогда на ЦАП-е можно выстовить что хочеш. Маленький совет: хочеш работать нормально с PIC-ми учи C. |
||
|
Posted: 26-06-2006, 11:39
(post 4, #619905)
|
||
Sowjetische Panzersoldat Group: Members Posts: 934 Warn:0% |
Зачем? Все эти надстройки -- бейсики, С для написания несложных програм на PIC не нужны вообще. Выучить 33 команды PIC'овского ASM гораздо проще и продуктивней, имхо. |
||
|
Posted: 26-06-2006, 12:24
(post 5, #619911)
|
||
Intellectuals group Group: News makers Posts: 3628 Warn:0% |
Ню-Ню. Смотря какая программа. У нас проги были довольно сложные плюс экран, клавиатура и часы. Плюс с 10-ок аналоговых и дигитальных сенсоров и большое колечество релюшек. Нам не всегда C хатало из за сложных матиматических расчетов с точностью в 10-м знаке после запятой. Частенько начальник на форт переходил. |
||
|
Posted: 26-06-2006, 12:55
(post 6, #619920)
|
||
Sowjetische Panzersoldat Group: Members Posts: 934 Warn:0% |
Дык я ж написал -- "несложных". Если есть сложная математика -- да, С сильно облегчит жизнь. Но если прога типа поглядеть что на одном порту и что-то сделать на другом -- вполне подходит асм. Кроме того в железках, которые должны активно работать в реальном времени асм имхо тоже предпочтительнее -- точно знаешь, что за команда выполняется в любой момент времени. Ну и это -- иногда довольно "развесистую" прогу нужно утоптать в "маленький" проц. |
||
|
Posted: 26-06-2006, 12:55
(post 7, #619921)
|
||||
Ненавижу Fujitsu за их харды... Group: Members Posts: 3274 Warn:0% |
На выходах без всяких команд третье состояние - "отключен" (высокое сопротивление в обе стороны, к земле и к питанию. К примеру, я подал на выход высокий уровень, потом низкий. Ну а потом хочу отключить вообще нафиг - а если при этом на вход работает, мне пофиг.
С пиками работать практически не собираюсь, просто сейчас надо настроить всего одну неработающую по входам схему. Экономить память мне тоже ни к чему, посему непроизводительный бейсик мне тоже подходит. К примеру команда бейсика pause 1000 после компилирования превращается в кучу строчек на ассемблере. Что для полного чайника легче - одна строчка бейсика или куча строчек ассемблерас циклами, обращениями к стекам, регистрам и прочим ужасам программирования , и все ради экономии нескольких байт? Что касается всяких си, паскалей, фортранов и прочих эсперанто, а так же до, ре, ми - на microchip.com есть бесплатный компилятор с picбейсика а как чайнику компилировать си? TAHKEP, в крайнем случае подойдет и ассемблер, но только в HEX, а то у меня нечем в хекс перевести... (из хекса в ассемблере я могу посмотреть через icprog). Если горишь желание помочь, несмотря на жару, то тогда задание конкретнее - читаем RB1 и RA1. Если на RB1 единица, то на RB6 ноль и наоборот. Если на RA1 единица, то на RB7 ноль и наоборот. В идеале конечно, мне надо выловить на RA1 наличие-отсутствие импульсов 22кгц, но так сильно напрягать не буду, тем более что не знаю, какой кварц подберу (сейчас 11,0294, а рабочая прошивка рассчитана на 14,31818), да и наверное это лишнее, во всяком случае, на данном этапе... |
||||
|
Posted: 26-06-2006, 18:10
(post 8, #620017)
|
||||||||
Sowjetische Panzersoldat Group: Members Posts: 934 Warn:0% |
Качни с Microchip.com Mplab IDE Пригодится имхо в любом случае
На мой непросвещенный вгляд, может быть подойдёт такой код:
HEX этого куска
P.S. Щас прийдёт ув. Vlad_il и будет громко смеяться |
||||||||
|
Posted: 27-06-2006, 10:09
(post 9, #620317)
|
||
Intellectuals group Group: News makers Posts: 3628 Warn:0% |
А вот и не приду. ЗЫ. |
||
|
Posted: 27-06-2006, 20:20
(post 10, #620530)
|
||||||||
Ненавижу Fujitsu за их харды... Group: Members Posts: 3274 Warn:0% |
TAHKEP, спасибо! Опробую через неделю - уехал на дачу. Вернулся только потому что там сдох телевизор и надо купить новый.
начиная с метки Work (я так правильно понимаю, что то что InitPORTS, WORK, RA7_1, CHKPORTB, RB6_1 - это всё метки?) практически все понятно. BTFSS наверное то же самое что "IF то что после меня равно 0" Наверное имеется небольшая описка, в задании если RA1=0, то не RA7=1, а RB7=1. "Почти понятно" потому что, вроде получается что в любом случае, нольли на входе или единица, все равно выполняется команда
Ну а метка InitPORTS вообще выше моего понимания... То есть если не выполнить инициализацию, порты не будут работать ни на прием ни на отдачу? Это что-то вроде правил этикета, по которым прежде чем взять блюдо со стола надо предложить его другим?
То есть те входы, которые не работают на ввод работают как выходы? А как же ножки, к которым подключен кварц (RA7 и RA6)? Они то и не входы и не выходы? В общем, вернусь с дачи, буду думать. Зря топик в глюкодром перенесли - тут еще флеймить и флеймить.... |
||||||||
|
Posted: 28-06-2006, 12:37
(post 11, #620737)
|
||||||||||||
Sowjetische Panzersoldat Group: Members Posts: 934 Warn:0% |
Да
BTFSS расшифровывается как "Bit Test F Skip if Set" т.е. пропустить следующую команду если N-ный бит регистра F равен 1 (т.е. в нашем случае, в зависимости от состояния RA1 или RB1 будет либо выполнена либо пропушена следующая за BTFSS команда GOTO)
Виноват Тогда изменяем BCF PORTA,7 на BCF PORTB,7 и BSF PORTA,7 на BSF PORTB,7
Имхо таки нет Пусть на RA1=1 Тогда При проверке BTFSS будет пропущена следующая команда GOTO RA7_1 и выполнена будет команда BCF PORTA,7, а затем (командой GOTO CHKPORTB) будет осуществлён переход на проверку состояния следующего входа. Если же на RA1=0 то GOTO НЕ будет пропущена и будет осуществлён переход на метку RA7_1 и выполнена команда BSF PORTA,7
По умолчанию в этом pic'е все порты работают как входы. Если Вы будете что-то писать в порт (записью нужных значение в управляющий регистр PORTx) работающий как вход, то на вывод сам он не встанет и изменять своё состояние не будет. Что бы он стал выводом его надо настроить с помощью управляющего региcтра TRISx, установив в соответствующем разряде 0 (ноль). Легко запомнить 1-I-Input, 0-O-Output
Тут всё немножко сложнее, то чем будут эти ножки проца -- обычными I/O портами или входами импульсов от кварца определяется настройкой источника тактирующего сигнала. Эта настройка задаётся в специальном слове конфигурации проца при программировании или может быть указана в коде программы с помощью команды __CONFIG Тогда при генерации HEX настройки уже будут в этот HEX прописаны |
||||||||||||