napper 0 10 ноября, 2006 Опубликовано 10 ноября, 2006 · Жалоба Я думаю подпрограмму мигания надо организовать вот так: R1_VD2M ;подпрограмма мигания светодиода BTFSS TEMPA,4 GOTO V1 ;перейти на V1 MOVLW 0x09 MOVWF COUNT ;СЧЕТЧИК МИГАНИЙ 9 РАЗ ГОРИТ, 9 - НЕ ГОРИТ, ИТОГО 18 СЕК (ЧАСТОТА МИГАНИЙ 1 ГЕРЦ, ЗНАЧИТ 1 ;МИГАНИЕ/НЕМИГАНИЕ В СЕКУНДУ), ПОСЛЕДНЕЕ НЕМИГАНИЕ НЕ УЧИТЫВАЕМ - ПОЛУЧАЕМ 17 СЕК V0 BSF VD2 ;зажечь светодиод VD2 MOVLW 0xF3 ;пересылка константы ;H'F3' = .243 в W CALL DELAY_E ;вызов подпрограммы DELAY_E BCF VD2 ; светодиод мигает MOVLW 0xF3 ;пересылка константы ;H'F3' = .243 в W CALL DELAY_E ;вызов подпрограммы DELAY_E GOTO V1 ;перейти на V1 DECFSZ COUNT,F GOTO V0 V1 BCF VD2 ; RETURN ;возврат из под программы END Надеюсь паузы в подпрограмме DELAY_E вы подобрали правильно P.S. Не забудьте объявить переменную COUNT в начале программы!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dosikus 0 11 ноября, 2006 Опубликовано 11 ноября, 2006 · Жалоба а на RA1 (18 ножка) через резистор подключен диод, катодом в плюс питание. Вы уверены? Светодиод катодом к плюсу? И чего вы ожидаете ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mari-999 0 11 ноября, 2006 Опубликовано 11 ноября, 2006 · Жалоба Вы уверены? Светодиод катодом к плюсу? нет не уверена Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mari-999 0 14 ноября, 2006 Опубликовано 14 ноября, 2006 · Жалоба Я думаю подпрограмму мигания надо организовать вот так: R1_VD2M ;подпрограмма мигания светодиода BTFSS TEMPA,4 GOTO V1 ;перейти на V1 MOVLW 0x09 MOVWF COUNT ;СЧЕТЧИК МИГАНИЙ 9 РАЗ ГОРИТ, 9 - НЕ ГОРИТ, ИТОГО 18 СЕК (ЧАСТОТА МИГАНИЙ 1 ГЕРЦ, ЗНАЧИТ 1 ;МИГАНИЕ/НЕМИГАНИЕ В СЕКУНДУ), ПОСЛЕДНЕЕ НЕМИГАНИЕ НЕ УЧИТЫВАЕМ - ПОЛУЧАЕМ 17 СЕК V0 BSF VD2 ;зажечь светодиод VD2 MOVLW 0xF3 ;пересылка константы ;H'F3' = .243 в W CALL DELAY_E ;вызов подпрограммы DELAY_E BCF VD2 ; светодиод мигает MOVLW 0xF3 ;пересылка константы ;H'F3' = .243 в W CALL DELAY_E ;вызов подпрограммы DELAY_E GOTO V1 ;перейти на V1 DECFSZ COUNT,F GOTO V0 V1 BCF VD2 ; RETURN ;возврат из под программы END Надеюсь паузы в подпрограмме DELAY_E вы подобрали правильно P.S. Не забудьте объявить переменную COUNT в начале программы!!! [/quot] не работает даже не компилиться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
napper 0 14 ноября, 2006 Опубликовано 14 ноября, 2006 · Жалоба не работает даже не компилиться Читайте внимательнее, это ПОДпрограмма! Замените в своей программе, начиная с метки R1_VD2M на мою. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mari-999 0 14 ноября, 2006 Опубликовано 14 ноября, 2006 · Жалоба не работает даже не компилиться Читайте внимательнее, это ПОДпрограмма! Замените в своей программе, начиная с метки R1_VD2M на мою. Да, именно так и сделала (это то я поняла конечно, что это подпрограмма :) ), заменила, она не работает и ругаеться на строчки MOVLW 0x09 и GOTO V0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
napper 0 14 ноября, 2006 Опубликовано 14 ноября, 2006 · Жалоба Полная версия программы: LIST p=16F84 INTCON EQU 0x0B OPTION EQU 0x81 TMR0 EQU 0x01 INTF EQU 1 T0IF EQU 5 PCL EQU 0x02 STATUS EQU 0x03 RP0 EQU 5 PORTA EQU 0x05 PORTB EQU 0x06 TRISA EQU 0x05 TRISB EQU 0x06 W EQU 0 F EQU 1 TEMPA EQU 0x0C TEMPB EQU 0x0D COUNT1 EQU 0x0E COUNT2 EQU 0x0F #DEFINE Z STATUS,2;бит нулевого результата #DEFINE VD2 PORTA,1;светодиод VD2 #DEFINE R1 PORTA,4;резистор ORG 0 INIT_PORTS ;подпрограмма инициализации портов BSF STATUS,RP0;переход на банк 1 MOVLW 0x1C ;настройка линий RA0 и RA1 на вывод, другие на ввод MOVWF TRISA MOVLW 0x01 ;настройка линии RB0 на ввод, другие на вывод MOVWF TRISB BCF STATUS,RP0;возврат в банк 0 ; LOOP MOVF PORTA,W;чтение состояния порта A в W MOVWF TEMPA ;пересылка W в TEMPA BTFSS TEMPA,4 GOTO LOOP ;перейти на LOOP MOVLW 0x09 MOVWF COUNT ;СЧЕТЧИК МИГАНИЙ 9 РАЗ ГОРИТ, 9 - НЕ ГОРИТ, ИТОГО 18 СЕК ;(ЧАСТОТА МИГАНИЙ 1 ГЕРЦ, ЗНАЧИТ 1 МИГАНИЕ/НЕМИГАНИЕ В СЕКУНДУ), ;ПОСЛЕДНЕЕ НЕМИГАНИЕ НЕ УЧИТЫВАЕМ - ПОЛУЧАЕМ 17 СЕК;-) V0 BSF VD2 ;зажечь светодиод VD2 MOVLW 0xF3 ;пересылка константы ;H'F3' = .243 в W CALL DELAY_E;вызов подпрограммы DELAY_E BCF VD2 ;светодиод мигает MOVLW 0xF3 ;пересылка константы ;H'F3' = .243 в W CALL DELAY_E;вызов подпрограммы DELAY_E DECFSZ COUNT,F GOTO V0 GOTO LOOP ;переход к метке LOOP DELAY_E ;подпрограмма формирования задержки MOVWF COUNT2;загрузка W в регистр COUNT2 CLRF COUNT1;сброс содержимого регистра COUNT1 LOOPD NOP ;пустая команда DECFSZ COUNT1,F;декремент COUNT1 GOTO LOOPD ;повторение цикла 256 раз DECFSZ COUNT2,F;декремент COUNT2 GOTO LOOPD ;повторение цикла RETURN ;возврат из подпрограммы END О результатах сообщите Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mari-999 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба О результатах сообщите не работает две ошибки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edmundo 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба не работает две ошибки Небось, компиляторы разные... В чем компилируете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
napper 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба не работает две ошибки Давайте разбираться. Что пишет компилятор, на что ругается? Небось, компиляторы разные... В чем компилируете? А причем здесь компилятор? Вроде это стандартный ассемблер для PICов... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mari-999 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба не работает две ошибки Давайте разбираться. Что пишет компилятор, на что ругается? Небось, компиляторы разные... В чем компилируете? А причем здесь компилятор? Вроде это стандартный ассемблер для PICов... MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
napper 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю Что за ошибки? Я же не ясновидящий!.. Скопируйте их сюда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edmundo 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба А причем здесь компилятор? Вроде это стандартный ассемблер для PICов... Для PICов не знаю, но для других МК бывает. Синтаксис макросов в частности разный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
upc2 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба MPASM старенький компилятор. Пора переходить на MPLAB или использовать его MPASMWIN. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mari-999 0 19 ноября, 2006 Опубликовано 19 ноября, 2006 (изменено) · Жалоба MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю Что за ошибки? Я же не ясновидящий!.. Скопируйте их сюда У нас mpasmwin, он когда переводишь в hex выдает 5 ошибок, одну нашла не обьявлена перем.count, осталось три, он не указывает какие, но когда комментируешь те две строки MOVLW 0x09 и GOTO V0, он выдает 0 ошибок, я посмотрела, но так прога не работает Изменено 19 ноября, 2006 пользователем Mari-999 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться