Рассмотрим управление светодиодом типа АЛ102А при помощи микроконтроллера pic12f675.
Исходные данныеИспользовался компилятор
SDCC (ОС FreeBSD); программатор
EXTRA-PIC; программа для прошивки -
IC-Prog (ОС WinXP). Схема собиралась на беспаечной макетной плате.
Даташит на микроконтроллер pic12f675Радиокомпоненты и приборы- микроконтроллер pic12f675
- резистор сопротивлением 1 кОм на мощность 0.25 Вт
- светодиод типа АЛ102А
- источник стабилизированного питания напряжением +5 В
Электрическая принципиальная схемаИсходный код прошивки на языке CФайл pic.c, компилятор SDCC
#include <pic12f675.h>
//Функция задержки
void delay_ms(long ms){
long i;
while(ms--)
for(i=0; i < 330; i++)
;
}
main(){
OSCCAL = 0x80; //Установить внутренний осциллятор на среднюю частоту
TRISIO = 0b11111011; //Установить GPIO2 на выход, остальные - на вход
GPIO = 0b00000000; //На всех GPIO установить логический ноль
CMCON = 0b00000111; //Отключить компаратор
ADCON0 = 0b00000000; //Отключить АЦП
ANSEL = 0b00000000; //Отключить аналоговые входы, все ножки установить как цифровые входы-выходы
while(1){
GPIO2 = 1; //Отправили на пин GP2 логическую 1
delay_ms(50); //Подождали
GPIO2 = 0; //Отправили логический 0
delay_ms(50);
GPIO2 = 1;
delay_ms(1000);
GPIO2 = 0;
delay_ms(250);
}
}
Команда компиляцииДля FreeBSD:
sdcc --use-non-free -mpic14 -p12f675 -o /home/ /home/pic.c
Примечание. В последней на момент написания статьи версии SDCC опция --use-non-free убрана, команда компиляции будет выглядеть так: sdcc -mpic14 -p12f675 -o /home/ /home/pic.c
Алгоритм прошивкиПрограмматор подключить к COM-порту компьютера при помощи прямого COM-COM кабеля (лучше сделать такой кабель самому), поместить МК в соответствующее гнездо программатора EXTRA-PIC, запустить программу-программатор IC-Prog и прочитать МК. В последней ячейке памяти находится шестнадцатеричная калибровочная константа. Её нужно запомнить. Открыть скомпилированную прошивку (файл *.hex) и при помощи шестнадцатеричного редактора программы-программатора отредактировать последнюю ячейку прошивки, внеся туда прочитанную ранее калибровочную константу. Выбрать: осциллятор IntOSC GP4, Bandgap - Default. Биты конфигурации: выключить все, включить только PWRT. Прошить МК.