/* Avtor: Goriçek Tomislav*/ /* "astabilni multivibrator" */ #include /* vkljuŸi datoteko z konstantami za PIC*/ /* KONFIGURACUJSKI BAJT NA NASLOVU 0X2007 */ __CONFIG(_CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC); /* trenutno: _CP_OFF - izkljuŸena zaçŸita vpisanega programa pred kopiranjem _PWRTE_ON - vkljuŸen "power up" _WDT_OFF - izkljuŸen "watch dog timer" _XT_OSC - izbran kristalni osilator */ #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit)) static bit RA0 @ PORTBIT(PORTA,0); /* vhodni pin */ static bit RA1 @ PORTBIT(PORTA,1); /* vhodni pin */ static bit RA2 @ PORTBIT(PORTA,2); /* vhodni pin */ static bit RA3 @ PORTBIT(PORTA,3); /* vhodni pin */ unsigned pocasi; int stara_RA0,stara_RA1,stara_RA2,stara_RA3; int program,maks_program; Cakaj(unsigned pavza) { auto unsigned i; for(i = pavza ; --i ;) /* dolzina pavze */ { if (stara_RA0==0 && RA0==1 && (pocasi > 100)) pocasi=pocasi-pocasi/10; if (stara_RA1==0 && RA1==1 && (pocasi < 50000)) pocasi=pocasi+pocasi/10; if (stara_RA2==0 && RA2==1) program=program-1; if (program==0) program=maks_program; // program=1; if (stara_RA3==0 && RA3==1) { program=program+1; if(program > maks_program) program=1; // program=2; } stara_RA0=RA0; stara_RA1=RA1; stara_RA2=RA2; stara_RA3=RA3; } }/* end cakaj */ main(void) /* glavni program */ { TRISB = 0; /* vsi pini na PORTB so izhod */ /* vsi pini na PORTA so vhodi */ PORTA=0; /* ZbrisiPORTA */ PORTB=0; /* ZbrisiPORTB */ pocasi =10000; program=1; maks_program=3; stara_RA0=RA0; stara_RA1=RA1; stara_RA2=RA2; stara_RA3=RA3; for (;;) /* neskoncna zanka */ { if (program==1) { PORTB = 0x01; /* vklopi 00000001 */ Cakaj(pocasi); /* pavza */ PORTB = 0x02; /* vklopi 00000010 */ Cakaj(pocasi); /* pavza */ PORTB = 0x04; /* vklopi 00000100 */ Cakaj(pocasi); /* pavza */ PORTB = 0x08; /* vklopi 0001000 */ Cakaj(pocasi); /* pavza */ PORTB = 0x10; /* vklopi 00010000 */ Cakaj(pocasi); /* pavza */ PORTB = 0x20; /* vklopi 00000010 */ Cakaj(pocasi); /* pavza */ PORTB = 0x40; /* vklopi 00000001 */ Cakaj(pocasi); /* pavza */ PORTB = 0x80; /* vklopi 00000010 */ Cakaj(pocasi); /* pavza */ PORTB = 0x40; /* vklopi 00000001 */ Cakaj(pocasi); /* pavza */ PORTB = 0x20; /* vklopi 00000010 */ Cakaj(pocasi); /* pavza */ PORTB = 0x10; /* vklopi 00000001 */ Cakaj(pocasi); /* pavza */ PORTB = 0x08; /* vklopi 00000010 */ Cakaj(pocasi); /* pavza */ PORTB = 0x04; /* vklopi 00000001 */ Cakaj(pocasi); /* pavza */ PORTB = 0x02; /* vklopi 00000010 */ Cakaj(pocasi); /* pavza */ PORTB = 0x01; /* vklopi 00000001 */ Cakaj(pocasi); /* pavza */ } if (program==2) { PORTB = 0b10000001; Cakaj(pocasi); PORTB = 0b01000010; Cakaj(pocasi); PORTB = 0b00100100; Cakaj(pocasi); PORTB = 0b00011000; Cakaj(pocasi); PORTB = 0b00100100; Cakaj(pocasi); PORTB = 0b01000010; Cakaj(pocasi); PORTB = 0b10000001; Cakaj(pocasi); } if (program==3) { PORTB = 0b10000001; Cakaj(pocasi); PORTB = 0b01000010; Cakaj(pocasi); PORTB = 0b00100100; Cakaj(pocasi); PORTB = 0b00011000; Cakaj(pocasi); PORTB = 0b00100100; Cakaj(pocasi); PORTB = 0b01000010; Cakaj(pocasi); PORTB = 0b10000001; Cakaj(pocasi); PORTB = 0b00100100; Cakaj(pocasi); PORTB = 0b01000010; Cakaj(pocasi); PORTB = 0b10000001; Cakaj(pocasi); } }/* end for */ }/* end main */