Специальные цены   новые товары
Закрытая тема
Показано с 1 по 6 из 6

Помогите разобраться с прогой

Тема раздела Самодельная электроника, компьютерные программы в категории Общие вопросы; Уважаемые форумчане. Возник вопрос у понимании этой программы Мне нужно запрограммировать PIC контроллер p16f64 Но уже в самом начале загвоздка. ...

  1. #1

    Регистрация
    28.11.2005
    Адрес
    Черновци
    Сообщений
    5

    Помогите разобраться с прогой

    Уважаемые форумчане.
    Возник вопрос у понимании этой программы
    Мне нужно запрограммировать PIC контроллер p16f64
    Но уже в самом начале загвоздка.
    Есть код:

    #incl*ude p16f84a.inc
    list p = 16f84
    ; incl*ude <p16f84.inc>
    c1 equ 0*0c
    org 0*00
    reset
    goto start
    org 0*04
    start
    movlw 0*09
    movwf c1
    loop
    incfsz c1,F
    goto loop
    goto start
    end

    Вопрос:
    1. Что такое org и зачем оно нужно.

    Еще один текст:

    ....
    loop
    sleep
    goto loop
    ....

    Это вставлено в середине программы. Я так понимаю, что если заходим туда, то засипаем навечно...
    Просветите пожалуйста.

  2.  
  3. #2
    Lom
    Lom вне форума

    Регистрация
    11.11.2005
    Адрес
    Северодвинск
    Возраст
    43
    Сообщений
    26
    Отвечаю:
    1) ORG *** - указатель на область памяти программы, с которой начинается написанный ниже код этой программы.
    Например: ORG 0x00h - это указатель на начало программы. Когда включается контроллер он начинает выполнение программы с этого адреса (нулевого), то есть начинается выполнение следующей за этой ORG 0x00h командой.
    ORG 0x04h - это указатель на выполние прерываний, существующих в программе
    В общем ORG - штука, без которой не обойдется ни одна программа.

    2) По поводу второго текста:
    Да, происходит зацикливание программы и процессор впадает в 'спячку'.

  4. #3

    Регистрация
    28.11.2005
    Адрес
    Черновци
    Сообщений
    5
    Цитата Сообщение от Lom Посмотреть сообщение
    ORG 0x04h - это указатель на выполние прерываний, существующих в программе
    А можно пример именно когда надо использовать ORG 0x04h

    Цитата Сообщение от Lom Посмотреть сообщение
    Да, происходит зацикливание программы и процессор впадает в 'спячку'.
    В программе куча кода значит процессор как то выходит из спячки, как?
    Я конечно извиняюсь, возможно эти вопроси для Вас кажутся совершенно тупими, но для меня они непонятные

  5. #4

    Регистрация
    18.08.2003
    Адрес
    Челябинск
    Сообщений
    445
    Цитата Сообщение от Fl@sh Посмотреть сообщение
    А можно пример именно когда надо использовать ORG 0x04h
    допустим если в описании на процессор сказано, что при переходе сигнала из 0 в 1 на ножке 4 в процессоре происходит прерывание и управление передается по адресу 123. вам нужно начать код обработчика прерываний с адреса 123, для этого и нужна директива org 123. она "перескакивает" на указанный адрес, при этом возможно оставляя неиспользуемую дырку в прошивке.

    В программе куча кода значит процессор как то выходит из спячки, как?
    значит весь полезный код работает только по прерываниям.

  6.  
  7. #5

    Регистрация
    02.08.2002
    Адрес
    Москва
    Возраст
    43
    Сообщений
    3,120
    Цитата Сообщение от Gold Посмотреть сообщение
    значит весь полезный код работает только по прерываниям.
    Очень популярен еще такой вариант. Программа пишется как-бы "линейно". Типа инициализировались, потом, например, ждем какой-нибудь импульс, потом выдаем какой-нибудь ответ, потом входим в вечный цикл и "зависаем". То есть программа срабатывает только один раз, затем повисает. Чтобы была постоянная работа такой программы, в процессе инициализации настраивают т.н. watchdog timer, который после определенного интервала времени просто делает этому контроллеру reset.

    Это один из способов повышения надежности: линейный код более простой; если в какой-то из редко выполняемых ветвей алгоритма есть глюк, ничего страшного, все равно рано или поздно сбросится и пойдет по-новой.

  8. #6

    Регистрация
    29.11.2005
    Адрес
    Екатеринбург
    Возраст
    34
    Сообщений
    16
    0x04 - это адрес-указатель на процедуру обработки прерывания, возникающего при возникновении фронта/среза (определяется в регистре option_reg) на ногах RB(7..4) контроллера. Собственно, контроллер будет спать до тех пор, пока не изменится состояние на хотя бы одной ноге из RB(7..4), затем он выполнит эту обработку и опять ляжет спать .

    что при переходе сигнала из 0 в 1 на ножке 4 в процессоре
    У конкретно PIC16{CR/F}8{3/4} 4ая нога - MCLR. Я думаю, имелась в виду RB4 ?

Закрытая тема

Похожие темы

  1. Помогите разобраться с иглами карбюратора
    от maksim 84 в разделе Авто Off-Road
    Ответов: 1
    Последнее сообщение: 09.09.2010, 20:54
  2. помогите разобраться с двигателем
    от xhobot в разделе Электродвигатели, регуляторы, мотоустановки
    Ответов: 3
    Последнее сообщение: 13.05.2009, 22:59
  3. Помогите разобраться с хвостовой сервой
    от Taiga в разделе Вертолеты TT - Raptor и аналоги
    Ответов: 4
    Последнее сообщение: 04.01.2009, 23:28
  4. Помогите разобраться с Kyosho MINI-Z Overland
    от Lonely Heart в разделе Мини-Z и меньше
    Ответов: 0
    Последнее сообщение: 24.12.2003, 17:17
  5. Помогите разобраться с корпусом.
    от gevgenij в разделе Авто On-Road
    Ответов: 0
    Последнее сообщение: 07.03.2003, 18:19

Ваши права

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