Программирование на языке Си процедур управления. Основы разработки и отладки управляющих программ на языке Си для микроконтроллеров семейства PIC18, страница 7

TRISB = 0b10000001;  // настроить линии RB0, RB7 на ввод, остальные

// на вывод

TRISC = 0;                    // настроить все линии порта С на вывод

while(1)

{

if(PORTBbits.RB0 == 0)    // если контакт SB1 замкнут

PORTCbits.RC0 = 1;     // включить VD1

else                                      // иначе

PORTCbits.RC0 = 0;     // выключить VD1

}

}

3.6.1. Создайте проект с именем  pr9  в новой папке, которую назовите  proj9. Далее наберите текст программы  sw_led1.c  в окне редактора (используйте цветную кодировку текста при наборе). После этого  необходимо внести исходный файл  sw_led1.c  и файл сценария линкера  18f242.lkr  в созданный проект. Затем проверьте установку опций для создания проекта с помощью пункта меню  Project > Build Options… > Project. И наконец, выполните построение проекта с помощью пункта меню  Project > Build All.

3.6.2. В случае успешной компиляции проекта выполните тестирование программы с помощью симулятора. С этой целью выберите пункт меню Debugger > Select Tool > MPLAB SIM. Затем с помощью пункта меню View > Watch откройте окно наблюдения Watch и занесите в него переменные PORTB и PORTC (их надо выбрать из списка SFR – регистры специальных функций).

В программе sw_led1.c проверяется состояние линии RB0 порта В при различном положении контакта переключателя SB1. Когда контакт SB1 разомкнут, на линии RB0 будет высокий уровень (логическая 1). Когда контакт SB1 замкнут, на линии RB0 будет низкий уровень (логический 0).

Симулятор MPLAB SIM предоставляет возможность моделировать логические состояния на линиях портов МК. Это выполняется с помощью асинхронных стимулов, которые можно подавать на выводы портов с помощью опций в диалоговом окне стимулов Stimulus:

·  Pulse High – подать импульс высокого уровня;

·  Pulse Low – подать импульс низкого уровня;

·  Set High – установить высокий уровень;

·  Set Low – установить низкий уровень;

·  Toggle – переключить уровень.

Опции Pulse High, Pulse Low посылают на вывод импульс длительностью в один командный цикл TCY. Этот режим удобен для подачи счетных импульсов на таймеры или подачи запросов внешнего прерывания. Опции установки вывода в высокое (Set High) и низкое (Set Low) состояния передают заданную величину на вывод МК. Для произвольного изменения состояния входа можно запрограммировать две кнопки, одна из которых будет задавать “1”, а другая – “0”. Тот же результат достижим при помощи одной кнопки в режиме Toggle, каждое нажатие которой меняет состояние на входе.

Для создания асинхронных стимулов выберите пункт меню Debugger > Stimulus > NewWorkbook, при этом на экране появится диалоговое окно Stimulus. В этом окне выберите вкладку “Asynch”.

Поставьте курсор на первую строку в колонку “Pin/SFR” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт RB0. Затем переместите курсор в колонку “Action” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт “Set High”.

Далее поставьте курсор на вторую строку в колонку “Pin/SFR” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт RB0. Потом переместите курсор в колонку “Action” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт “Set Low”.

И, наконец, поставьте курсор на третью строку и выберите пункт RB0, а затем пункт “Toggle”.

После выбора настроек нажмите кнопку  Apply  в диалоговом окне с целью разрешения их использования. Окно примет вид, показанный на рис. 3.

 

Рис. 3. Вид окна асинхронных стимулов

Вначале подайте на линию RB0 высокий уровень (Set High), щелкнув по кнопке “>” поля  Fire в окне Stimulus. Потом сделайте активным окно редактора с файлом  sw_led1.c, выполните сброс микроконтроллера, а затем запустите программу в режиме Animate.

Наблюдайте по перемещению зеленой стрелки работу программы, а в окне  Watch за значением битов RB0 и RC0 портов В и С.

Примечание. Вы можете установить удобную скорость анимации, т.е. перемещения по программе, используя пункт меню Debugger > Settings… .Затем в раскрывшемся окне нужно выбрать вкладку Animation/Realtime Updates и переместить бегунок по линии Animation step time.