Jump to content

legik

Members
  • Content Count

    26
  • Joined

  • Last visited

Community Reputation

0 Обычный

About legik

  • Rank
    Новенький
  • Birthday 04/25/1982

Информация

  • Пол
    Мужчина
  • Город
    Кривой рог

Электроника

  • Стаж в электронике
    3-5 лет
  • Сфера радиоэлектроники
    хобби
  • Оборудование
    мультиметр
  1. swapf W_Temp,F ; Поменять местами старший и младший полубайты ; регистра W_Temp с сохранением результата ; операции в нем же. swapf W_Temp,W ; Поменять местами старший и младший полубайты ; регистра W_Temp с сохранением результата retfie Подскажите, зачем дважды менять регистр "W_Temp" при выходе из прерывания? или это надо принять как должное?
  2. значит все в помойку... меня интересовал один вопрос, который я озвучил в самом начале
  3. пусть будет так
  4. поэтому я и не использую таймер а чисто цикл так можно достаточно точно выдержать время
  5. я так понимаю про таймер, предделитель и дополнительный регистр
  6. да, может быть... но мне проще будет посчитать длительность имульса без таймера в цикле по моему мнению. про дребезг я тоже понимаю но мне не важны процессы в начале цикла и при прерывании.
  7. Виноват, в прерывание заходим при изменении регистров кнопками но это не меняет сути
  8. Впринципе устраивает вариант. Буду пробывать, всем спасибо. нет никаких частот и ШИМ, меняю 3 регистра длительности высокого уровня и 3 регистра длительности низкого уровня и после прерывания прехожу в цикл.
  9. Использую то что есть. В прерывании я изменяю длительность импульсов высокого и длительность низкого уровня сигнала. нет входного сигнала, просто генератор импульсов. нет никакого пересчета, чисто генерация импульсов. Основновной код я выложил. Он состоит из цикла который генерирует длительность низкого уровня и цикла который генерирует высокий уровень и всё. В дальнейшем добавлю еще 2 таких цикла но без самых старших регистров("st_b_hi" или "st_b_lo" если они будут равны "0").
  10. да, про "RESET" я уже задумывался но хочеться более корректно решить задачу
  11. Вы имеете ввиду "goto 0000h"? Сброс стэка тоже произойдет?
  12. Возможно, поэтому и обратился в этот раздел. Конечная задача - генерация импульсов определенной длительности с выхода RA4. Это один из 3 циклов основной программы: lo_cyc decfsz ml_b_lo_tmp,1 goto lo_cyc decfsz sr_b_lo_tmp,1 goto lo_cyc ;decfsz st_b_lo_tmp,1 ;goto lo_cyc bsf PORTA,4 movf ml_b_hi,0 movwf ml_b_hi_tmp movf sr_b_hi,0 movwf sr_b_hi_tmp movf st_b_hi,0 movwf st_b_hi_tmp goto hi_cyc hi_cyc decfsz ml_b_hi_tmp,1 goto hi_cyc decfsz sr_b_hi_tmp,1 goto hi_cyc ;decfsz st_b_hi_tmp,1 ;goto hi_cyc bcf PORTA,4 movf ml_b_lo,0 movwf ml_b_lo_tmp movf sr_b_lo,0 movwf sr_b_lo_tmp movf st_b_lo,0 movwf st_b_lo_tmp goto lo_cyc в прерывании я изменяю длительность импульсов и перехожу на "START" программы, после "START" я провожу проверку регистров и перехожу на один из 3 таких циклов. почему 3 цикла? потомучто самый старший регистр может быть нулем и я его хочу исключить в других циклах. при старте и проверок на 0. кто нибудь подскажет как можно из прерывания попасть на "START" программы?
  13. Для того чтоб исключить проверки в циклах. Как это можно реализовать? Через стэк?
  14. Микроконтроллер PIC16f84a. Возможен паереход из основной программы в прерывание а при выходе из прерывания в "START" основной программы? Заранее спасибо!
×
×
  • Create New...