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

3.4.8. Выберите Proteus VSM в качестве инструмента для выполнения проверки работы МКУ. Это делается с помощью пункта меню Debugger > Select Tool > Proteus VSM. На рабочем столе откроется окно Proteus VSM MPLAB Viewer (окно просмотрщика).

3.4.9. Щелкните по крайнему левому значку меню с всплывающей надписью Open Design. В раскрывшемся окне Load ISIS Design File найдите вашу папку e:\…\proj6 и откройте файл led3.dsn. На экране появится схема разработанного МКУ. Масштаб изображения можно менять с помощью колеса на мышке или с помощью иконок “лупа+” и “лупа-“  на верхней панели инструментов.

3.4.10. Далее необходимо загрузить в микроконтроллер исполняемый hex-файл программы led3.c. С этой целью щелкните по заголовку окна редактора      программы e:\...\proj6\led3.c.  Затем с помощью пункта меню Project > Build All выполните компиляцию файла led3.c. После появления в окне результатов Output сообщения “BUILD SUCCEEDED” полученный файл led3.hex автоматически загрузится в программную память микроконтроллера.

3.4.11. Теперь можно приступить к проверке работы МКУ с помощью просмотрщика Proteus Viewer. С этой целью щелкните по зеленой кнопке с всплывающей надписью “Start Simulation” в строке меню отладчика. При этом Proteus Viewer соединяется с MPLAB IDE. В результате активизируются значки управления отладкой в меню MPLAB, а в заголовке окна Proteus VSM MPLAB Viewer добавится надпись (Animating).

3.4.5. Выполните проверку работы МКУ в автоматическом режиме выполнения программы. С этой целью щелкните по значку  Resetиз отладочного меню, а затем – по значку Run. Наблюдайтепо свечению светодиода за правильностью работы программы. Щелчком по значку Haltостановите выполнение программы.

3.4.7. Для завершения процесса отладки с помощью просмотрщика Proteus Viewer нужно щелкнуть по краcной кнопке с всплывающей надписью Stop Simulation. Произойдет рассоединение отладчика MPLAB IDE и просмотрщика Proteus Viewer. После этого можно по отдельности корректировать схему МКУ с помощью Proteus ISIS и программу в MPLAB IDE.

3.4.8. В заключение закройте все окна и проект в MPLAB IDE.

3.5. Задания для самостоятельной работы

Задание 1. Необходимо разработать программу работы МКУ, изображенного на рис. 2, и выполняющего следующий алгоритм. После запуска программы светодиод 4 раза загорается на 1 секунду и  гаснет на 2 секунды. Затем светодиод окончательно гаснет. Тактовая частота МК равна 4 Мгц. Цикл повторения организуйте с помощью оператора  for( ). Не забудьте зациклить программу после окончания мигания светодиода. Программу назовите led4.c. Создайте новый проект pr7 и папку proj7. Проверьте работу программы с помощью Proteus Viewer с использованием проекта led3.dsn из папки proj6.

Задание 2. Разработайте программу работы МКУ, схема которого приведена на рис.2. После запуска программы светодиод 5 раз загорается на 0,5 секунды и гаснет на 2 секунды. После этого светодиод горит постоянно. Тактовая частота МК равна 4 Мгц. Цикл повторения организуйте с помощью оператора  while(  ). Не забудьте зациклить программу после окончания мигания светодиода. Программу назовите led5.c. Создайте новый проект pr8 и папку proj8. Проверьте работу программы с помощью Proteus Viewer с использованием проекта led3.dsn из папки proj6.

3.6. Программирование и исследование процедуры опроса переключателя

Рассмотрим теперь, как производится на Си опрос контактов переключателя. Пусть в схеме МКУ на рис. 1 управление светодиодом VD1 производится от переключателя (кнопки) SB1 по следующему алгоритму. Когда контакт SB1 замкнут, светодиод VD1 горит, когда SB1 разомкнут, VD1 не горит. Программа может иметь следующий вид.

/***********************************************************

sw_led1.c – программа управления светодиодом VD1 от переключателя SB1

***************************************************************/

#include<p18f242.h>

#pragma  config  WDT = OFF, OSC = HS

void main(void)

{

PORTB = 0;                  // очистить регистр данных порта В

PORTC = 0;                  // очистить регистр данных порта С