Изучение основ работы с МК 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 нс, как указано в даташите.