Pomoc oko int.eeproma 16f628A

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Pomoc oko int.eeproma 16f628A

Post by MIKI73 »

Pozdrav ekipi.Probao sam nekoliko puta da napisem program za 16f628a tako da u svom internom eepromu upamti podatke tek kad se pritisne taster ali nije htelo da proradi pa bih da pitam za pomoc oko toga.Pronasao sam jedan slican primer pa sam ga samo prekopirao ovde,znaci interesuje me kako (neka bude u ovom primeru) kad brojac bodje do nekog broja,na pr bude to broj 20 mi pritiskom na taster zapamtimo taj broj i kad brojac nastavi brojanje pritiskom na drugi taster da moze da se ocita eeprom i da pojavi u drugom redu to sto je upisano,ovde br 20.Mozda ima neka greskica ali samo sam prekopirai i nabrzinu izbacio ono sto netreba.Evo primera pa sad gde i sta dodati za 16f628A

brojac var byte
provera var byte
taster var bit
TRISA = %11111101
brojac=0

DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 3
DEFINE LCD_LINES 2
pause 100



cekaj0:

lcdout $FE, $80, "BROJ ="

gosub proveri_ulaz
if taster = 0 then cekaj0:

cekaj1:

gosub proveri_ulaz
if taster = 1 then cekaj1
brojac=brojac + 1

lcdout $FE, 2
lcdout "BROJ ", #brojac
goto cekaj0

proveri_ulaz:
taster=0
for provera = 0 to 100
if PORTA.0 = 1 then return
pauseus 100
next provera
taster = 1
return
end
Ovu pitanje sam postavio u temi "skraceni kurs ucenja picbasica" ali neznam da li sam postavio na pravom mestu pa sam prebacio ovde.Izvinjavam se ako gresim.
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: Pomoc oko int.eeproma 16f628A

Post by Maki »

Ovdje klik imaš primjer.
Koristiš naredbe read i write.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko int.eeproma 16f628A

Post by MIKI73 »

Sve sam probao i neide.Pokusavan za sad u proteusu ali neverujem da simulator pravi greske.Meni ustvari trba jedan drugi programcic ali isto kao ovde da upis vrsi na pritisak tastera
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: Pomoc oko int.eeproma 16f628A

Post by Maki »

Jesi li probao nešto najjednostavnije ?
Tipa pritiskom na prvo tipkalo spremit broj 10, a pritiskom na drugo tipkalo izčitati i ispisati taj broj na LCD-u ?
To probaj, da razriješiš dilemu sa upisom i čitanjem u EEPROM.

Evo probaj nešto ovako, samo dodaj još define za lcd i ostalo...

Code: Select all

A var byte
B var byte
A=10

Start:
IF tipkalo1=1 Then
    write 1,A
end if
If tpikalo2=1 then
    read 1,B
    lcdout "Read:", B
endif
goto start
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko int.eeproma 16f628A

Post by MIKI73 »

Probao sam slicno tako ali nije islo.Sutra cu da napisem ceo kod pa cu da ga postavim,tad ce sigurno da se vidi gde gresim.U savekom slucaju hvala na pomoci jer svaka bi mi dobrodosla a trebace mi malo vise vreme za pisanje pa cu to da ostavim za sutra da bih sve lepo napisao kako mislim da bi trebalo.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko int.eeproma 16f628A

Post by MIKI73 »

Evo koda ali ipak mozda ima problem i do proteusa jer na drugi pritisak tastera pojavljuje se "write" u drugom redu a mislim da bi trebalo ispis u drugom redu da se pojavi tek kad se pritisne taster ra3 i brojac nenja cifru u prvom redu tek na svaki drugi pritisak tastera na ra0.Ako nije mnogo kompikovano i mnogo za pisanje pomozite ili ako bi to oduzelo nekom mnogo vremena onda neka ostane,nebih da se niko maltretira sa pisanjem zbog mene.

cmcon = 7
brojac var byte
petlja var byte
taster_uk var bit
TRISA = %11111101
brojac=0

DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 3
DEFINE LCD_LINES 2
pause 100



cekaj_log0:

lcdout $FE, $80 ,"BROJ ="

gosub proveri_ulaz
if taster_uk=0 then cekaj_log0

cekaj_log1:

gosub proveri_ulaz
if taster_uk=1 then cekaj_log1
brojac=brojac + 1

lcdout $FE, 2
lcdout "BROJ ", #brojac

if porta.2=0 then
write 1 , brojac
pause 10
endif
if porta.3=0 then
read 1, brojac
pause 1000
LCDOUT $FE, $C0
lcdout " WRITE =" ' ovo ispisuje na drugi pritisak tastera ra0
endif

goto cekaj_log0

proveri_ulaz:
taster_uk=0
for petlja=0 to 100
if PORTA.0=1 then return
pauseus 100
next petlja
taster_uk=1
return
end
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko int.eeproma 16f628A

Post by pedja089 »

LCDOUT $FE, $C0-drugi red... Pogledaj hel ili sto je vec bilo napisano na forumu.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko int.eeproma 16f628A

Post by MIKI73 »

Resen problem,ustvari nije ga ni bilo.Na laptop-u proradilo iz prve a na komjuteru je bilo raznih brljotina sto me je mnogo bunilo a iovako sam nesiguran u programiranju.Hvala vam svima na savetima.
Post Reply