Примечание: программы откомпилированы с помощью Hi-tech C compiler.
Задача: Заставить светодиод мигать с заданной частотой.
Исходный материал: PIC16f628a Все предельно просто, здесь используется стандартная схема подключения светодиода. Переходим непосредственно к коду.
Для начала нам необходимо дать понять компилятору какую частоту тактирования мы будем использовать. Делается это с помощью команды: #define _XTAL_FREQ 4000000 Таким образом мы задали частоту 4 МГц.
Маленькое отступление: Мы будем использовать кварц с частотой 4МГц, которая дальше делится делителем на 4. Компилятор Hi-tech с помощью оператора _delay(n) может выполнять максимум 197120 циклов. Следовательно, в нашем случае максимальное время макроса __delay_ms(n) = 197.12 мс .
Дальше выставим биты конфигурации:
__CONFIG(MCLREN & UNPROTECT & WDTDIS) MCLREN — включаем возможность сброса программы.
UNPROTECT - отключаем защиту кода.
WDTDIS - выключаем сторожевой таймер.
Дальнейший код разжевывать смысла нету, поэтому выкладываю все целиком:
#include #define _XTAL_FREQ 4000000 // Частота 4 МГц // Config: ext reset, no code protect, no watchdog __CONFIG(MCLREN & UNPROTECT & WDTDIS); unsigned char i; // Переменная для счетчика void main() { TRISB = 0x00; // Порт В на выход PORTB = 0x00; // Выключаем все выходы порта В for (;;) { // Запускаем бесконечный цикл RB0 = 0; __delay_ms(100); // Пауза 200 мс __delay_ms(100); RB0 = 1; // Цикл паузы 800 мс for ( i = 0; i < 8; i++) { __delay_ms(100); } } }
Источник: http://diymicro.ru/pic-mk-eksperiment-1-migaem-svetodiodom.html |