Самодельный ИК-пульт дистанционного управления (PIC12F629)

Здесь обсуждаем устройства на МК и программы для них
batir
Читатель
Читатель
Сообщения: 11
Зарегистрирован: 27 окт 2011, 01:13

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение batir »

пробовал . со слеепом не получается . может поможете. :-?
batir
Читатель
Читатель
Сообщения: 11
Зарегистрирован: 27 окт 2011, 01:13

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение batir »

sleep
Вложения
РђСЂС…РёРІ ZIP - WinRAR.zip
sleep
(49.3 КБ) 625 скачиваний
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение rhf-admin »

Попробуй так (добавить строки, выделенные звёздочками, звёздочки, понятное дело, убрать):

Код: Выделить всё

Scan  ***bsf INCON,3 ; чтоб флаг устанавливался при изменении уровня и можно было проснуться от нажатия***
      btfss  GPIO,5     ; если на входе GP5 низкий уровень - нажата клавиша 1
      goto   Tx_CMD1
      btfss  GPIO,2     ; если на входе GP2 низкий уровень - нажата клавиша 2
      goto   Tx_CMD2
      btfss  GPIO,4     ; если на входе GP4 низкий уровень - нажата клавиша 3
      goto   Tx_CMD3
      btfss  GPIO,1     ; если на входе GP1 низкий уровень - нажата клавиша 4
      goto   Tx_CMD4
      sleep
      goto   Scan
и далее добавить:

Код: Выделить всё

Form_Com   ...
           ...
   ***bcf    INTCON,3     ; запретить прерывания от изменения уровня***
   ***bcf    INTCON,0     ; сбросить флаг, который устанавливается от изменения уровня***
      bcf    INTCON,2   ; сбросить флаг переполнения таймера
      bsf    INTCON,5   ; разрешить прерывание от таймера
      bsf    INTCON,7   ; разрешить немаскированные прерывания
С уважением, администрация сайта.
batir
Читатель
Читатель
Сообщения: 11
Зарегистрирован: 27 окт 2011, 01:13

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение batir »

пробовал . не выходит из режима слееп :(
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение rhf-admin »

А, ну правильно, мы кое-что забыли, вот он из слипа и не выходит. Не знает когда от каких ног выходить :)
Надо ещё где-нить при инициализации в регистре IOC записать от каких ног нас интересует установка флага GPIF.
Например, здесь:

Код: Выделить всё

;--- Настраиваем предделитель таймера ---
      movlw  b'00000101'; настройка предделителя 1:64, 64*256=16,384 мс
      movwf  OPT_REG
;************************
      movlw  b'00110110'  ; нас интересует изменение уровня на ногах GP1, GP2, GP4, GP5
      movwf IOC              ; надо в шапке дописать IOC  equ 16h
;************************
      bcf    Status,5   ; Перейти в 0-й банк
С уважением, администрация сайта.
batir
Читатель
Читатель
Сообщения: 11
Зарегистрирован: 27 окт 2011, 01:13

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение batir »

не хочет работать :(
;--- Настраиваем предделитель таймера ---
movlw b'00000101'; настройка предделителя 1:64, 64*256=16,384 мс
movwf OPT_REG
movlw b'00110110'
movwf IOCB
bcf Status,5 ; Перейти в 0-й банк
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение rhf-admin »

Не хочет работать как? Не уходит в сон или не выходит из сна?
С уважением, администрация сайта.
batir
Читатель
Читатель
Сообщения: 11
Зарегистрирован: 27 окт 2011, 01:13

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение batir »

после запуска на первое нажатия кнопки работает . на следующий нажатии на кнопку нет никаких реакции. наверно не выходит из слеепа.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение rhf-admin »

Значит теперь первый раз выходит, а потом не выходит. Ок, тогда мы пойдём другим путём.
В первоначальной программе добавить этот кусок, как и раньше:

Код: Выделить всё

    Form_Com   ...
               ...
       ***bcf    INTCON,3     ; запретить прерывания от изменения уровня***
       ***bcf    INTCON,0     ; сбросить флаг, который устанавливается от изменения уровня***
          bcf    INTCON,2   ; сбросить флаг переполнения таймера
          bsf    INTCON,5   ; разрешить прерывание от таймера
          bsf    INTCON,7   ; разрешить немаскированные прерывания
А включение просыпания от клавиш вставить на выходе из обработчика, а не при инициализации. То есть выход из прерывания сделать таким:

Код: Выделить всё

Send_end
      clrf   INTCON     ; сбрасываем все прерывания и флаги
      call   Pause        ; выдерживаем паузу
      movf GPIO,0
      clrf   INTCON     ; сбрасываем все прерывания и флаги
      bsf Status,5
      movlw  b'00110110'  ; нас интересует изменение уровня на ногах GP1, GP2, GP4, GP5
      movwf IOC              ; надо в шапке дописать IOC  equ 16h
      bcf Status,5
      bsf INTCON,3
      goto   Scan       ; переходим к сканированию клавиш
С уважением, администрация сайта.
batir
Читатель
Читатель
Сообщения: 11
Зарегистрирован: 27 окт 2011, 01:13

Re: Самодельный ИК-пульт дистанционного управления (PIC12F629)

Сообщение batir »

Добавил эти строки . без изменения после первого нажатия перестало работать . у меня было добавлено после шапки строки : org 0
; goto st
; org 4
; nop
; retfie
;st
отключил эти строки вроде заработало в протеусе . завтра попробую проверит на камне. спасибо вам за поддержку . и можете объяснит почему не работало программа с этими строками
Ответить

Вернуться в «Устройства на микроконтроллерах»