[pic16f88] Этап 8. Новый МК. "Hello World" для pic16f88

Дмитрий Филатов
Изучение основ работы с МК pic12f675 можно считать завершённым. Перейдём к более мощному микроконтроллеру pic16f88 и по традиции рассмотрим управление светодиодом АЛ102А.

Информация
Даташит на микроконтроллер pic16f88
Прошивка компилировалась при помощи компилятора SDCC, для работы которого требуется gputils. Инструкция по установке того и другого здесь.

Рекомендую создать командный файл *.cmd (для Windows) со следующим содержанием:

Файл run.cmd

@echo off
sdcc -mpic14 -p16f88 -o c:\ c:\pic.c
@pause

Для прошивки использовался программатор EXTRAPIC и программа IC-Prog.

Радиокомпоненты и оборудование
- микроконтроллер pic16f88
- светодиод типа ал102а
- резистор сопротивлением 1 кОм на мощность рассеяния 0.5 Вт
- источник стабилизированного питания напряжением +5 В

Электрическая принципиальная схема
Исходный код прошивки на языке C
Файл pic.c, компилятор SDCC

#include <pic16f88.h>

//Задаём биты конфигурации, чтобы не настраивать их в программе-программаторе
__code char __at _CONFIG1 conf1 = _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO;
__code char __at _CONFIG2 conf2 = _IESO_OFF & _FCMEN_OFF;

//Функция задержки, в мкс. Один такт этого процессора при частоте 4 МГц совершается за 200 нс, согласно даташиту
void __delay_us(unsigned char t){
while(t--){
__asm
NOP
NOP
NOP
NOP
NOP
__endasm;
}
}

//Функция задержки в мс
void __delay_ms(unsigned char m){
while(m--){
__delay_us(1000);
}
}

main(){
OSCTUNE = 0b00000000; // Калиброванная частота
OSCCON = 0b01100100; // 4MHz
CCP1CON = 0b00000000; // Отключить модуль CCP
ANSEL = 0b00000000; // AN6:AN0 работают как цифровые I/O
ADCON1 = 0b00000000; // Отключить АЦП
CMCON = 0b00000111; // Отключить компаратор
TRISA = 0b00000000; // PORTA все как output
PORTA = 0b00000000; // Очистка PORTA (RA5:RA0)

while(1){
RA0 = 1;
__delay_ms(1000);
RA0 = 0;
__delay_ms(1000);
}
}

Необходимые пояснения
Чтобы каждый раз при прошивке микроконтроллера не выставлять биты конфигурации вручную в программе-программаторе, уместно жёстко прописать их в коде прошивки. Слова конфигурации размещаются в регистрах GONFIG1 и CONFIG2. Значения каждого бита подробно описаны в разделе 15.1 даташита. В заголовочном файле pic16f88.h компилятора SDCC определены макросы для указанных конфигурационных битов.

Функция задержки использует ассемблерную вставку, осуществляющую 5 холостых тактов. Один такт этого МК выполняется за 200 нс, как указано в даташите.
2013-12-04