Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

PIC16F876

Непрочитано 25.06.2010, 13:07  
Pavel55
Частый гость
 
Регистрация: 13.04.2010
Сообщений: 33
Сказал спасибо: 14
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Pavel55 на пути к лучшему
По умолчанию PIC16F876

Здравствуйте! Помогите с таким вопрсом.
Pic 16F876 на вход А0 посажена кнопка S1 на выходе RC4 реле.
нужно реализовать задержку таким образом чтобы реле сработало
при удерживании кнопки примерно 2 секунды, а после сработки все вернулось в изночальное состояние. Схема собрана на макетке пока добился только того что после кратковременного нажатия через пару секунд срабатывает реле, а как реализовать удерживания.
Вложения:
Тип файла: pdf PIC 16F876 Model (1).pdf (35.6 Кб, 107 просмотров)
Реклама:
Pavel55 вне форума  
Непрочитано 25.06.2010, 13:33  
mrKirill
Вид на жительство
 
Аватар для mrKirill
 
Регистрация: 12.04.2007
Сообщений: 339
Сказал спасибо: 2
Сказали Спасибо 34 раз(а) в 30 сообщении(ях)
mrKirill на пути к лучшему
По умолчанию Re: PIC16F876

Так?

Код:
if (RA0==1)
  {
    запуск таймера 2сек;
    while (!таймер сработал);
    if (RA0==1) RC4=1;
  }

PS. Одна из многочисленных вариаций осуществления задуманного. Не самая оптимальная.
__________________
Гидравлика + электроника = POWER

Последний раз редактировалось mrKirill; 25.06.2010 в 13:37.
mrKirill вне форума  
Непрочитано 25.06.2010, 13:40  
dimanka
Временная регистрация
 
Регистрация: 30.03.2007
Адрес: Челябинск
Сообщений: 62
Сказал спасибо: 11
Сказали Спасибо 11 раз(а) в 9 сообщении(ях)
dimanka на пути к лучшему
По умолчанию Re: PIC16F876

Вход на мк обычно подтягивают к +5V а кнопкой садят на землю, но это к делу отношение неимеет. А по делу исходничек бы как вы кнопку анализируете? Я обычно просто по таймеру (периуд более возможного дребезга) проверяю состояние если изменилось - нажали или отпустили. А теперь при отрицательном перепаде ставите флажёк и обнуляете программный счётчик. По таймеру если флажёк то считием. При определённом значении включаете реле и снимаете флажёк. Если на входе +5V флаг снять досрочно.
dimanka вне форума  
Непрочитано 25.06.2010, 13:42  
Pavel55
Частый гость
 
Регистрация: 13.04.2010
Сообщений: 33
Сказал спасибо: 14
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Pavel55 на пути к лучшему
По умолчанию Re: PIC16F876

Извените вы могли бы на асемблере показать
я только начинаю программировать
Pavel55 вне форума  
Непрочитано 25.06.2010, 14:00  
Pavel55
Частый гость
 
Регистрация: 13.04.2010
Сообщений: 33
Сказал спасибо: 14
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Pavel55 на пути к лучшему
По умолчанию Re: PIC16F876

Вот пока что у меня получается может поправите я не студент которому нужен курсовик я просто увлекаюсь радиоэлектроникой. Мне эта схемка нужна чтобы открывать багажник автомобиля задержку сделал что бы при случайном нажатии неоткрывался.

;================ Начало 1step-876.asm ================
;Файл: 1step-876.asm

processor 16F876 ;Используемый процессор.
radix dec ;Десятичная система счисления по умолчанию.
include "p16f876.inc" ;Заголовочный файл для микроконтроллера PIC16F876.
;Файл расположен в директории установленной MPLAB-IDE.

__CONFIG ( _CP_OFF & _BODEN_OFF & _HS_OSC & _WDT_OFF & _PWRTE_ON & _DEBUG_ON & _CPD_OFF & _LVP_OFF )

org 0x0000 ;Вектор сброса процессора, после сброса программа
;начинает выполняться отсюда.
nop ;Этот nop жизненно необходим для корректной работы MPLAB-ICD
clrf INTCON ;Перестраховываемся, запрещаем все прерывания.
clrf PCLATH ;Перестраховываемся, выбираем Bank 0 Памяти Программ.

goto Start ;Обход вектора прерывания и блока подпрограмм.

org 0x0004 ;Вектор прерывания.
;********** Начало обработчика прерываний **********
;В этой простой программе не используются прерывания
;********** Конец обработчика прерываний************

;***************** Блок подпрограмм ****************
;В этой простой программе нет подпрограмм
;************* Конец блока подпрограмм *************


Start ;Тело программы начинается здесь.

;********** Начало Инициализации процессора ********
BSF STATUS, RP0;1 bank-TRIS
MOVLW 0x06 ; Configure all pins
MOVWF ADCON1 ; as digital inputs
BSF TRISA, 0;input
clrf PORTC ;Все выводы PORTC переводим в '0'
movlw b'00100000' ;
movwf STATUS ;Выбираем Bank 1 RAM (адреса 80h - FFh)
movlw b'00000000' ;
movwf TRISC ;Все линии PORTC переключаем на выход
clrf STATUS ;Возвращаемся в Bank 0 RAM (адреса RAM 00h - 7Fh)



;********** Конец Инициализации процессора *********
Chek: BTFSS PORTA, 0
GOTO Chek
bsf PORTC,4 ;Зажигаем Светодиод
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
bcf PORTC,4 ;Гасим светодиод
goto Chek ;Бесконечный цикл.

END ;Конец исходного кода программы

;============= Конец 1step-876.asm =====================
Pavel55 вне форума  
Непрочитано 25.06.2010, 14:24  
Pavel55
Частый гость
 
Регистрация: 13.04.2010
Сообщений: 33
Сказал спасибо: 14
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Pavel55 на пути к лучшему
По умолчанию Re: PIC16F876

dimanka, скажите так правильно будет? и наминал резистора такой или нет?
Вложения:
Тип файла: pdf PIC 16F876 .pdf (35.3 Кб, 83 просмотров)
Pavel55 вне форума  
Непрочитано 28.06.2010, 08:35  
dimanka
Временная регистрация
 
Регистрация: 30.03.2007
Адрес: Челябинск
Сообщений: 62
Сказал спасибо: 11
Сказали Спасибо 11 раз(а) в 9 сообщении(ях)
dimanka на пути к лучшему
По умолчанию Re: PIC16F876

Сообщение от Pavel55 Посмотреть сообщение
так правильно будет?
5.1k вполне годится. Но можно и без него если на PORTB подключить там подтягивающие резисторы внутри подключаются битик RBUP кажется
dimanka вне форума  
Непрочитано 28.06.2010, 12:10  
Pavel55
Частый гость
 
Регистрация: 13.04.2010
Сообщений: 33
Сказал спасибо: 14
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Pavel55 на пути к лучшему
По умолчанию Re: PIC16F876

Подскажите как прописывать паузы, а то я NOP использую их там очень много получается. вообщем до чего я дошел.
;********** Конец Инициализации процессора *********
Chek: BTFSS PORTA, 0
GOTO Chek
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
Chek: BTFSS PORTA, 0
GOTO Chek
bsf PORTC,4 ;Зажигаем Светодиод
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
nop ;Тянем время...
bcf PORTC,4 ;Гасим светодиод
goto Chek ;Бесконечный цикл.

Так то вроде все работает но есть несколько моментов которые я не могу победить
1. при подаче питания на контроллер кратковременно на порте С 4 проскальзывает единичка.
2. если отпустить кнопку в тот момент когда на выходе единица то она там и остается и реле остается подтянутым.
Pavel55 вне форума  
Непрочитано 28.06.2010, 12:35  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: PIC16F876

Классика однако, если что-то повторяется - использовать цикл. Это самый простой метод.
Код:
        movlw    delay  ;delay - длительность задержки 
        movwf    TEMP
wait: decfsz    TEMP
        goto wait
Нужно учитывать, что
если во время ожидания нужно что-то еще делать, то применяют таймеры и прерывания. Но это отдельная и большая тема.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Сказали "Спасибо" MisterDi
Pavel55 (28.06.2010)
Непрочитано 29.06.2010, 15:39  
Pavel55
Частый гость
 
Регистрация: 13.04.2010
Сообщений: 33
Сказал спасибо: 14
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Pavel55 на пути к лучшему
По умолчанию Re: PIC16F876

Сообщение от MisterDi Посмотреть сообщение
Код:
movlw delay ;delay - длительность задержки
movwf TEMP
wait: decfsz TEMP
goto wait
Помогите пожалуйсто вставить этот фрагмент кода в мой код
Pavel55 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pic16f877 и pic16f877A определяются PicKit2 как pic16f876 avr123-nm-ru Микроконтроллеры, АЦП, память и т.д 31 18.05.2010 23:04


Часовой пояс GMT +4, время: 13:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.