Например TDA7294

Форум РадиоКот • Просмотр темы - Таймеры и прерывания[PIC16f873A]
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 16:53:29

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 22:22:46 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
Здравствуйте, задали написать программу - "Исходное состояние - все светодиоды погашены, при нажатии SA3 реализуются 2 бегущих светодиода от середины к краям и обратно с длительностью горения каждого светодиода 0,5 сек. SA4 – пауза/снятие с паузы. Во время паузы – звуковое сопровождение.". Реализовать с помощью таймеров и прерывания.Посидел, с помощью выданного примера - кое-что да написал, а что дальше не могу понять. Помогите пожалуйста.
Вод код
Код:
#include p16f873a.inc
      __CONFIG _HC_OSC & _WDT_OFF   ;
;объявление переменных
      STAT1   EQU      H'20'      ;регистр состояния

      GOTO   BEGIN            ;переход к настройке после включения
   
      ORG      H'004'            ;вектор прерывания

      GOTO   INT               ;переход к обработке прерываний
;начало основной программы
BEGIN:   BCF      STATUS,RP1         ;выбираем банк регистров 1
      BSF      STATUS,RP0         ;|
      MOVLW   B'00001110'        ;задаем аналоговый вход PORTA,0
                MOVWF   ADCON1              ;программируем регистр АЦП 1
          MOVLW   B'00000001'         ;PORTA,7-1 выходы, PORTA,0 вход
          MOVWF   TRISA               ;программируем регистр направления PORTA
          MOVLW   B'11111111'         ;PORTB,7-0 входы
          MOVWF   TRISB               ;программируем регистр направления PORTB
          MOVLW   B'11000000'         ;PORTC,7-6 вход, PORTC,5-0 выходы
          MOVWF   TRISC               ;программируем регистр направления PORTC
      MOVLW   B'00000111'         ;включение подтягивающих резисторов и предд. TMRO 1:256
      BSF      PIE1,TMR1IE         ;разрешение прерывания TMR1
      BSF      PIE1,TRM2IE         ;разрешение прерывания TMR2
      BCF      STATUS,RP0         ;выбираем банк регистров 0
      MOVLW   B'00110000'         ;коэфф.деления предделителя 1:8
      MOVWF    T1CON            ;|
      MOVLW   B'00000001'         ;коэфф.деления предделителя 1:4
      MOVWF    T2CON            ;|
      CALL   OFF               ;сброс в исходное состояние
      MOVLW   B'11100000'         ;биты GIE,PEIE,T0IE и INTE=1
      MOVWF    INTCON            ;программируем регистр управления прерываниями

M10      GOTO    M10               ;зацикливаемся здесь

;задаем режим работы таймера TMR1
T1S:   MOVLW   H'0B'            ;задаем выдержку времени 8*(65536-3036)=500000
      MOVWF   TMR1H            ;|
      MOVLW   H'DC'            ;|
      MOVWF    TMR1L            ;|
      RETURN

;выключение светодиодов и пищалки
DL:      CLRF   PORTC            ;гасим все светодиоды
      CLRF   PORTA            ;выключаем пищалку
      RETURN               
;исходное состояние
OFF:   CLRF   STAT1            ;сброс регистра состояния
      CLRF   STATC            ;сброс счетчика времени работы
      BCF      T1CON,TMR1ON      ;выключение TMR1
      BCF      T2CON,TMR2ON      ;выключение TMR2
      CALL   DL               ;переход к выкл. светодиодов и пищалки
      RETURN

;драйвер прерываний от таймеров
INT:   BTFSS   INTCON,T0IF         ;проверка флага прерывания от таймера 0
      CALL   TMR0INT            ;переход к обработке прерывания TMR0, если оно произошло
      BTFSS   PIR1,TMR1IF         ;проверка флага прерывания от таймера 1
      CALL   TMR1INT            ;переход к обработке прерывания TMR1, если оно произошло
      BTFSS   PIR1,TMR2IF         ;проверка флага прерывания от таймера 2
      CALL   TMR2INT            ;переход к обработке прерывания TMR2, если оно произошло

      RETFIE
;обработка прерывания TMR0
TMR0INT:MOVF   STAT1,F            ;проверка регистра на 0
      BTFSS   STATUS,Z         ;если не равен 0, то выйти
      GOTO   T0EX            ;выход
      BTFSS   PORTB,4            ;скачок, если не нажата кнопка SA3
      GOTO   SA3               ;переход к обработке
      BTFSS   PORTB,2            ;скачок, если не нажата кнопка SA4
      GOTO   SA4               ;переход к обработке
      GOTO   T0EX            ;выход

;обработка нажатия SA3
SA3:   CALL   SA3PR            ;
      GOTO    T0EX            ;
;обработка нажатия SA4
SA4:   CALL   SA4PR            ;
;завершение обработки прерывания
TOEX:   MOVLW   D'60'            ;
      MOVWF    TMR0            ;запись начального значения TMR0
      BCF      INTCON,T0IF         ;сброс бита прерывания
      RETURN


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 22:39:52 
Встал на лапы
Аватар пользователя

Карма: 9
Рейтинг сообщений: 17
Зарегистрирован: Вс ноя 01, 2015 00:09:59
Сообщений: 83
Рейтинг сообщения: 0
Так а что не получилось-то реализовать? Раз уже таймер запустили и настроили прерывания.

_________________
Для связи email: risctronix собака gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 22:41:20 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
Я не понимаю как реализовать кнопки, диоды чтобы бегали от середины к краям и обратно, а так же пауза с звуковым сигналом.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 22:47:06 
Встал на лапы
Аватар пользователя

Карма: 9
Рейтинг сообщений: 17
Зарегистрирован: Вс ноя 01, 2015 00:09:59
Сообщений: 83
Рейтинг сообщения: 0
Вопрос конечно риторический. А вы забивали в гугл как подключить кнопку к МК и программно ее обработать?

_________________
Для связи email: risctronix собака gmail.com


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 23:02:23 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
Я писал программу, с использованием кнопок, диодов, но только с подпрограммой выдержки времени. А сейчас у меня нет представления как связать таймеры с кнопками и диодами.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 23:17:11 
Встал на лапы
Аватар пользователя

Карма: 9
Рейтинг сообщений: 17
Зарегистрирован: Вс ноя 01, 2015 00:09:59
Сообщений: 83
Рейтинг сообщения: 0
А что тут сложного, к примеру, СТАРТ/ПАУЗА - старт (разрешить прерывания TMR1)/пауза (запретить прерывания TMR1). И делов-то :tea:

_________________
Для связи email: risctronix собака gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 23:25:40 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
Вот допустим я написал код(начало вверху)
Код:
SA3PR:   BSF      STAT1,1            ;установка бита состояния
      BCF      STATUS,RP1         ;выбираем банк регистров 1
      BSF      STATUS,RP0         ;|
      MOVLW   D'50'            ;
      MOVWF    PR2               ;
      BCF      STATUS,RP0         ;выбираем банк регистров 0
      CALL   SA3H            ;обработка действий по нажатию кнопки SA3
      CALL   T1S               ;запись начальных значений TMR1
      BCF      T1CON,TMR1ON      ;включение TMR1
      RETURN

;обработка действий по нажатию кнопки SA3
SA3H:   
      BSF      PORTC,1
      BSF      PORTC,3

Как я понимаю, когда я нажму кнопку SA3, программа перейдёт к обработке кнопки SA3, включит 2 диода, после настроит таймер на 0,5 сек, включиться. После того как таймер посчитал он завершит обработку прерывания, и таймер сбросится, правильно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 23:35:30 
Встал на лапы
Аватар пользователя

Карма: 9
Рейтинг сообщений: 17
Зарегистрирован: Вс ноя 01, 2015 00:09:59
Сообщений: 83
Рейтинг сообщения: 0
Вы не внимательно читаете даташит. Прерывания будет происходит при каждом переполнении таймера

_________________
Для связи email: risctronix собака gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Пт дек 06, 2019 23:47:53 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
А как собственно сделать так, чтобы я нажал на кнопку SA3, и включились два диода на 0,5 сек. Если Вам не сложно, не могли бы на моём примере, написать код с нажатием кнопки и включением 2 диодов на 0,5 сек с использованием таймера


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 00:09:37 
Встал на лапы
Аватар пользователя

Карма: 9
Рейтинг сообщений: 17
Зарегистрирован: Вс ноя 01, 2015 00:09:59
Сообщений: 83
Рейтинг сообщения: 0
Нет :)). Думайте. У вас в голове нечего не останется, если за вас кто-то будет решать. Так что, "включайте" мозг, "запрягайте" гугл и в перед :). Я ж вам дал рекомендацию, погуглите на счет МК и кнопки. Примеров полно! С большой долей вероятности, вы этого явно не делали...

_________________
Для связи email: risctronix собака gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 00:15:36 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
Хорошо, спасибо


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 00:46:21 
Встал на лапы
Аватар пользователя

Карма: 9
Рейтинг сообщений: 17
Зарегистрирован: Вс ноя 01, 2015 00:09:59
Сообщений: 83
Рейтинг сообщения: 0
Дам небольшую подсказку. Задействуйте флаги. Берет ячейку памяти, и вот вам 8 флагов :)

_________________
Для связи email: risctronix собака gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 09:13:13 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 966
Рейтинг сообщения: 0
Я бы сделал максимально просто и без каши. Таймер по прерыванию формирует системный тик. А по нему синхронизируются все остальные - кнопки, светодиоды, звук.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 09:45:41 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 0
Цитата:
Как я понимаю, когда я нажму кнопку SA3, программа перейдёт

Понимать и думать конечно надо, но и про симулятор не нужно забывать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 12:29:50 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 966
Рейтинг сообщения: 0
А вообще, подобная задачка делается и без таймера (и без прерывания).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 13:11:07 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
А вообще, подобная задачка делается и без таймера (и без прерывания).

Это да, я делал это без таймеров. Мне задали написать программу с использованием таймеров


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры и прерывания[PIC16f873A]
СообщениеДобавлено: Сб дек 07, 2019 14:53:05 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 966
Рейтинг сообщения: 0
Ну так я вам логику и привёл выше. А без таймеров это просто delay(T_SYS) и всё.)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y