perec200

Как остановить выполнение кода в pic16?

5 сообщений в этой теме

perec200    0

Здравствуйте! По нажатию на кнопку (1) срабатывает прерывание INTF (RB0) необходимо вывести надпись и так она должна отображаться до тех пор, пока я не нажму на (2) кнопку и сработает прерывание RB7 которое напечатает другую надпись. 
Решено было использовать задержки, но в тот момент пока вызвана задержка, не срабатывает другое прерывание.
Как мне вывести надпись на экран и чтобы она не пропадала, до тех пор пока не будет вызвано другое прерывание?

void interrupt isr(){
    if(INTF){
        INTF = 0; // reset interrupt flag/
        Lcd_Clear();
        Lcd_Set_Cursor(1,1);
        Lcd_Write_String("1.");
        Lcd_Set_Cursor(1,3);
        Lcd_Write_String("Hello");
        __delay_ms(1000);
    }
    if(RBIF){
        if(RB7){
            activeItem++;
            Lcd_Clear();
            Lcd_Set_Cursor(1,1);
            Lcd_Write_String("RB7");
            __delay_ms(1000);
        }
        RBIF = 0;
    }
}

VirtualBox_OwnWIQAVM_07_04_2018_22_05_17.thumb.png.a37d1745c3a41bcddb0e5c50b2c81c04.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vovka    30

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

В прерывании устанавливайте флаги, а в главном цикле их обрабатывайте

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexter    325
9 часов назад, perec200 сказал:

Решено было использовать задержки

Зачем? :)

Поделиться сообщением


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

Зачем тут вообще прерывания? В майне ай бутон на первую кнопку - индикация первой надписи. В тело этой индикации проверка нажатия второй кнопки - индикация второй надписи.

  • Одобряю 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 438

1. для вашей задачи прерывания на не нать.

2. в нормально построенной программе код не останавливается

3. и к пикам ваш вопрос относится только потому, что их надо программировать, программирование это в первую очередь алгоритм работы устройства и вот с этим у вас проблемы, попробуйте посмотреть курс лекций на ютубе будет намного полезней, чем плодить бестолковые темы , за это здесь наказывают :spiteful:

рекомендую  послушать

4. когда изучите пункт3 вся ваша задача сведется к использованию оператора case

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Геннадий К.
      В электронный журнал требуются внештатные авторы статей - опытные разработчики электроники или преподаватели профильных дисциплин ВУЗов.
      Тема - практическое применение электронных компонентов. Выдаем ТЗ на статьи, при необходимости высылаем отладочные платы, по итогам публикации выплачиваем гонорар.
    • Автор: bvitaly
      Добрый вечер.
      Нужно с микроконтроллера управлять нагрузкой. Напряжение DC 32 - 42V, ток до 30А (реально 0-5А с теоретическим максимумом 30).
      Твердотельные реле сразу в минус, они такой ток не держат. Мосфеты тоже, остается стандартная схема логика открывает транзистор, транзистор включает реле.
      Вся логика 5V, реле на 30А напряжением катушки 5V не существуют? Не нашел нигде. Остается дополнительное питание +12V на катушку.
      В каталогах вижу "коммутируемое напряжение 125 VAC; 28 VDC" или что-то в этом духе, хотя ток указан 30А - почему мало и чем грозит если коммутировать большее напряжение? Можно смело использовать если напряжение чуть больше, но токи меньше?
      Где-то рекомендуют использовать транзистор 2N2222, где-то BC547 и BC548. Какой принцип выбора транзистора? Я правильно понимаю что нужно иметь запас Vce напряжение катушки реле умножить на 2 и запас по току? Если в даташите на реле написано coil power 1.9W считай 0.15А и все транзисторы с током коллектора 0.1А сразу пробиваются потому из выше перечисленных можно только 2222? Диод нужно брать 1n4007 как рекомендуют на каждом заборе или сойдет любой как минимум на 1000V и 0.5A?
    • Автор: KimYura
      Добрый день, 
      Есть ли у кого схема или принцип регулировки уровня отрицательной (нижней) полуволны прямоугольного сигнала
      Возможно реализовать с помощью регулировки постоянной составляющей сигнала, но как именно собрать схему без понятия
      В идеале необходимо получить плавную регулировку от 0 до 12В.
       

    • Автор: Катерина
      Очень-очень нужны инженеры по схемотехнике!!! 
      АО «НПО «Орион» сейчас находится в поиске крутых и грамотных специалистов для разных проектов! Мы занимаемся разработкой микрофотоэлектроники как на гражданку, так и на оборонку. Это и  тепловизоры, и SWIR-камеры, инфракрасные термосканы и конструктор Smart Blocks на базе Ардуино, а также фотоприемные устройства, лазерные целеуказатели, очки ночного виденья, микрокриогенные системы и другое.
      Нам нужен такой человек, который по сформулированному техническому заданию сможет с нуля разработать и спроектировать схему «на железе» для того или иного проекта. Также создать макет электронной схемы, протестировать и испытать его. Ну и естественно сопроводить процесс производства от опытного до серийного. Работа в паре с инженером-конструктором. Очень круто, если вы уже проектировали ПЛИС и микроконтроллеры.
      Наши плюшки:
      Интересные проекты, некоторые из них в России еще никогда не разрабатывались. У вас будет возможность для творчества, новых разработок и предложений. Стабильность и гарантию! Не смотря на наши проекты и разработки в гражданском направлении, предприятие у нас государственное и соблюдает все нормы трудового законодательства. Очень вкусную столовую на территории с завтраками и обедами (средняя стоимость ~ 150 рублей). Уникальную возможность – увидеть производство матриц фоточувствительных элементов от подложки до готовой матрицы, которую потом Вы и будете разводить на схеме. Множество спортивных и культурных мероприятий в большом и дружном коллективе. А также для пешеходов – доступность от метро Выхино (7 минут пешком или 1 остановка на автобусе). Бонусом водителям автомобилей - две бесплатные корпоративные парковки. Локация: Москва, ст. метро Выхино;
      График работы: 5/2 с 9:00 до 17:45 (+/- час);
      З/п по результатам собеседования
      Контакты: hr@npo-orion.ru
      +7 499 786 3669 (Екатерина) 
    • Автор: 55nlo
      Нужно написать программу "календарь" на АСМ
      Примерное ТЗ 
       
       
      1    5     по значению R0 (ввода)  в R20 вводим табличные значения        табл.1        
      1    6     по значению R0 (ввода)  в R21 вводим табличные значения        табл.1        
      1    7    NOP     (возможно доп. Команда)                 
      1    8    NOP     (возможно доп. Команда)           
      1    9    значение ОЗУ (адрес Rz) копируем в регистр R18(остаток)                
      1    10    R18(остат) прибавляем R24(лист) результат в R18(остат)                 
      1    11    провер. R18(остат) < 8, то п.12, нет то  R18(остат) -7, результат в R18(остат) и к п.12.                
      1    12    R 18(остат)  копируем в ОЗУ адрес Rz                
      1    13    адрес Rz увеличиваем на 1                
      1                        
      1    14    R19(стр.) увелич. на 1, проверяем Rстр =13.если не равно, п. 15. если  равно, то                 
      1             R19 стр. обнуляем, Rлиста увеличиваем на 1,             
      1            Rлиста если не =13, то к п. 9, если равно 13,             
      1            то  R17(листа) обнуляем и перех к п. 2.5(2-й участок, следующий)            
      1                        
      1    15    R18(ост.)+ 1 = в R18(ост.)                
      1    16    проверяем R18(ост) больше 10, если больше то -10, результат в R18(ост) и в п. 17 нет, то п. 17                
      1    17    значение ОЗУ (адрес Rz  текущий) копируем в R25сравн.                
      1    18    R25(сравн.) увелич на 1                
      1    19    R1(книги) установить значение "2"                
      1    20    NOP           (возможно доп. Команда)     
      1    21    NOP          (возможно доп. Команда)            
      1    22   R18(ост) =R20? если не равно ,то к 23, равно, то R сравн. обнуляем заносим 0 в ОЗУ и к п.13            
      1    23    R18(ост)=R21,если не равно, то к 24,    равно    то R сравн. обнуляем, заносим 0 в ОЗУ и к п.13            
      1    24    R25(сравн.) в ОЗУ (текущий) адрес Rz                
      1    25    R25(сравн.) более 20, то к п. 26. менее.то перех к п. 13                
      1    26    R учета =Rсравн.? да к п. 27 нет к п. 13                
      1    27    R7 обнуляем                
      1    28    R18(остат) копируем в Rморзе                 
      1    29    R7+ Rлиста в R7                
      1    30    проверяем R7  больше 12, если больше то -12, результат в R7 и к п. 31, нет к п. 31                
      1    31    R7  значение конвертируем через таблицу  в R7          табл.1м        
      1    32    Выполняем  прогу "М".                
      1    33    переходим к п.13             
       + ДВЕ ТАБЛИЦЫ ПО 40 СТРОК.   
  • Сообщения

    • ОБНОВЛЕНИЕ СПИСКА

      Philips 
      PO400 40MHz 7000р (made in France)

      GW Instek (made in Taiwan)
      GOS-6050 50MHz 8000р (без ручки)
      GOS-652G 50MHz 6000р (без декоративной накладки на экран ЭЛТ, без ручки)

      EZ digital (made in Korea)
      OS-5020 20MHz 6000р
      OS-5040A 40MHz 7000р Matrix (made in china)
      MOS-640CH 40MHz 6000р

      ОСУ-10А 10MHz 4000р Россия

      Импульсные блоки питания с цифровой регулировкой напряжения и тока
      Instek PSH-1036 0-10в 0-36А! 10000р (Хороший блок для ремонта видеокарт)

      Цена без торга
      Осциллографы без щупов!
      Проверить осциллографы можно с помощью ВЧ генератора, предварительно могу выслать видео работы устройства на месенджер или эл почту.
      Доставка по мск 300р 
      Пересыл возможен по полной предоплате
      Доступна авитодоставка 89269260682
    • -Мойша, дай мне денег.... -Ты-же, знаешь у меня нет денег. -Нет, я знаю у тебя есть деньги. Скажи мне, где у тебя деньги лежат - я пойду и возьму. -У меня все деньги в банке. -В какой? Трехлитровой?
    • да спасибо, тоже это думаю попробовать , только почему она возбуждается - из-за DA1.1 ?
    • Понятно ,  я отпишу когда проверю конденсаторы , и перепаяю местами мц . Промою плату и тд.   А вот что скажите на счет , что у терминатора 3 сначала тишина , а при выкручивании чуйки появляется смешанный тон. А вы говорили что у Трио  сначала должен высокий тон , а потом смешанный ? Как понять , ведь трио тотже 3 , только еще добавлен канал Чермета
    • А если измерять стрелочным амперметром (магнитоэлектрической или электромагнитной системы)? С уважением В.
    • Вариант: последовательно с R11 и R12 включить по маломощному диоду - анодом в сторону ОУ. С уважением В.
    • Как я понимаю - это RX, один подключить на С5 второй на массу.   Это ТХ, с теми проводами что он связан. 5 провод идёт на массу, два других идут на С6 и С7. И что то сопротивление слишком уж большое.