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

perec200

Members
  • Постов

    5
  • Зарегистрирован

  • Посещение

Весь контент perec200

  1. Не помогло. Не заходит и и пункты меню через 2 переключаются
  2. Здравствуйте! Во время срабатывания прерывания INTF программа выводит меню на экранчик, при срабатывание прерывания на порте RB7 отображается следующий пункт меню. Далее я добавляю таймер TIMER1 который срабатывает через максимальное возможное время Period=0,065536 s. НО из-за выполнения кода в теле прерывания таймера не срабатывает прерывание INTF, но зато срабатывает прерывание RB7, и вместо того чтобы включить следующий пункт меню, он перескакивает через один. Вопросы: После того как код прерывания отработал, программа начинает выполнять код в функции main сначала и с того места где она остановилась перед вызовом прерывания? Как мне реализовать и работу в меню и работу прерывания? (была мысль при нажатии входе в меню останавливать работу таймера, но как это сделать?) Проект Proteus + MPLAB LCD_Interfacing.zip
  3. Помогите, пожалуйста, с кодом 1000 сайтов прошерстил ничего не работает. Мне нужно к примеру каждую минуту, чтобы порт RA1 загорался. Так мне будет легче понять логику работы. Пробовал ЧТО-ТО ТАКОЕ СДЕЛАТЬ но компилятор ругается на PR1 Это код с таймером в 10 секунд. Он у меня не работает #include <p24fj128ga010.h> _CONFIG2(FCKSM_CSDCMD&OSCIOFNC_ON&POSCMOD_HS&FNOSC_PRI) #define SYSCLK 8000000 #define t1 0.5 #define PREG SYSCLK/2*t1/256 #define DELAY 20 #define PORTB_0 PORTBbits.RB0 void main(void) { int cnt = 0; AD1PCFG = 0xffff; TRISB = 0xfffe; PR1 = PREG; TMR1 = 0; T1CON = 0x8030; while (1) { if (_T1IF == 1) { _T1IF = 0; if (cnt == DELAY) { cnt = 0; PORTB_0 = ~PORTB_0; } cnt++; } } }
  4. Добрый день, в программирование контроллеров я ничего не смыслю, знаю только ассемблер, С++. Мне необходимо реализовать систему автополива, у меня есть 5 выходов RA каждый из которых отвечает за открытия крана. У каждого порта есть время срабатывания и длительность полива. Как мне в заданное время подать на нужный выход RA логическую единицу и держать этот уровень определенное время. Пример: время срабатывания RA1 в 12:15 логическая единица должна быть установлена на 5 минут после истечения этого времени выход выдаёт сигнал 0. Может посоветуете свои варианты как лучше сделать к примеру делать полив через заданные промежутки времени. Основной вопрос: как создать таймер, который в заданное время сработает и подаст сигнал на порт RA?
  5. Здравствуйте! По нажатию на кнопку (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; } }
×
×
  • Создать...