Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

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

 
Опции темы

PIC16F84A???

Непрочитано 26.01.2005, 01:10  
RETAS
Гость
 
Сообщений: n/a
По умолчанию PIC16F84A???

Уважаемый DK!

Большое вам спасибо за разьяснения о прерываниях,но,как говорится,
углубление в лес,ровносильно увеличению количеству дров и,в потверждение
этого,у меня опять вопросы и надежда на помощь

1. Предназначение выражения ORG.Я сумел понять,что им указывается начало программы
и вектор прерываний,но,скажем,в одной и програм стоит ORG 5.Что это даёт?

2. Есть ли возможность в PICе зафиксировать факт,что на заданный порт
поступал импульс и эта информация сохранялась немешая основной программе,
а после проверке стиралась?

3. Как определить с помощью PICа-кратковременно или долго нажымалась кнопка?

Спасибо.
Реклама:
 
Непрочитано 27.01.2005, 13:27  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: PIC16F84A???

Сообщение от RETAS
1. Предназначение выражения ORG
Все очень просто. ORG 5 - означает, что данный блок программы размещается в памяти начиная с адреса 5.
Сообщение от RETAS
2. Есть ли возможность в PICе зафиксировать факт,что на заданный порт поступал импульс и эта информация сохранялась немешая основной программе, а после проверке стиралась?
Можно. Пишешь обработчик прерывания от изменения состояния порта и пишешь в любую переменную флажок. Или, если нужно хранение этой инфы при отключении питания, пишешь в ППЗУ.
Сообщение от RETAS
3. Как определить с помощью PICа-кратковременно или долго нажымалась кнопка?
Просто считай количество циклов опроса при замкнутой кнопке. А после размыкания сравнивай с константой - если меньше, значит кратковременное замыкание было. Или системный таймер запускай и читай из него.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 27.01.2005, 22:26  
li$ergin
Гость
 
Сообщений: n/a
По умолчанию

Для примера могу подкинуть как я с этим боролся, с оп\тлавливанием длинного нажатия

...
unpres bcf flags, 2 ;да, это не дребезг....
movlw 0xFF
movwf keyprleng ;инициализируем младшее слово аккумулятора длиного нажатия
movlw 0x03 ;инициализируем старшее слово
movwf keyprlengh ;аккумулятора
return


press btfsc flags, 2 ;текущее нажатие было отработано?
goto islong ;да, определим, длинное ли нажатие

;********обработка единичного нажатия 1-й кнопки**********
btfss flags, 1 ;текущий режим-ручной?
goto but2auto ;нет, авторежим, соответственно реагируем
movlw .0
subwf effect, w
btfsc STATUS, Z ;эффект бегущий огонь?
goto needshad ;да, пропускаем сдвиг
call in_c_0
rlf effect, f ;нет, двигаем единичку
bsf flags, 2 ;ставим флаг - кнопка отработана
return

needshad bsf effect, 0 ;включаем бегущий огонь, так как простой сдвиг ничего не даст
bsf flags, 2 ;ставим флаг - кнопка отработан
return

islong decfsz keyprleng, f ;уменшаем на 1 аккумулятор нажатий без отпускания
return ;было ли ровно hFF нажатий?
decfsz keyprlengh, f ;да, уменшаем старшее слово аккумулятора
return
movlw b'00000010' ;инвертируем флажек
xorwf flags, f ;автообработки
btfsc flags, 1 ;Ручное переключение?
bcf PORTA, 0
btfss flags, 1
bsf PORTA, 0
bsf flags, 2
movlw 0xFF ;инициализируем
movwf keyprleng ;оба слова
movlw 0x03 ;аккумулятора
movwf keyprlengh ;длинного нажатия
return

может и несколько кривовато, за то, по-моему, понятно...
 
Непрочитано 16.02.2005, 20:19  
RETAS
Гость
 
Сообщений: n/a
По умолчанию

О том, что ORG указывает по какому адресу направится программе,
мне понятно, но непонятно когда и какой адрес указывать.Взгляните,
пжл., на програмку бегущих огней www.interq.or.jp/japan/se-inoue/e_pic6_15.htm
и помогите разобраться для чего там стоит ORG 5 и в каком случаи
программа очутится на этом месте.

Зайти на этот сайт японца рекомендую всем начинающим знакомство
с PICами.

Спасибо.
 
Непрочитано 24.02.2005, 11:21  
Drex
Прописка
 
Регистрация: 16.04.2004
Сообщений: 198
Сказал спасибо: 339
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
Drex на пути к лучшему
По умолчанию

ORG указывает НЕ по какому адресу направиться программе, (это указывает goto), а указывает компилятору по какому адресу в памяти программ будет размещена следующая за ORG команда. Вот тут например у японца:
org 4 ;Interrupt Vector
goto init

;**************** Initial Process *********************
org 5
init bsf status,rp0 ;Change to Bank1
movlw h'ff' ;Set input mode data
movwf trisa ;Set PORTA to Input mode

по адресу 0004 (ORG 4) размещается команда goto init

а вот ORG 5 здесь по сути вообще никакого смысла не имеет, потому что следующая команда (bsf status,rp0) и без него размещалась бы по адресу 5, так как идет следом за командой goto init. ORG используется тогда, когда нужно разместить кусок программы строго по заданному адресу в области программ.
Drex вне форума  
Непрочитано 03.03.2005, 08:20  
RETAS
Гость
 
Сообщений: n/a
По умолчанию

Большое спасибо за долгожданный ответ, я уж, было, думал - недождусь.

ВСЕМ! ВСЕМ! ВСЕМ! У вас есть вопросы ? Спрашываите - ну очень мала вероятность, что вам неответят.

А у меня опять хватает наглости из-за благосклонности КАЗУСА задать очередной детский вопрос об этих
ORG-ах( будьте любезны, если ещё терпимо):

если я указал с помощью ORG начало программы и адрес возврата из прерываний,то есть ли какие ещё
другие случаи когда необходимо указывать строгие адреса?

Спасибо.
 
Непрочитано 03.03.2005, 14:14  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию

[quote="RETAS"]Большое спасибо за долгожданный ответ, я уж, было, думал - недождусь.

ВСЕМ! ВСЕМ! ВСЕМ! У вас есть вопросы ? Спрашываите - ну очень мала вероятность, что вам неответят.

А у меня опять хватает наглости из-за благосклонности КАЗУСА задать очередной детский вопрос об этих
ORG-ах( будьте любезны, если ещё терпимо):

Цитата:
если я указал .... адрес возврата из прерываний
а это еще зачем? Стека тебе недостаточно?
Цитата:
есть ли какие ещё другие случаи когда необходимо указывать строгие адреса?
Да нет, пожалуй... В ORG есть необходимость, если размещаешь обработчик прерываний (ORG 4). Ну еще может возникнуть такая необходимость при размещении блока данных, чтоб не перейти через границу сегмента (для простоты выборки).
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 04.03.2005, 04:20  
Drex
Прописка
 
Регистрация: 16.04.2004
Сообщений: 198
Сказал спасибо: 339
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
Drex на пути к лучшему
По умолчанию

Цитата:
я указал с помощью ORG начало программы и адрес возврата из прерываний,
Что значит адрес возврата из прерывания ? Он ведь каждый раз разный и хранится в стеке. Сама суть прерывания в чем? В том, что где программа прервала свой ход, именно туда она должна и вернуться после отработки процедуры прерывания. Другое дело, что адрес начала процедуры прерывания должен быть указан жестко (0004), но это для данного типа контроллера, у других он может быть нефиксированным. А также как сказал уважаемый DK, ORG полезно использовать при размещении блока данных.
Drex вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC16F84A и MT-16S2D Runtime_error Микроконтроллеры, АЦП, память и т.д 2 09.05.2007 19:18
Pic16f84a VS Assembler tuart Микроконтроллеры, АЦП, память и т.д 2 11.04.2007 23:19
PIC16F84A документацыя макс Микроконтроллеры, АЦП, память и т.д 3 11.12.2005 14:03
PIC16F84A макс Микроконтроллеры, АЦП, память и т.д 1 11.12.2005 00:01
pic16f84a khorght Микроконтроллеры, АЦП, память и т.д 1 09.09.2004 20:37


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


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