Перейти к содержанию

Таймеры и прерывания (PIC16f873A)


boomO

Рекомендуемые сообщения

Здравствуйте, задали написать программу - "Исходное состояние - все светодиоды погашены, при нажатии 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

 

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

код как-то мало соответствует задаче...

1. зачем включен модуль АЦП, в задаче есть аналоговые измерения?

2. зачем включены три таймера , для работы  задачи достаточно одного таймера

3. вы уверены что звуковая сигнализация паузы выполняется включением внешней пишалки , а не должна быть реализована с помощью модуля ССР1

4. в коде прерывания отсутствует блок сохранения контента, откройте папки МПЛАБА и посмотрите пример оформления кода в темповских файлах на свой МК и возьмите его за основу.

5. по условию задачи не совсем понятно SA3 и SA4 переключатели или кнопки без фиксации, алгоритмы обработки у них разный.

ЗЫ есть подозрение что код вы вообше не писали.

ЗЫЫ в каком виде вы ожидаете  помочь?

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

По 4 пункту предыдущего комментария добавлю. Обработчик прерывания завершается не командой return,  а командой retfie.

Ну и сохраняют КОНТЕКСТ, а не контент. Контекст в общем случае на этой платформе содержит три регистра - STATUS, WREG  и PCLATH.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

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

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...