 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Sob Jul 23, 2011 5:28 pm Naslov sporočila: |
|
|
In kaj bi imelo to podpičje veze s tem, da se spremenljivka minute na spreminja s tipko?? |
|
Nazaj na vrh |
|
 |
Alex17 Član


Pridružen-a: Ned 28 Feb 2010 21:46 Prispevkov: 476 Aktiv.: 2.56 Kraj: Ljutomer
|
Objavljeno: Sob Jul 23, 2011 5:53 pm Naslov sporočila: |
|
|
Da ti vedno, ko pritisneš tipko postavi minute na 59. Če si sprobal mojo kodo, bi ti moralo delovati, ker te napake ni bilo notri. |
|
Nazaj na vrh |
|
 |
micabauc Član


Pridružen-a: Tor 03 Jun 2003 7:12 Prispevkov: 177 Aktiv.: 0.75 Kraj: Celje
|
Objavljeno: Sob Jul 23, 2011 6:40 pm Naslov sporočila: |
|
|
Podpičje pomeni zaključek ukaza, in ti si zaključil IF stavek, prej ko je bilokaj nardil. |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Tor Jul 26, 2011 11:25 am Naslov sporočila: |
|
|
Sem popravil kodo ampak na žalost še vedno ne deluje, poskušal sem na vse možne načine, vendar mi ne spremenija minut na zaslonu, napaka ni velika ampak mene je stala že kar nekaj časa:D....zanimivo res, na prvi pogled je vse ok ampak nekaj more biti pri izpisu na zaslon narobe pa ne vem kaj?? |
|
Nazaj na vrh |
|
 |
Alex17 Član


Pridružen-a: Ned 28 Feb 2010 21:46 Prispevkov: 476 Aktiv.: 2.56 Kraj: Ljutomer
|
Objavljeno: Tor Jul 26, 2011 11:41 am Naslov sporočila: |
|
|
Probaj še to - za izpisom na LCD dodaj ti dve vrstici:
Koda: |
lcd_gotoxy(10,0);
sprintf(hr,"%02d",ure);
lcd_puts(hr);
lcd_puts(":");
sprintf(min,"%02d",minute);
lcd_puts(min);
PORTB.B2 = !PORTB.B2;
PORTB.B3 = minute.B0; |
Pri tem pina B2 in B3, zamenjaj s pinoma, ki sta prosta in gor poveži dve LED.
Prva bo indikator pritisnjenosti tipke - če ne držiš tipke, se bo prižigala/ugašala tako hitro, da bo izgledalo kot da sveti, če pa držiš tipko pa se bo prižigala ugašala v ritmu 200ms, ker imaš pri tipkah tak delay.
Druga pa prikazuje stanje zadnjega bita spremenljivke minute, da vidiš, če se spreminja vrednost minut. Ta LED bi prav tako ob pritisnjeni tipki utripala na 200ms, brez tipk pa bi ostala v enem stanju on ali off.
Če bo vse delovalo kot sem opisal, imaš problem z izpisom na LCD, če ne pa bomo tudi hitro izvedeli kje drugje je.
Pa tistega drugega lcd_gotoxy(13,0) ne rabiš, ker je kurzor itak na poziciji 13,0 po izpisu ur in dvopičja. |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Tor Jul 26, 2011 11:58 am Naslov sporočila: |
|
|
PORTB.B3 = minute.B0;
kaj si pravzaprav mislil s tem, npr. PORTC.2=minute; ali kako?
kati imam proste še eostale c pine in torej po tvojem predlogu dodam te dve vrstici:
PORTC.1=!PORTC.1;
PORTC.2=minute;
?? |
|
Nazaj na vrh |
|
 |
Alex17 Član


Pridružen-a: Ned 28 Feb 2010 21:46 Prispevkov: 476 Aktiv.: 2.56 Kraj: Ljutomer
|
Objavljeno: Tor Jul 26, 2011 12:01 pm Naslov sporočila: |
|
|
PORTC.1=!PORTC.1;
PORTC.2=minute.0;
Na PORTC.2 mora biti samo zadnji bit od minut. Če ta prevjalnik ne razume tega, pa lahko napišeš tudi:
PORTC.2 = Minute & 0x01;
kar je tudi bolj pravilno. |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Tor Jul 26, 2011 12:08 pm Naslov sporočila: |
|
|
aha razumem sedaj ja...bom poskusil to pa ti sporočim, kako se odzovejo led diode... |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Tor Jul 26, 2011 12:18 pm Naslov sporočila: |
|
|
Torej dioda na pinu C1 se obnaša normalno, ko ni pritisnejano nič, dioda sveti oz. utripa hitro, ko pridržiš tipko utripa na 200ms, torej vse ok, ampak z drugo diodo se ne zgodi nič. |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Tor Jul 26, 2011 12:19 pm Naslov sporočila: |
|
|
Napaka je nekje v izpisu na lcd, mogoče zisto zaporedje izpisa, ki je na začetku drugega while stavka?? |
|
Nazaj na vrh |
|
 |
Alex17 Član


Pridružen-a: Ned 28 Feb 2010 21:46 Prispevkov: 476 Aktiv.: 2.56 Kraj: Ljutomer
|
Objavljeno: Tor Jul 26, 2011 3:27 pm Naslov sporočila: |
|
|
Če ti LED na C2 ne spreminja stanja, to pomeni, da se ti tudi spremenljivka minute ne spreminja (če imaš seveda C2 pin nastavljen kot izhodni). Torej je izpis na LCD pravilen (preveriš tako, da nastaviš minutam drugo začetno vrednost, npr. minute = 10 na začetku programa).
S tem ostane problem enak kot prej. Tu pa ti res en ostane več veliko možnosti, vse izgleda OK, pa vseeno ne dela.
Lahko probaš še spreminjati minute in ure hkrati, brez omejitve vrednosti, da vidimo, kaj se zgodi:
Koda: |
if(PINB.1==0) //tipka gor
{
if(menu==1)
{
ure++;
minute++;
}
if(menu==2)
{
minute++;
ure++;
}
Delay_ms(200);
}
if(PINB.2==0) //tipka dol
{
if(menu==1)
{
ure--;
minute--;
}
if(menu==2)
{
minute--;
ure--;
}
Delay_ms(200);
} |
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Tor Jul 26, 2011 3:34 pm Naslov sporočila: |
|
|
sem poskusil zamenjati ta tvoj program v del kode in zanimivo, ko povečujem ure se minute ne spreminjajo, ko zmanjšujem ure, se minute spreminjajo po vrstem redu:
000, -25, -51, -76, 000....zanimimo res:D |
|
Nazaj na vrh |
|
 |
Alex17 Član


Pridružen-a: Ned 28 Feb 2010 21:46 Prispevkov: 476 Aktiv.: 2.56 Kraj: Ljutomer
|
Objavljeno: Tor Jul 26, 2011 4:08 pm Naslov sporočila: |
|
|
Čudo tehnike. Poskusi še interrupte izklopiti.
PS: Kaj pa se sedaj dogaja, ko povečuješ in zmanjšuješ minute (ko je menu == 2) |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Tor Jul 26, 2011 5:46 pm Naslov sporočila: |
|
|
ko je menu2 je vse enako kot če je menu1...čudno res...bom že pogruntal nkeje je mala napaka |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Čet Jul 28, 2011 5:36 pm Naslov sporočila: |
|
|
danes sem spet malo poskusil, vendar mi ne uspe, ekperiment z led diodo daje takšen rezultat, da če vrinem vrstico PORTC.2=ure&0x01; mi ta dioda lepo ob vsakem povečanju spremeljivke ure spremeni stanje (on,off,on,....), če napišem namesto tega PORTC.2=minute&0x01; se ne spreminja nič, če sem seveda v meniju 2, torej z izpoisom ni nič narobe, problem je s povečevanjem spremenljivke.
Mogoče je napaka v tem, ker sta v kodi dva različna pogoja, kaj se stori, ko je menu=2, najprej naj se spremeni napis na lcd zaslonu, v drugem pogoju pa naj se v tem meniju nastavljajo minute...??? |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|