'----------------------------------------------------------------
symbol T=PORTA.0 'Taster
symbol S1=PORTA.1 'Taster 1
symbol S2=PORTA.2 'Taster 2
symbol LED1=PORTB.0 ' Svetlosna indikacija 1
symbol LED2=PORTB.1 'Svetlosna indikacija 2
'------------------Promenljive-----------------------------------
'----------------Inicijalizacija----------------------------------
TRISA=$FF 'Svi portovi A su ulazni
TRISB=$00 'Svi portovi B su izlazni
'----------------Program------------------------------------------
Pocetak:
if T = 0 and s1 = 0 and s2 = 0 then Greska
if T = 0 and s1 = 0 and s2 = 1 then Greska
if T = 0 and s1 = 1 and s2 = 1 then Greska
if T = 1 and s1 = 1 and s2 = 1 then Greska1
if T = 1 and s1 = 1 and s2 = 0 then greska1
if T = 1 and s1 = 0 and s2 = 0 then Greska1
goto pocetak
'---------------Greska--------------------------------------------
Greska:
high led1
high led2
goto pocetak
'----------------Greska1-----------------------------------------
Greska1:
high led1
LOW led2
goto pocetak
'-------------------Uredu-------------------------------------
Uredu:
Low led1
low led2
goto pocetak
end
'----------------------------------------------------------------
symbol T=PORTA.0 'Taster
symbol S1=PORTA.1 'Taster 1
symbol S2=PORTA.2 'Taster 2
symbol LED1=PORTB.0 ' Svetlosna indikacija 1
symbol LED2=PORTB.1 'Svetlosna indikacija 2
'------------------Promenljive-----------------------------------
'----------------Inicijalizacija----------------------------------
TRISA=$FF 'Svi portovi A su ulazni
TRISB=$00 'Svi portovi B su izlazni
'----------------Program------------------------------------------
Pocetak:
if T = 0 and s1 = 0 and s2 = 0 then Greska
if T = 0 and s1 = 0 and s2 = 1 then Greska
if T = 0 and s1 = 1 and s2 = 1 then Greska
if T = 1 and s1 = 1 and s2 = 1 then Uredu
if T = 1 and s1 = 1 and s2 = 0 then greska1
if T = 1 and s1 = 0 and s2 = 0 then Greska1
goto pocetak
'---------------Greska--------------------------------------------
Greska:
high led1
high led2
goto pocetak
'----------------Greska1-----------------------------------------
Greska1:
high led1
LOW led2
goto pocetak
'-------------------Uredu-------------------------------------
Uredu:
Low led1
low led2
goto pocetak
end
if T = 0 and s1 = 0 and s2 = 0 then Greska
if T = 0 and s1 = 0 and s2 = 1 then Greska
if T = 0 and s1 = 1 and s2 = 1 then Greska
if T = 1 and s1 = 1 and s2 = 1 then Uredu
if T = 1 and s1 = 1 and s2 = 0 then greska1
if T = 1 and s1 = 0 and s2 = 0 then Greska1
Pretpostavljam da želiš skočiti na navedene labele. Gdje ti je naredba skoka?
Da, treba da skoci do odredjene labele u kojoj izvrsi neku radnju, odnosno upali LED, koje ce biti upaljene dok se stanje u labeli "program" ne promeni gde bi onda skocio u 2 labelu u kojoj bi upalio neku drugu (ili istu ili obe) LED.
Znaci, program bi trebalo da stalno proverava stanje u labeli program (kombinaciju stisnutih tastera) i na osnovu njega menja kombinaciju upaljenih LED dioda,trenutnim menjanjem kombinacije stisnutih tastera menja se i kombinacija LED dioda koje sijaju.
symbol T=PORTA.0 'Taster
symbol S1=PORTA.1 'Taster 1
symbol S2=PORTA.2 'Taster 2
symbol LED1=PORTB.0 ' Svetlosna indikacija 1
symbol LED2=PORTB.1 'Svetlosna indikacija 2
'------------------Promenljive-----------------------------------
'----------------Inicijalizacija----------------------------------
TRISA=$FF 'Svi portovi A su ulazni
TRISB=$00 'Svi portovi B su izlazni
'----------------Program------------------------------------------
Pocetak:
if T = 0 and s1 = 0 and s2 = 0 then goto Greska
if T = 0 and s1 = 0 and s2 = 1 Then goto Greska
if T = 0 and s1 = 1 and s2 = 1 Then goto Greska
if T = 1 and s1 = 1 and s2 = 1 Then goto Uredu
if T = 1 and s1 = 1 and s2 = 0 Then goto greska1
if T = 1 and s1 = 0 and s2 = 0 Then goto Greska1
goto pocetak
'---------------Greska--------------------------------------------
Greska:
high led1
high led2
goto pocetak
'----------------Greska1-----------------------------------------
Greska1:
high led1
LOW led2
goto pocetak
'-------------------Uredu-------------------------------------
Uredu:
Low led1
low led2
goto pocetak
end
symbol T=PORTA.0 'Taster
symbol S1=PORTA.1 'Taster 1
symbol S2=PORTA.2 'Taster 2
symbol LED1=PORTB.0 ' Svetlosna indikacija 1
symbol LED2=PORTB.1 'Svetlosna indikacija 2
'------------------Promenljive-----------------------------------
'----------------Inicijalizacija----------------------------------
TRISA=$FF 'Svi portovi A su ulazni
TRISB=$00 'Svi portovi B su izlazni
'----------------Program------------------------------------------
Pocetak:
if T = 0 and s1 = 0 and s2 = 0 then gosub Greska
pause 10
if T = 0 and s1 = 0 and s2 = 1 Then gosub Greska
pause 10
if T = 0 and s1 = 1 and s2 = 1 Then gosub Greska
pause 10
if T = 1 and s1 = 1 and s2 = 1 Then gosub Uredu
pause 10
if T = 1 and s1 = 1 and s2 = 0 Then gosub greska1
pause 10
if T = 1 and s1 = 0 and s2 = 0 Then gosub Greska1
pause 10
goto pocetak
'---------------Greska--------------------------------------------
Greska:
high led1
high led2
return
'----------------Greska1-----------------------------------------
Greska1:
high led1
LOW led2
return
'-------------------Uredu-------------------------------------
Uredu:
Low led1
low led2
return
end
treba da skoci do odredjene labele u kojoj izvrsi neku radnju, odnosno upali LED
uspješno skače, izvršava neku radnju, te pali LED
koje ce biti upaljene dok se stanje u labeli "program" ne promeni
i tako i je
gde bi onda skocio u 2 labelu u kojoj bi upalio neku drugu (ili istu ili obe) LED.
i ovo radi
Znaci, program bi trebalo da stalno proverava stanje u labeli program (kombinaciju stisnutih tastera)
provjerava
i na osnovu njega menja kombinaciju upaljenih LED dioda
mijenja
trenutnim menjanjem kombinacije stisnutih tastera menja se i kombinacija LED dioda koje sijaju.
i doista se mijenja
Ma da, ali ipak ne radi kako treba ocigledno mu jos ponesto nedostaje?
Kao što vidiš program radi upravo onako kako si ga napisao i opisao, tako da ćeš se morati malo više potruditi da svoje misli pretočiš u slova na tipkovnici.
@Branez: gledano s logičke strane, te strane nekog tko bi upotrebljavao takav uređaj, tvoj program radi identično kao njegov (namjerno?). Pause 10 nema nikakvog utjecaja osim da radi primitivni debounce. Opet nema objašnjenja…
symbol T=PORTA.0 'Taster
symbol S1=PORTA.1 'Taster 1
symbol S2=PORTA.2 'Taster 2
symbol LED1=PORTB.0 ' Svetlosna indikacija 1
symbol LED2=PORTB.1 'Svetlosna indikacija 2
'------------------Promenljive-----------------------------------
'----------------Inicijalizacija----------------------------------
TRISA=$FF 'Svi portovi A su ulazni
TRISB=$00 'Svi portovi B su izlazni
'----------------Program------------------------------------------
Pocetak:
if T = 1 and s1 = 0 and s2 = 0 then gosub Greska
pause 10
if T = 1 and s1 = 0 and s2 = 1 Then gosub Greska
pause 10
if T = 1 and s1 = 1 and s2 = 0 Then gosub Greska
pause 10
'------------------------------------------------------------------
if T = 0 and s1 = 0 and s2 = 0 Then gosub greska1
pause 10
if T = 0 and s1 = 0 and s2 = 1 Then gosub greska1
pause 10
if T = 0 and s1 = 1 and s2 = 0 Then gosub greska1
pause 10
'--------------------------------------------------------------------
if T = 0 and s1 = 1 and s2 = 1 Then gosub Uredu
pause 10
if T = 1 and s1 = 1 and s2 = 1 Then gosub Uredu
pause 10
goto pocetak
'---------------Greska--------------------------------------------
Greska:
high led1
high led2
return
'----------------Greska1-----------------------------------------
Greska1:
high led1
LOW led2
return
'-------------------Uredu-------------------------------------
Uredu:
Low led1
low led2
return
end
Help wrote:CASE statements, in some cases, are easier to use than multiple IF.. THENs. These statements are used to compare a variable with different values or ranges of values, and take action based on the value.
The variable used in all of the comparisons is specified in the SELECT CASE statement. Each CASE is followed by the statements to be executed if the CASE is true. IS may be used to specify a comparison other than equal to. If none of the CASEs are true, the statements under the optional CASE ELSE statement are executed. An END SELECT closes the SELECT CASE.
symbol T=PORTA.0 'Taster
symbol S1=PORTA.1 'Taster 1
symbol S2=PORTA.2 'Taster 2
symbol LED1=PORTB.0 ' Svetlosna indikacija 1
symbol LED2=PORTB.1 'Svetlosna indikacija 2
'------------------Promenljive-----------------------------------
'----------------Inicijalizacija----------------------------------
TRISA=$FF 'Svi portovi A su ulazni
TRISB=$00 'Svi portovi B su izlazni
'----------------Program------------------------------------------
Pocetak:
if T = 1 and s1 = 0 and s2 = 0 then gosub Greska
pause 10
if T = 1 and s1 = 0 and s2 = 1 Then gosub Greska
pause 10
if T = 1 and s1 = 1 and s2 = 0 Then gosub Greska
pause 10
'------------------------------------------------------------------
if T = 0 and s1 = 0 and s2 = 0 Then gosub greska1
pause 10
if T = 0 and s1 = 0 and s2 = 1 Then gosub greska1
pause 10
if T = 0 and s1 = 1 and s2 = 0 Then gosub greska1
pause 10
'--------------------------------------------------------------------
if T = 0 and s1 = 1 and s2 = 1 Then gosub Uredu
pause 10
if T = 1 and s1 = 1 and s2 = 1 Then gosub Uredu
pause 10
goto pocetak
'---------------Greska--------------------------------------------
Greska:
high led1
high led2
return
'----------------Greska1-----------------------------------------
Greska1:
high led1
LOW led2
goto uslovi
'-------------------Uredu----------------------------------------
Uredu:
Low led1
low led2
return
'-----------------Uslovi------------------------------------------
Uslovi:
if T = 0 and s1 = 1 and s2 = 1 Then goto Uredu
pause 10
if T = 1 and s1 = 1 and s2 = 1 Then goto Uredu
pause 10
goto uslovi
end
Imam problema sa ispisivanjem na display, inace radi se o 16F877A i WINSTAR WH1602B-TMI-ET0...Ili sam pogresio sa kodom i shemom koji su iz knjige od V. Milanovica ili je problem u disp?
'Program demonstrira rad sa LCD displejom 16F877A
'koji je prikljucen na port D
DEFINE LCD_DREG PORTD 'I/O port na kome se nalazi LCD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2 'Register select pin
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3 'Enable pin
DEFINE LCD_BITS 4 '4-bitni data bus
DEFINE LCD_LINES 2 'LCD ima dva reda karaktera
B0 Var byte 'Promenljiva koju koristi BUTTON
Symbol T1 = PORTA.2 'Taster T1
Symbol T2 = PORTA.1 'Taster T2
Symbol T3 = PORTA.0 'Taster T3
pause 1000
Lcdout $fe, 1, " Primer LCD" 'Ispisi u prvom redu
Lcdout $fe, $C0, " programa " 'Ispisi u drugom redu
Pause 2000
Pocetak:
B0 = 0
button T1,0,255,0,B0,1,Tekst1
B0 = 0
button T2,0,255,0,B0,1,Tekst2
B0 = 0
button T3,0,255,0,B0,1,Tekst3
Goto pocetak
'--------Podprogram za prikaz prvog teksta-------
Tekst1:
Lcdout $fe, $C0, "Pritisnut T1"
Pause 2000
Return
'--------Podprogram za prikaz drugog teksta-------
Tekst2:
Lcdout $fe, $C0, "Pritisnut T2"
Pause 2000
Return
'--------Podprogram za prikaz treceg teksta-------
Tekst3:
Lcdout $fe, $C0, "Pritisnut T3"
Pause 2000
Return
End
'Program demonstrira rad sa LCD displejom 16F877A
'koji je prikljucen na port D
TRISD=$00
TRISA=$FF
DEFINE LCD_DREG PORTD 'I/O port na kome se nalazi LCD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2 'Register select pin
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3 'Enable pin
DEFINE LCD_BITS 4 '4-bitni data bus
DEFINE LCD_LINES 2 'LCD ima dva reda karakt
ADCON1=7
B0 Var byte 'Promenljiva koju koristi BUTTON
Symbol T1 = PORTA.2 'Taster T1
Symbol T2 = PORTA.1 'Taster T2
Symbol T3 = PORTA.0 'Taster T3
pause 1000
Lcdout $fe, 1, " Primer LCD" 'Ispisi u prvom redu
Lcdout $fe, $C0, " programa " 'Ispisi u drugom redu
Pause 2000
Pocetak:
B0 = 0
button T1,0,255,0,B0,1,Tekst1
B0 = 0
button T2,0,255,0,B0,1,Tekst2
B0 = 0
button T3,0,255,0,B0,1,Tekst3
Goto pocetak
'--------Podprogram za prikaz prvog teksta-------
Tekst1:
Lcdout $fe, $C0, "Pritisnut T1"
Pause 2000
Return
'--------Podprogram za prikaz drugog teksta-------
Tekst2:
Lcdout $fe, $C0, "Pritisnut T2"
Pause 2000
Return
'--------Podprogram za prikaz treceg teksta-------
Tekst3:
Lcdout $fe, $C0, "Pritisnut T3"
Pause 2000
Return
End
odlicen kurs.Mnogu mi pomogna vo vrska so karakterite za na LCD displej,sakam da ve prasam ne za LCD displej potocno za tastatura,kako da gi procitam ASCII znacite od nejze i da gi prikazam na LCD displej.Koj komandi da gi koristam za da gi procitam tie znaci?Ako moze pomos.
Sta li sam ovde zeznuo? Odbrijava mi ok ako tajmer podesim do 1 min, a ako ga podesim npr. od 01:05 odbroji prvo taj 1 min. i to kao 1 sec onda tih 5 sec?
pocetak:
portb=0
if set=0 then sec=sec+1
if sec>=60 then sec=0:minu=minu+1
if minu>=60 then minu=0
if start=0 then odbrojavanje
pause 20
lcdout $fe,1, "SET: ",Dec2 minu,":", Dec2 sec
pause 100
goto pocetak
Odbrojavanje:
portb=0
high led
for dminu=0 to minu
for dsec=0 to sec
if dsec=sec then sec=0
if dminu=minu then minu=0
lcdout $fe,$c0, "START: ",DEC2 dminu,":", DEC2 dsec
pause 1000
next dsec
next dminu
low led
goto pocetak