Реклама ⓘ
Главная » Радиоуправление
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Машинка на ДУ управлении своими руками - МК это просто (PIC)!

В предыдущем уроке мы освоили работу с AVR-микроконтроллером ATmega8. Этот урок посвящен любителям PIC-микроконтроллеров, если вы работаете с AVR, то можете пропустить этот урок.

На этом уроке мы начнём осваивать работу с МК PIC16F876A. Номера выводов определим согласно даташиту. Номера выводов определим согласно даташиту. Будем подключать МК к программатору согласно этому рисунку

Для прошивки к микроконтроллеру подключают 5 линий:

  • Vpp – напряжения программирования;
  • Vdd – напряжение питания +5 вольт;
  • Vss – общая линия (минус питания);
  • PGD – линия данных;
  • PGC – линия тактирования.

Подпаиваем провода к панельке для проверки. Получается как-то так…

Ну а теперь эти страшные фьюзы… В нашем МК их нет! А вместо них директива __CONFIG.

  • FOSC – тактовый генератор;
  • WDTE – сторожевой таймер;
  • PWRTE – таймер включения питания;
  • CP – защита кода программы;
  • BOREN – сброс по снижению напряжения питания;
  • LVP – низкоуровневое программирование;
  • CPD – защита данных EEPROM;
  • WRT – защита от записи памяти программ.

Первая программа

Программу для нашего МК мы будем писать в MPLAB X IDE v1.95. Запускаем MPLAB X IDE. Создаём новый проект File->New Project…

Выбираем тип процессора, язык программирования, жмём далее. В результате мастер создания проектов, выдаёт шаблон кода:

#include < stdio.h >
#include < stdlib.h >

int main(int argc, char** argv)
{
    return (EXIT_SUCCESS);
}

Для проверки работоспособности МК напишем программу, которая будет изменять состояние седьмой линии порта PORTB каждые две секунды.

Указываем программе, с какой частотой работает тактовый генератор…

#define F_CPU 20000000UL  // Указываем тактовую частоту процессора

Выбираем порт PORTB, используем линию PB7 которая соединена с 28-ым выводом микросхемы.

Первым делом настроим эту линию на вывод. Для настройки направления данных используется регистр TRISx, где х – это имя порта. В нашем случае регистр будет называться TRISB.

PORTBbits.RB7 = 1; // Устанавливаем линию порта в высокое состояние

Собираем всё вместе.

#define _XTAL_FREQ 20000000 //Указываем тактовую частоту процессора

#include < htc.h > //Содержит в себе макроопределения, в частности __CONFIG
//#include < stdio.h >
//#include < stdlib.h >

#include < pic16f876a.h > //Файл определения имён регистров, портов...

__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF & BOREN_OFF & LVP_OFF & CPD_OFF & WRT_OFF);
int main(void) //Основная процедура программы...
{
    TRISBbits.TRISB7 = 0; //Настраиваем линию порта PORTB7 на вывод!

   while(1) //Бесконечный цикл
    {
     PORTBbits.RB7 = 1; //Устанавливаем линию порта в высокое состояние
     __delay_ms(2000);   //Ждём 2-е секунды

        PORTBbits.RB7 = 0;  //Устанавливаем линию порта в низкое состояние
	__delay_ms(2000);     //Ждём 2-е секунды
    }

    //return (EXIT_SUCCESS);
}

Чтобы установить вывод порта PB7 в низкое состояние, нам необходимо в бит PB7 порта PORTB записать ноль. Для этого применяют следующую конструкцию:

PORTBbits.RB7 = 0; //Устанавливаем линию порта в низкое состояние

Остаётся скомпилировать проект и прошить контроллер файлом с расширением .hex, который лежит по адресу диск:\<имя проекта>\dist\default\production.

Работоспособность программы проверяется вольтметром, подключённым к линии PB7 порта PORTB. Наблюдают изменение потенциала линии PB7 раз в две секунды.

Тема поддержки на форуме

Кто хочет идти "в ногу" с автором курса - создавайте свои дневники на форуме и выкладывайте что у вас получается и какие вопросы возникают при этом. 

Теги:

Опубликована: 0 2
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Tig #
Ништяк, а то десяток 873 валяется хоть выбрось, а следующую статью про STM32
Отредактирован 20.03.2015 18:15
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Квадрокоптер Syma X11
Квадрокоптер Syma X11
Печатная плата для усилителя "LM3886 + AD825" Raspberry Pi 2
вверх