@duuka97 To je definitivno C kod (kao što Miki reče, pisali ste C kod u C++).
@samuki
Jedno od pojednostavljenih rešenja samuki-jevog problema je ovaj (nisam testirao, pisano je napamet):
Može se koristiti XC8 kompajler.
@samuki
Jedno od pojednostavljenih rešenja samuki-jevog problema je ovaj (nisam testirao, pisano je napamet):
Može se koristiti XC8 kompajler.
Code:
#include "htc.h" // Zameniti " znakovima manje-veće
#include "delay.h"
#define ULAZNI_PIN_TRIS TRISB0
#define ULAZNI_PIN RB0
#define RELE_1_TRIS TRISB1
#define RELE_1_IO PORTB1
#define RELE_2_TRIS TRISB2
#define RELE_2_IO PORTB2
bit FlipFlopFlag;
bit Debounce;
void main(void)
{
RELE_1_TRIS = 0; // Podesavamo da je RELE 1 pin IZLAZNI
RELE_2_TRIS = 0; // Podesavamo da je RELE 2 pin IZLAZNI
ULAZNI_PIN_TRIS = 1; // Podesavamo da ulazni pin bude ulazni pin
FlipFlopFlag = 0;
while(1) ////////////////////// GLAVNA PETLJA PROGRAMA
{
DelayMs(10); // Cekamo 10mS, jer nema razloga da nam se petlja vrti suvise brzo, dobijamo neku vrstu filtra za digitalni ulaz
if(ULAZNI_PIN == 0) // Ako detektuje daljinski zahtev, podrazumeva se da je aktivnno stanje na nuli, bolja imunost na smetnje
{
if(Debounce == 1) // Da sprecimo lazna okidanja
{
Debounce = 0;
if(FlipFlopFlag == 1)
{
RELE_1_IO = 1;
DelayS(1); // Sacekaj 1 sekundu
}
else if(FlipFlopFlag == 0)
{
RELE_2_IO = 1;
DelayS(1); // Sacekaj 1 sekundu
}
RELE_1_IO = 0; // Iskljuci izlaz 1
RELE_2_IO = 0; // Iskljuci izlaz 2
FlipFlopFlag ^= 1; // ako je 1 prelazi u 0, ako je 0 prelazi u 1 i tako u krug
}
}
else
{
Debounce = 1;
}
}
}