Kako se kocioni sistemi ubrzano razvijaju i elektronika (mikrokontroleri) se i tu potpuno integrisala odlucio sam da naucim vise o tome. Procitao sam nekoliko raznih tekstova o mcu i brzo sam ukapirao mnoge stvari. Poceo sam sa PIC-ovima i radim u MPLAB-u sa njihovim kompajlerima. Trenutno sve isprobavam u Proteusu ali uskoro mi stize originalan PICKIT 3.
Jos sam na pocetku i sada se upoznajem sa interrupt-ima. Uspesno sam odradio external interrupt samo pracenjem datasheet-a i objasnjenja naredbi.
Trenutno sam zapeo sa interrupt-om na promeni stanja. U proteusu kada se dogodi interrupt program se zaglavi u interrupt rutini. Za mcu sam izabrao 16f877a. Gde gresim, ne mogu da provalim.
PS: mrzelo me da pisem komentare jer ludim sto ne mogu da ga nateram da radi kako treba.
// PIC16F877A Configuration Bit Settings
// 'C' source line config statements
#include <xc.h>
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#define _XTAL_FREQ 8000000
#define LED0 RA0
#define LED1 RA1
void interrupt irs(){
INTCONbits.RBIF=0;
int i;
for(i=0;i<20;i++){
LED1=1;
}
}
void main(void){
INTCONbits.GIE=1;
INTCONbits.RBIE=1;
INTCONbits.RBIF=0;
ADCON1=0b11111111;
TRISA=0b00000000;
TRISB=0b11111111;
PORTA=0;
while(1){
LED0=1;
__delay_ms(200);
LED0=0;
__delay_ms(200);
}
}
[Ovu poruku je menjao mzm dana 16.03.2016. u 01:37 GMT+1]
[Ovu poruku je menjao mzm dana 16.03.2016. u 01:39 GMT+1]