/********************************************************************* * * * Filename: led_flash.c * * Date: 30/12/2012 * * Version: 1.0 * * Author: Goran Ljubic * * * ********************************************************************** * * * Architecture: Microchip PIC Enhanced Mid-range Core * * Processor: 16F1827 * * Compiler: MPLAB XC8 v1.12 (Free mode) * * * ********************************************************************** * * * Description: Primer 2 * * * * LED diode od D1 do D8 se ukljucuju i iskljucuju jedna za drugom * * sa vremenskim razmakom od 300ms. Nakon toga redosled ukljucenja * * i iskljucenja se menja. * * * *********************************************************************/ #include #define _XTAL_FREQ 4000000 // frekvencija internog oscilatora. /****************************************************************************************************************************** * CONFIGURATION WORDS * Watchdog timer is disabled, Internal RC oscillator I/O function on CLKIN pin, MCLR/VPP pin function is digital input, * Program memory code protection is disbled, Brown-out Reset disabled, Power-up timer enabled, * Data memory code protection is enabled, CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin, * Internal/External Switchover mode is disabled, Fail-Safe Clock Monitor is disabled, * 000h to FFFh flash memory write protected, 4x PLL disabled, Stack Overflow or Underflow will not cause a Reset, * High-voltage on MCLR/VPP must be used for programming * * ******************************************************************************************************************************/ __CONFIG(WDTE_OFF & FOSC_INTOSC & MCLRE_OFF & CP_OFF & BOREN_OFF & PWRTE_ON & CPD_ON & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF); __CONFIG(WRT_ALL & PLLEN_OFF & STVREN_OFF & LVP_OFF); unsigned char i; // brojacka promenljiva bit DIR; // bit koji nam govori u kom smeru ide ukljucenje i iskljucenje LED dioda /****************************** * MAIN PROGRAM * ******************************/ void main(void) { /****************************** * INITIALISATION * ******************************/ OSCCON = 0b01101010; // 4x PLL is disabled, 4 MHz HF Internal oscillator block TRISA = 0b11111111; // Svi pinovi porta A konfigurisani kao ulazni TRISB = 0; // Svi pinovi porta B konfigurisani kao izlazni LATB = 0x01; // pocetno ukljucena samo LED1 DIR = 1; // postavljen pocetan smer kretanja /****************************** * MAIN LOOP * ******************************/ for (;;) // beskonacna petlja { for(i=0;i<7;i++) // sledecih 7 LED cemo redom ukljucivati i iskljucivati { __delay_ms(300); // sa vremenskim razmakom od 300ms if(DIR) // U zavisnosti od trenutnog smera { LATB <<= 1; // stanje na izlaznim pinovima PORT-a B se pomera za jedno mesto ulevo } else // ili { LATB >>= 1; // udesno } } DIR = ~DIR; // Po završetku jednog ciklusa smer se menja } }