

http://www.postimage.org/image.php?v=Pqb9ZwS" onclick="window.open(this.href);return false;
http://www.postimage.org/image.php?v=Pqb9UxA" onclick="window.open(this.href);return false;
jel valja šta shema, il sam potpuno fulao?


Moderators: pedja089, stojke369, [eDo], trax
pedja089 wrote:evo kod ovog tajmeraCode: Select all
trisb=0 trisa=%00011101 portb=0 S VAR WORD SZ var word Br0 var byte Br1 var byte Br2 var byte t var byte C var bit symbol Rele = porta.1 symbol Pr = porta.4 symbol Start= porta.3 symbol Sttop= porta.2 rele=0 read 0,sz.highbyte read 1,sz.lowbyte if sz>999 or sz=0 then sz=220 c=0 Pocetak: if pr=1 then if start=0 then c=1 if sttop=0 then c=0 if S>0 and c=1 then rele = 1 endif if S=0 or c=0 then rele =0 c=0 s=sz endif if c=1 then S=S-1 goto disp endif goto disp1 '<<PR=0>>---postavljkanje vrednosti--------------------------------------------------------------- else rele=0 'smanjivanje if sttop=0 AND S>1 then S=S-1 goto Disp1 endif 'povecavanje if start=0 and S <999 then S=S+1 goto Disp1 ENDIF sz=s goto disp1 endif Disp: 'prikazivanje merene vrednosti i traje 1S br2=S DIG 2 br1=S dig 1 br0=S dig 0 for t=0 to 99 portb= br2+ 32 pause 3 portb= br1+64 pause 4 portb= br0+ 128 pause 3 next t goto pocetak Disp1: 'prikazivanje iz i traje 100mS br2=S DIG 2 br1=S dig 1 br0=S dig 0 for t=0 to 10 portb= br2+ 32 pause 3 portb= br1+64 pause 4 portb= br0+ 128 pause 3 next t goto pocetak end
Code: Select all
trisb=0
trisa=%00011101
portb=0
KONBROJ var word
BROJ VAR WORD
broj0 var byte
broj1 var byte
broj2 var byte
broj3 Var byte
i var byte
C var bit
symbol Rele = porta.1
symbol Pr = porta.4
symbol Start= porta.3
symbol Sttop= porta.2
rele=0
read 0,KONBROJ.highbyte
read 1,KONBROJ.lowbyte
if KONBROJ>9999 or KONBROJ=0 then KONBROJ=480
c=0
Pocetak:
if pr=1 then
if start=0 then c=1
if sttop=0 then c=0
if BROJ>0 and c=1 then
rele = 1
endif
if bROJ=0 or c=0 then
rele =0
c=0
BROJ=KONBROJ
endif
if c=1 then
BROJ=BROJ-1
goto disp
endif
goto disp1
'<<PR=0>>---postavljkanje vrednosti---------------------------------------------------------------
else
rele=0
'smanjivanje
if sttop=0 AND BROJ>1 then
BROJ=BROJ-1
goto Disp1
endif
'povecavanje
if start=0 and BROJ <9999 then
BROJ=BROJ+1
goto Disp1
ENDIF
KONBROJ=BROJ
goto disp1
endif
Disp: 'prikazivanje merene vrednosti i traje 1S
broj3=BROJ dig 3
broj2=BROJ DIG 2
broj1=BROJ dig 1
broj0=BROJ dig 0
for i=0 to 70
portb=broj3+ 16
pause 4
portb= broj2+ 32
pause 3
portb= broj1+64
pause 4
portb= broj0+ 128
pause 3
next i
goto pocetak
Disp1: 'prikazivanje iz i traje 100mS
broj3=BROJ dig 3
broj2=BROJ DIG 2
broj1=BROJ dig 1
broj0=BROJ dig 0
for i=0 to 1
portb=broj3+ 16
pause 4
portb=broj2+ 32
pause 3
portb=broj1+64
pause 4
portb=broj0+ 128
pause 3
next i
goto pocetak
end
Code: Select all
if c=1 then
BROJ=BROJ-1
if broj=5960 then broj=broj-1
if broj=5799 then broj=5859
if broj=5860 then broj=broj-1
if broj=5699 then broj=5759
if broj=5760 then broj=broj-1
if broj =5599 then broj=5659
if broj=5660 then broj=broj-1
if broj=5499 then broj=5559
if broj=5560 then broj=broj-1
if broj=5399 then broj=5459
if broj=5460 then broj=broj-1
if broj=5299 then broj=5359
if broj=5360 then broj=broj-1
if broj =5199 then broj=5259
if broj=5260then broj=broj-1
if broj=5199 then broj=5159
if broj=5160 then broj=broj-1
if broj=5099 then broj=5059
if broj=5060 then broj=broj-1
if broj=4999 then broj=4959
if broj=4960 then broj=broj-1
if broj =4899 then broj=4859
if broj=4860 then broj=broj-1
if broj=4799 then broj=4759
if broj=4760 then broj=broj-1
if broj=4699 then broj=4659
if broj=4660 then broj=broj-1
if broj=4599 then broj=4559
if broj=4560 then broj=broj-1
if broj =4499 then broj=4459
if broj=4460 then broj=broj-1
if broj=4399 then broj=4359
if broj=4360 then broj=broj-1
if broj=4299 then broj=4259
if broj=4260 then broj=broj-1
if broj=4199 then broj=4159
if broj=4160 then broj=broj-1
if broj =4099 then broj=4059
if broj=4060 then broj=broj-1
if broj=3999 then broj=3959
if broj=3960 then broj=broj-1
if broj=3899 then broj=3859
if broj=3860 then broj=broj-1
if broj=3799 then broj=3759
if broj=3760 then broj=broj-1
if broj =3699 then broj=3659
if broj=3660 then broj=broj-1
if broj=3599 then broj=3559
if broj=3560 then broj=broj-1
if broj=3499 then broj=3459
if broj=3460 then broj=broj-1
if broj=3399 then broj=3359
if broj=3360 then broj=broj-1
if broj=3299 then broj=3259
if broj=3260 then broj=broj-1
if broj =3199 then broj=3159
if broj=3160 then broj=broj-1
if broj=3099 then broj=3059
if broj=3060 then broj=broj-1
if broj=2999 then broj=2959
if broj=2960 then broj=broj-1
if broj=2899 then broj=2859
if broj=2860 then broj=broj-1
if broj =2799 then broj=2759
if broj=2760 then broj=broj-1
if broj=2699 then broj=2659
if broj=2660 then broj=broj-1
if broj=2599 then broj=2559
if broj=2560 then broj=broj-1
if broj=2499 then broj=2459
if broj=2460 then broj=broj-1
if broj =2399 then broj=2359
if broj=2360 then broj=broj-1
if broj=2299 then broj=2259
if broj=2260 then broj=broj-1
if broj=2199 then broj=2159
if broj=2160 then broj=broj-1
if broj=2099 then broj=2059
if broj=2060 then broj=broj-1
if broj =1999 then broj=1959
if broj=1960then broj=broj-1
if broj=1899 then broj=1859
if broj=1860 then broj=broj-1
if broj=1799 then broj=1759
if broj=1760 then broj=broj-1
if broj=1699 then broj=1659
if broj=1660 then broj=broj-1
if broj =1599 then broj=1559
if broj=1560 then broj=broj-1
if broj=1499 then broj=1459
if broj=1460 then broj=broj-1
if broj=1399 then broj=1359
if broj=1360 then broj=broj-1
if broj=1299 then broj=1259
if broj=1260 then broj=broj-1
if broj =1199 then broj=1159
if broj=1160 then broj=broj-1
if broj=1099 then broj=1059
if broj=1060 then broj=broj-1
if broj=999 then broj=959
if broj=960 then broj=broj-1
if broj=899 then broj=859
if broj=860 then broj=broj-1
if broj =799 then broj=759
if broj=760 then broj=broj-1
if broj=699 then broj=659
if broj=660 then broj=broj-1
if broj=599 then broj=559
if broj=560 then broj=broj-1
if broj=499 then broj=459
if broj=460 then broj=broj-1
if broj =399 then broj=359
if broj=360 then broj=broj-1
if broj=299 then broj=259
if broj=260 then broj=broj-1
if broj=199 then broj=159
if broj=160 then broj=broj-1
if broj=99 then broj=59
if broj=60 then broj=broj-1
goto disp
ADCON1=$7firestarter wrote:Moze li mi tko pomoći oko portova i naredbi? na 877 je normalno PORTA A/D konverter a PORTC na 4;5 i 6
ima neke đinđurije, problem je kako da ih proglasim običnim I/O portovima
Palo mi je i to napamet, jer sam vec uradio tajmer 59:59-00:00 sa LCD displejom a prikaz resio kao sto kazes, sa dve promenljive.pedja089 wrote:
Napravi 2 promenljive, jednu sekunde, drugu minute. Prikaz na displej mislim da znas resiti.
.
Code: Select all
sec var byte
minu var byte
dsec var byte
dminu var byte
sec=0
minu=0
dsec=0
dminu=0
low led
low sij
pause 200
Lcdout $fe, 1, $80+5, " tajmer"
lcdout $fe, $c0, $80+3, " 00:00:00"
PAUSE 1000
pocetak:
portb=0
if taster=0 then sec=sec+1
if sec>=60 then sec=0:minu=minu+1
if minu>=60 then minu=0
if tasterb=0 then sec=sec-1
if sec>=60 then sec=59 : minu=minu-1
if minu>=60 then minu=59
Konacno sam uspeo da tvoj kod za tajmer do 999 prepravim da broji do 59:59 U osnovi sam zadrzao tvoj princip podesavanja vremena sa manjim izmenama , ubacio sam dve + dve promenljive za sec. i min. a 4 dis podelio tako da dva pokazuju sekunde a dva minute. Ubacen je i buzer koji 10 puta signalizira kraj odbrojavanja. Pocetno vreme je 8 min.pedja089 wrote: Moze se to mnogooooo lakse napraviti.
Prikaz na displej mislim da znas resiti.
Code: Select all
TRISB=$00
TRISA=%00011100
portb=0
S var word
M var word
CS var word
CM var word
BROJ1 VAR BYTE
BROJ2 VAR BYTE
BROJ3 VAR BYTE
BROJ4 VAR BYTE
i var byte
C var bit
k var byte 'promenljive
''''''''''''''''''''''
If c=1 then
S=S-1
if S>=60 then S=59 : M=M-1
if M>=60 then M=59
goto disp
endif
goto disp1
else
relej=0
'''''''''''''''''''''
'smanjivanje
if sttop=0 then
s=s-1
if S>=60 then S=59 : M=M-1
if M>=60 then M=59 '
smanjivanje
''''''''''''''''''''''''
'povecavanje
if start=0 then
S=S+1
if S>=60 then S=0 : M=M+1
if M>=60 then M=0 'povecavanje
''''''''''''''''''''''''''
endif
disp:
BROJ1 = S DIG 0
BROJ2 = S DIG 1
BROJ3 = M DIG 0
BROJ4 = M DIG 1
for i=0 to 80
PORTB=BROJ1 +128
PAUSE 3
PORTB=BROJ2+64
PAUSE 3
PORTB=BROJ3+32
PAUSE 3
PORTB=BROJ4+16
PAUSE 3
next i 'prikaz na displeju
Nisam se ja svo vreme bavio ovim kodompedja089 wrote: Ne znam sta ti je toliko vremena trebalo da to sredis...
Code: Select all
define OSC 4
Define LCD_DREG PORTB
Define LCD_DBIT 0
Define LCD_RSREG PORTB
Define LCD_RSBIT 5
Define LCD_EREG PORTB
Define LCD_EBIT 4
DEFINE LCE_BITS 4
DEFINE LCD_LINES 2
CMCON=7
trisb=%00000000
k var byte
B0 VAR BYTE
B1 VAR BYTE
pocetak:
'primer upisa jednog po jednog karaktera, (znaka, broja, slova) u prvom redu
PAUSE 250 'inicijalizacija displeja
LCDOUT $fe,1 'obrisi lcd
FOR B0=0 TO 7 'broj for ciklusa jednak je broju karaktera u lokup
'instrukciji racunajuci i razmake
LOOKUP B0,["Prvi red"],b1 'lookup instrukcija - upis se smesta u promenljivu B1
LCDOUT, $fe,$0C,B1 'iskljuci kursor i na Lcd-u upisi rec iz promenljive B1
pause 500 'sacekaj pola sekunde -brzina ispisa
next 'next
pause 2000 'pauza do sledeceg primera
'primer upisa jednog po jednog karaktera, (znaka, broja, slova) u drugom redu
lcdout $fe,1 'obrisi lce
LCDOUT $fe,$c0 'postavi kursor na pocetk drugog reda
FOR B0=0 TO 8 'broj for ciklusa jednak je broju karaktera u lokup
'instrukciji racunajuci i razmake
LOOKUP B0,["Drugi red"],b1
LCDOUT, $fe,$0C,B1 'upisi na lcd rec iz promenljive B1
pause 500 'sacekaj pola sekunde-brzina ispisa
next 'next
pause 2000 'pauza do sledeceg primera
'primer pomeranja karaktera (slova, reci, znaka ) ULEVO od poslednjeg karaktera [144]lcd dipleja do
'prvog [128]
for b0=144 to 128 step -1 'Pomeranje reci od poslednjeg karaktera 144 do prvog 128
'Prvi karakter hex-a 80 ili dec 128
'poslednji karakter 8f ili dec 144
lcdout $fe,1 'obrisi lcd
lcdout $fe,b0 ,"Ulevo"
PAUSE 200
NEXT
pause 2000 'pauza do sledeceg primera
'primer pomeranja karaktera (slova, reci, znaka ) UDESNO od prvog karaktera [128]lcd dipleja do
'poslednjeg [144]
'obrisi lcd
for b0=128 to 144 step 1 'postavi for ciklus od prvog karaktera do poslednjem
lcdout $fe,1 'obrisi lcd
lcdout $fe,b0 ,"Udesno"
PAUSE 200
NEXT
pause 2000 'pauZa do sledeceg primera
'primer pomeranja karaktera (slova, reci, znaka) ULEVO od poslednjeg karaktera 144 do petog karaktera 132
for b0=144 to 132 step -1 'Pomeranje reci od poslednjeg karaktera 144 do PETOG 132
'Prvi karakter hex-a 80 ili dec 128
'poslednji karakter 8f ili dec 144
lcdout $fe,1 'obrisi lcd
lcdout $fe,b0 ,"Ulevo"
PAUSE 200
NEXT
pause 2000 'pauxa do sledeceg primera
'primer pomeranja karaktera (slova, reci, znaka) UDESNO od prvog karaktera 128 do 6 karaktera 134
'obrisi lcd
for b0=128 to 134 step 1 'postavi for ciklus od prvog karaktera do SESTOG
lcdout $fe,1 'obrisi lcd
lcdout $fe,b0 ,"Udesno"
PAUSE 200
NEXT
pause 2000
goto pocetak 'vrati se na pocetak
End 'kraj programa