Страница 2 из 2
Re: Проблемы с компиляцией.
Добавлено: Пн фев 21, 2011 22:31:35
otest
перед выходом из прерывания нужно восстановить регистры. вместо RETFIE где я пометил надо GOTO beg1 а там и выход.
Re: Проблемы с компиляцией.
Добавлено: Вт фев 22, 2011 11:19:54
Rimsky
Может кто подскажет (кто разбирался), что это за процедура?
; clrf ANSEL ;Включение вводов как цифровые
movlw B'10000000'
movwf OSCCAL^90h
bcf STATUS,5 ;Выбор банка 0
movlw B'10100000' ;Прерывание по переполнению таймера
Я обычно делаю так
Код: Выделить всё
RESET:
call 0x3FF
banksel OSCCAL
movwf OSCCAL
goto INIT_MPU
Re: Проблемы с компиляцией.
Добавлено: Вт фев 22, 2011 11:29:15
Rimsky
И вообще-то вектор сброса по нулевому адресу .org 0x00, а не .org 0x01 !!!
Re: Проблемы с компиляцией.
Добавлено: Пт фев 25, 2011 15:29:01
К@Т
Все замечания исправил,но не работает!При подаче питания он сразу задирает 6(gp1) ногу(вкл.зумер),и 4(gp3) ногу опускает(хотя это вход).Кароче два входа(5(gp2) и 4(gp3) ноги начинают принимать код еслi на 2(gp5) ноге единица,если код верен должна подниматса 7(gp0) нога,если не верен то 6(gp1),а если 5 раз неверен то поднимаетса 3(gp4) нога.Помогите найти ошибки.
Re: Проблемы с компиляцией.
Добавлено: Пт фев 25, 2011 15:46:14
otest
у вас описание в #define не соответствует конфигурации
С банками в разделе pusk тоже не дружите ( а я обрашал ваше внимание)
call SIR01 ;При включении сирена вкл. 3 раза.
вы сами её включаете.
***************************************
movlw ZAD3 ;Записываем в регистр
movwf DOP3 ;задержки 3 сек.
bsf zad3 ;Устанавливаем флаг 3 сек.
bcf zadv3 ;Сбрасываем флаг вкл. таймера 3 сек.
int3 btfss zadv10 ;Команда включения таймера 10 сек. есть ?
retfie ;Нет
decfsz DOP10,f ;Да. -1 и если =0 пропускаем следующуюю команду.
retfie ;Нет.
********************
выход по RETFIE попрежнему без восстановления регистров
при входе в обработчик прерываний нужно запрещать прерывания и разрешать когда пройдут нужные процедура. У вас прога в постоянной обработке прерываний.
Re: Проблемы с компиляцией.
Добавлено: Пт фев 25, 2011 16:59:35
К@Т
Писал сбодуна(поэтому много красоты),а теперь никак разобратса немогу в этом творении.
call SIR01 ;При включении
сирена вкл. 3 раза.
вы сами её включаете.
Она должна 3 раза включитса и 3 раза выключитса,а в реале она включаетса и не выключаетса.
у вас описание в #define не
соответствует конфигурации
С банками в разделе pusk
тоже не дружите
А вчём ошибка собсенно?
У вас прога в
постоянной обработке
прерываний .
Ничего не понял.
Re: Проблемы с компиляцией.
Добавлено: Пт фев 25, 2011 18:25:17
otest
Она должна 3 раза включитса и 3 раза выключитса,а в реале она включаетса и не выключаетса.
потом наступает прерывание по таймеру которое никогда не заканчивается
А вчём ошибка собсенно?
дело батя в следующем
;**************************************************************
; Bходные сигналы
#define kn0 GPIO,3 ;Кодовая кн.=0 ВХОД
#define kn1 GPIO,2 ;Кодовая кн.=1 ВХОД НАСТРОЕН НА ВЫХОД
#define zam GPIO,5 ;замок зажиг1. ВЫХОД
#define blok GPIO,0 ;Сигнал блокировки двиг. ВЫХОД
#define sirena GPIO,4 ;Сирена ВЫХОД НАСТРОЕН НА ВХОД
#define zum GPIO,1 ;Зуммер. ВЫХОД НАСТРОЕН НА ВХОД
;******************************************************
movlw B'011010' ;W=
movwf TRISIO ;RAO-RB4 вход
************************************************************
Ничего не понял.
здесь важно понимать как войти в прерывание и как выйти из него чтобы там не зависнуть
Re: Проблемы с компиляцией.
Добавлено: Пт фев 25, 2011 18:35:14
Rimsky
Если плаваете в банках, мой Вам совет пишите дерективу вот так:
banksel ANSEL
clrf ANSEL
banksel PORTB
clrf PORTB
и т.д.
Пусть где-то перебор, но зато не надо париться, а захотите оптимизировать код лишнее поубираете.