www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

PIC16F88 <>ATTiny26
Pojdi na stran Prejšnja  1, 2, 3, 4
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 25.15

PrispevekObjavljeno: Čet Apr 30, 2009 12:02 pm    Naslov sporočila:   Odgovori s citatom

Nekaj presledkov (' ') pred drugimi znaki ...
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14551
Aktiv.: 65.53
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Čet Apr 30, 2009 3:13 pm    Naslov sporočila:   Odgovori s citatom

Lahko tako, kot ti je svetoval Sokrat. Lahko pa tudi preden začeš pisat postaviš kazalček na ustrezno vrstico.

V ta namen je tale procedura:

Koda:
;-------------------------------------------------------
;klic procedure premakne mesto vpisa
;v prvo ali drugo vrstico
;-------------------------------------------------------
VRSTA2:
   ldi tmp,0b11000001
   rjmp VRSTA1a
VRSTA1:
   ldi tmp,0b10000000
VRSTA1a:
   cbi PORTB,RS
   rcall POSLJI_ZNAK
   rcall PAVZA15mS
   ret



Dejansko potrebuješ le tole:


Koda:

        ldi tmp,0b1000000+x  ;x je število mest od izhodišča prve vrstice
                                          ;ali
        ldi tmp,0b1100000+x  ;x je število mest od izhodišča druge vrstice   
        cbi PORTB,RS
   rcall POSLJI_ZNAK

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jerny
Član
Član



Pridružen-a: Čet 17 Apr 2008 11:27
Prispevkov: 414
Aktiv.: 2.13
Kraj: Dravograd

PrispevekObjavljeno: Sob Maj 02, 2009 1:07 pm    Naslov sporočila:   Odgovori s citatom

surla je napisal/a:
Nikoli še nisem imel v rokah tega tvojega Atmela ampak mislim , da gre takole

Koda:
ldi tmp,'U'
   rcall POSLJI_ZNAK
ldi tmp,'='
   rcall POSLJI_ZNAK

   mov tmp,TTICA
   rcall LCD_CIFRA
   mov tmp,STICA
   rcall LCD_CIFRA
   mov tmp,DTICA
   rcall LCD_CIFRA
   ldi tmp,'.'
   rcall POSLJI_ZNAK
   mov tmp,ENICA
   rcall LCD_CIFRA
   ldi tmp,'V'
   rcall POSLJI_ZNAK
   rjmp ZANKA2   

kar se pa tiče poravnave pa ne vem kaj bi rad , bolj razloži!


Dopisal sem zgoraj omenjeno, in zadeva izpisauje neke čudne znake (!?II). Poizkusil sem tudi dodati U in I v tabelo in ni nič bolje. Zakaj, kaj moram storiti?

_________________
Če smrdi je kemija, če kadi pa elektronika!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14551
Aktiv.: 65.53
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Maj 02, 2009 3:09 pm    Naslov sporočila:   Odgovori s citatom

Vzrok za težavo je, da displej prejema instrukcijo. (nizek RS pin) namesto vpisa v podatkovni ram.

Glej primer:

Koda:

        ldi tmp,0b10000000+3   ;premik kazalčka v prvo vrsto na začetek + 3 znake
        cbi PORTB,RS                ;poslana bo instukcija
        rcall POSLJI_ZNAK        ;Izvede ukaz
 


Napis "Test" od 3 znaka dalje:
Koda:
   
        sbi PORTB,RS                  ;vpis v podatkovni ram (pisanje na displej)
        ldi tmp,'T'                     ;prepis v register tmp   
        rcall POSLJI_ZNAK            ;procedura izvede vpis
        ldi tmp,'e'                     ;prepis v register tmp   
        rcall POSLJI_ZNAK            ;procedura izvede vpis
        ldi tmp,'s'                     ;prepis v register tmp   
        rcall POSLJI_ZNAK            ;procedura izvede vpis
        ldi tmp,'t'                     ;prepis v register tmp   
        rcall POSLJI_ZNAK            ;procedura izvede vpis

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jerny
Član
Član



Pridružen-a: Čet 17 Apr 2008 11:27
Prispevkov: 414
Aktiv.: 2.13
Kraj: Dravograd

PrispevekObjavljeno: Sre Maj 13, 2009 8:16 pm    Naslov sporočila:   Odgovori s citatom

Hvala silvo. Vse sem nekako zmozgal le tisti pozdravni napis mi dela težave. Če pobrišem tole proceduro mi zadeva spoh ne deluje več (na lcd-ju se nič ne izpiše).

Koda:

;pozdravni napis
   rcall LCD_INIC      ;inicializacija LC
   ldi tmp,0b00001100
   rcall POSLJI_ZNAK      ;izklop cursorja

   ldi ZL,low(NAPIS*2)
   ldi ZH,high(NAPIS*2)   
   rcall LCD_TXT               ;pozdravni napis 1/2 displeja
   cbi PORTB,RS
   ldi tmp,0b11000000      ;premik na drugo polovico
   rcall POSLJI_ZNAK
     
   ldi ZL,low(NAPIS1*2)   
   ldi ZH,high(NAPIS1*2)
   rcall LCD_TXT               ;pozdravni napis 2/2 displeja
   rcall PAVZA1s
   cbi PORTB,RS
   ldi tmp,0b00000001      ;birsanje displeja
   rcall POSLJI_ZNAK

_________________
Če smrdi je kemija, če kadi pa elektronika!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14551
Aktiv.: 65.53
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sre Maj 13, 2009 9:26 pm    Naslov sporočila:   Odgovori s citatom

Ne izbrisat vsega, ampak le tole:

Koda:
 ldi ZL,low(NAPIS*2)
   ldi ZH,high(NAPIS*2)   
   rcall LCD_TXT               ;pozdravni napis 1/2 displeja
   cbi PORTB,RS
   ldi tmp,0b11000000      ;premik na drugo polovico
   rcall POSLJI_ZNAK
     
   ldi ZL,low(NAPIS1*2)   
   ldi ZH,high(NAPIS1*2)
   rcall LCD_TXT               ;pozdravni napis 2/2 displeja
   rcall PAVZA1s

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
xsyt
Član
Član



Pridružen-a: Sre 28 Maj 2008 22:19
Prispevkov: 1346
Aktiv.: 6.98
Kraj: Slov.Bistrica

PrispevekObjavljeno: Sre Jan 27, 2010 1:27 pm    Naslov sporočila:   Odgovori s citatom

Bi se dalo narediti, da bi pri določeni doseženi vrednosti ADCja preklopi en pin na visoko stanje? Se nekaj trudim okrog tega, pa me assembler muči.. Neutral
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14551
Aktiv.: 65.53
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sre Jan 27, 2010 2:10 pm    Naslov sporočila:   Odgovori s citatom

xsyt je napisal/a:
Bi se dalo narediti, da bi pri določeni doseženi vrednosti ADCja preklopi en pin na visoko stanje? Se nekaj trudim okrog tega, pa me assembler muči.. Neutral


Seveda - vrednost primerjaš z izmerjeno. Pic nima instrukcije za direktno primerjanje, zato od izmerjene vrednosti odšteješ primerjalno vrednost ter opazuješ statusne bite. nekako tako:
Koda:

;izmerjena vrednost je v Izmerjeno
movlw .100             ;prmeralna vrednost
subwf Izmerjeno,w
btfsc STATUS, Z
goto VednostEnaka
.....

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
xsyt
Član
Član



Pridružen-a: Sre 28 Maj 2008 22:19
Prispevkov: 1346
Aktiv.: 6.98
Kraj: Slov.Bistrica

PrispevekObjavljeno: Sre Jan 27, 2010 11:06 pm    Naslov sporočila:   Odgovori s citatom

Aha, torej potem gledaš bit (Z - zero?) v STATUS registru, ki spremeni vrednost, ko doseže v W vrednost 0. Bolj preprosto kot sem mislil. Rolling Eyes Hvala!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
marijan
Član
Član



Pridružen-a: Čet 10 Jul 2008 14:46
Prispevkov: 80
Aktiv.: 0.42
Kraj: ORMOŽ

PrispevekObjavljeno: Pet Feb 12, 2010 12:11 am    Naslov sporočila:   Odgovori s citatom

Gospod Silvo,
naredil sem vatmeter po http://homepages.paradise.net.nz/bhabbott/wattmeter.html[url]. V originalni verziji vse deluje zelo dobro. Moj vatmeter meri napetost do 100V in tok do 50A. Spremenjen je program, na vhodu sem zamenjal tudi razdelilec napetosti. Na vhodu op. ojačevalnika sem zamenjal upor. Napetosti meri zelo dobro, a tok skače od 3A do max. vrednosti.Merenje toka je neuporabno.Zaradi toka ne meri dobro Ah in W.Autor vatmetra mi je spreminjal program.Bi mogoče vi vedli vzrok? Nevem programirati mikrokontrolerje (zelo malo), ker sem malo starejša generacija in se nisem s tem ukvarjal.Prosim moderatorja da izbriše to sporočilo če ne odgovarja tej temi.
Lep pozdrav. [/url]
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3, 4
Stran 4 od 4

 
Pojdi na:  
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group