Moderators: stojke369, pedja089, [eDo], trax
STOJIM: 'NAMIŠTANJE VRIMENA PAUZE
IF PORTD.1 = 0 THEN 'AKO JE PUC + PRITISNUT
PAUZA=PAUZA+1
PAUSE 200
ENDIF
IF PORTD.2 = 0 THEN 'AKO JE PUC - PRITISNUT
PAUZA=PAUZA-1
PAUSE 200
ENDIF
IF PORTD.3 = 0 THEN 'AKO JE ENTER PRITISNUT
PAUSE 500
GOTO RADIM
ENDIF
PAUSE 50
lcdout $FE,1
lcdout $FE,$80, "VRIJEME PAUZE...."
LCDOUT $FE,$C0, "SEC = ", DEC PAUZA
GOTO STOJIM
M VAR BYTE
V VAR BYTE
START: 'NAMIŠTANJE VRIMENA PAUZE
IF PORTD.1 = 0 THEN 'AKO JE PUC + PRITISNUT
POKRET=POKRET+1
PAUSE 400
ENDIF
IF POKRET => 5 THEN RADIM
PAUSE 400
lcdout $FE,1, "PRITISNI START"
LCDOUT $FE,$C0, "5 SEKUNDI ", DEC POKRET
GOTO START
RADIM:
lcdout $FE,1, "POKRECEM"
LCDOUT $FE,$C0, "STARTNI SLJED"
PAUSE 2000
hiGH porta.0
FOR M=0 to 30
lcdout $FE,1, "PUMPAM GORIVO"
LCDOUT $FE,$C0, "MALA BRZINA", DEC M
M=M+1
pause 1000
next M
LOW PORTA.0
GOTO VELIKA
VELIKA:
HIGH PORTA.1
FOR V=0 to 30
lcdout $FE,1, "ZARNICA ON"
LCDOUT $FE,$C0, "VELIKA BRZINA", DEC V
V=V+1
pause 1000
next V
LOW PORTA.1
END
clear
M VAR WORD
V VAR WORD
RM VAR WORD
RS VAR WORD
pokret var byte
STO VAR BYTE
trisd=%11111111
'======================================================
START:
IF PORTD.1 = 0 THEN 'AKO JE PRITISNUTA START TIPKA
POKRET=POKRET+1
PAUSE 400
IF PORTD.1=1 THEN 'AKO JE OTPUŠTENA START TIPKA UNUTAR 5 SEK
pokret=0
ENDIF
endif
IF POKRET => 5 THEN RADIM ' AKO JE START TIPKA DRŽANA DULJE OD 5 SEK
PAUSE 400
lcdout $FE,1, "PRITISNI START"
LCDOUT $FE,$C0, "5 SEKUNDI ", DEC2 POKRET
GOTO START
RADIM: ' POKRETANJE STARTNOG SLJEDA 1
lcdout $FE,1, "POKRECEM"
LCDOUT $FE,$C0, "STARTNI SLJED"
PAUSE 2000
hiGH porta.0
FOR M=0 to 5 STEP 1
lcdout $FE,1, "PUMPAM GORIVO"
LCDOUT $FE,$C0, "MALA BRZINA ", DEC2 M
pause 1000
next M
LOW PORTA.0
GOTO VELIKA
VELIKA: ' STARTNI SLJED 2
HIGH PORTA.1
FOR V=0 to 5 STEP 1
lcdout $FE,1, "ZARNICA ON"
LCDOUT $FE,$C0, "VELIKA BRZINA ", DEC2 V
pause 1000
next V
LOW PORTA.1
goto URADU
URADU: ' OVDJE POČIMA RAD
HIGH PORTA.2
FOR RS=0 TO 60 STEP 1
lcdout $FE,1, "RADIM ....."
LCDOUT $FE,$C0, "VRIME RADA:",DEC2 RM, ":", DEC2 RS
PAUSE 1000
GOSUB TSTOP
NEXT RS
IF RS>=59 THEN
RS=0
RM=RM+1
ENDIF
GOTO URADU
TERM:
LOW PORTA.2
HIGH PORTA.3
PAUSE 10000
TSTOP:
IF PORTD.0 = 0 THEN SS
PAUSE 50 'AKO JE PRITISNUTA START TIPKA
RETURN
SS:
lcdout $FE,1, "PRITISNI STOP"
LCDOUT $FE,$C0, "5 SEKUNDI ", DEC2 STO
IF PORTD.0 = 0 THEN 'AKO JE PRITISNUTA STOP TIPKA
STO=STO+1
PAUSE 400
GOTO SS
ENDIF
IF STO => 5 THEN TERM
PAUSE 5000
IF STO <5 THEN URADU
PAUSE 400
GOTO SS
pedja089 wrote:Ja koristim hardverski. A to sto si napisao sada svako implementira na neki svoj nacin.
Recimo generisi interapt svakih x ms, i u interaptu proveravaj stanje tastera, ako se nije promenilo zadnjih X puta promeni stanje neke promenljive, ako se zadrzalo jos y puta povecaj neku promenljivu koja ce da ubrza.
Broji:
nStanje=Senz
if nStanje < sStanje then broj=broj+1
if broj => brojZadati then 'ako je izbrojao zadati broj impulsa
low Rele
goto ---> izlaz iz ove petlje
endif
sStanje=nStanje
goto Broji
Return to Mikrokontroleri - PIC
Users browsing this forum: No registered users and 0 guests