//************************************************* // PROGRAMMA cancello scorrevole: S E M P L I F I C A T O // vedi appunti word // collegamenti: // RB0 FCC Fine Corsa Chiusura // RB1 FCA // RB2 B1 Barriera Fotocellula 1 // RB3 B2 // RB4 PA Pulsante Apertura // RB5 PC Pulsante Chiusura // RB6 PS Pulsante Stop // RC0 RLA Relay Apertura // RC1 RLC Relay Chiusura // RC2 L1 Lampeggiante (abilitazione) // modulo: main.c // picmicro: PIC16F876A // clock: 20MHz // autore: Battilana Lino // data: 17/07/2012 // ************************************************* #define XTAL_FREQ 20MHZ #include __CONFIG (HS & WDTDIS & PWRTEN & BORDIS & LVPDIS & DUNPROT & WRTEN & DEBUGDIS & UNPROTECT); #include "delay.c" #define FCC RB0 //Definizione della costante FCC #define FCA RB1 #define B1 RB2 #define B2 RB3 #define PA RB4 #define PC RB5 #define RLA RC0 #define RLC RC1 #define L1 RC2 int stato=0; //variabile di tipo int (valor max = 65535) int i; void main() { TRISA=0b00000000; TRISB=0b11111111; TRISC=0b00000000; PORTC=0b00000000; //Relays Apertura/Chiusura e Lampeggiante SPENTI while(1) { if(PA==0||stato==1) // SE PA č premuto, allora .... aprirņ il cancello { stato=1; if(FCA==0) { L1=1; //accendo il lampeggiante L1 for(i=0;i<8;i++) DelayMs(250); RLA=1; } else { stato=3; PORTC=0; } } if(PC==0||stato==2) { stato=2; if(FCC==0) { L1=1; //accendo il lampeggiante L1 for(i=0;i<8;i++) DelayMs(250); RLC=1; if(B1==1||B2==1) { PORTC=0; stato=1; } } else { stato=0; PORTC=0; } } if(stato==3) { for(i=0;i<16;i++) //ritardo di "30" sec; da risolvere con interrupt DelayMs(250); stato=2; } } // fine del ciclo while } // fine della funzione main // NB Le impostazioni dei contatti NC (Normal 0, Pressed 1) NON VENGONO MEMORIZZATE nel progetto di SIMULATOR !!!!