/*
* Mehmet Bilgi
* Haziran 2021
*/
#include <stdint.h>
#define FAN1 PORTC.B0
#define FAN2 PORTC.B1
volatile uint8_t fanCalistir = 0;
/*
* Kesmeyi çalýþtýracak register ayarlarý
*/
void kesmeHazirla(void)
{
OPTION_REG.INTEDG = 0b1;
INTCON.INTE = 0b1; // RB0/INT kesmesi açýldý
INTCON.GIE = 0b1; // Genel kesmeler açýldý
}
/*
* MCU için ön ayarlar
*/
void mcuHazirla(void)
{
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
ADCON1 = 0x06; // Tüm portlar dijital
//76543210
TRISA = 0b00000000;
TRISB = 0b00000001; //RB0 giriþ
TRISC = 0b00000000; //RC0 ve RC1 çýkýþ
TRISD = 0b00000000;
TRISE = 0b00000000;
}
/*
* Ana fonksiyon
*/
void main(void)
{
kesmeHazirla();
mcuHazirla();
while(1)
{
if(fanCalistir == 0b1)
{
FAN1 = 0b1;
FAN2 = 0b1;
}
else
{
FAN1 = 0b0;
FAN2 = 0b0;
}
}
}
/*
* Kesme fonksiyonu
*/
void interrupt (void)
{
if(INTCON.INTF == 0b1)
{
//Yükselen kenarda fan çalýþacak, düþen kenarda kapatmasý isteniyor.
//Düþen kenarda kesme oluþturmasý için de alttaki satýr ilave edildi.
OPTION_REG.INTEDG ^= 0b1; // Yükselen kenarda ve düþen kenarda ayrý ayrý kesme yapmasý için
if(PORTB.B0 == 0b1)
{
fanCalistir = 0b1;
}
else
{
fanCalistir = 0b0;
}
INTCON.INTF = 0b0;
}
}
//****************************************************************************//