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 

Težava s tipkami

 
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
bohinc
Član
Član



Pridružen-a: Ned 06 Nov 2005 13:27
Prispevkov: 10
Aktiv.: 0.04

PrispevekObjavljeno: Sre Jul 26, 2006 7:58 pm    Naslov sporočila:  Težava s tipkami Odgovori s citatom

Pozdravljeni!

Nekaj dni nazaj sem se lotil programiranja mikrokontrolejevm, ker bi jih rad enkrat v prihodnosti tudi zna ( če mi uspe;)). Začel sem pa s PICI. In ni hudič dosti na začetku knjige Programirajmo PIC mikrokontrolerje se mi zatakne pri programu za tipke, kjer naj bi 10-krat pritisnil tipko in nato bi morala posvetiti ledica. Imam pa programator od vellemana k8048, kjer lahko tudi malo stestiraš svoje programe. In uporabljam pa mikrokontroler P16F627. Res ne vem kje naj bi ga polomil pri prepisanju programa iz knjige. V prilogi pa pošiljam ta program!

Prosim za pomoč, da ne bom izgubil volje do programiranja;)
Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bohinc
Član
Član



Pridružen-a: Ned 06 Nov 2005 13:27
Prispevkov: 10
Aktiv.: 0.04

PrispevekObjavljeno: Sre Jul 26, 2006 8:01 pm    Naslov sporočila:   Odgovori s citatom

Program
list p=16f627
#include p16f627.inc

__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Stevec equ 0x0C
Zanka1 equ 0x0D
Zanka2 equ 0x0E
LED equ d'4'
T equ d'2'

org 0x000
goto Zacni
org 0x004

Zacni
bsf STATUS,RP0
movlw b'00000100'
movwf TRISA
clrf TRISB
bcf STATUS,RP0
clrf PORTB
clrf Stevec

Nadaljuj
call Beri
movf Stevec,w
sublw 0x0A
btfss STATUS,Z
goto Nadaljuj
bsf PORTB,LED

Konec goto Konec

Beri
btfsc PORTA,T
goto Nic
call Delay

Delaj
btfss PORTA,T
goto Delaj
call Delay
incf Stevec,f

Nic
return

Delay
movlw d'4'
movwf Zanka1

Cakaj
incfsz Zanka2,f
goto Cakaj
decfsz Zanka1,f
goto Cakaj
return

end
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



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

PrispevekObjavljeno: Čet Jul 27, 2006 12:26 am    Naslov sporočila:   Odgovori s citatom

Tole bi moglo delati. Dopisal sem komentarje. Splošno namenski registri se začnejo na lokaciji 0x20 Na 0xC se začnejo pri 16F84


Koda:
Program
list p=16f627
#include p16f627.inc

;   __config _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC poglej še konfiguracijski stavek - kako je z reset pinom ter tipom oscilatorja ki ga uporabljaš?
   __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _LVP_OFF & _XT_OSC

;Stevec equ 0x0C   ;napaka je tukaj splošno namenski registri se začnejo na lokaciji 0x20
;Zanka1 equ 0x0D   ;na 0xC se začnejo za 16F84
;Zanka2 equ 0x0E   


Stevec equ 0x20   
Zanka1 equ 0x21   
Zanka2 equ 0x22   


LED equ d'4'
T equ d'2'




   org 0x000
   goto Zacni
   org 0x004

Zacni
   bsf STATUS,RP0      ;bank1
   movlw b'00000100'
   movwf TRISA         ;RA2 je vhod ostali so izhodi
   clrf TRISB         ;vsi pini portab so izhodi
   bcf STATUS,RP0      ;bank 0
   clrf PORTB         ;stanje na portu b je b'00000000'
   clrf Stevec         ;stevec =0

Nadaljuj
   call Beri         ;klic procedure beri
   movf Stevec,w      ;Stevec -> W
   sublw 0x0A         ;W-0x0A =0 '
   btfss STATUS,Z      ;je postavljen Z bit (rezultat je 0) ?
   goto Nadaljuj      ;ne
   bsf PORTB,LED      ;da prižge se led na portub3

Konec goto Konec

Beri
   btfsc PORTA,T      ;branje vhoda RA1 je stanje nizko ?
   goto Nic         ;ne
   call Delay         ;da

Delaj
   btfss PORTA,T      ;je stanje na RA1 visoko?
   goto Delaj         ;ne nazaj na zanko
   call Delay         ;na proceduro Delay
   incf Stevec,f

Nic
   return

Delay
   movlw d'4'
   movwf Zanka1      ;z vrednostjo .4 polnim register Zanka1

Cakaj
   incfsz Zanka2,f      ;Zanka2-1 =0 ?
   goto Cakaj         ;ne nazaj na Cakaj
   decfsz Zanka1,f      ;Zanka1 -1 =0 ?
   goto Cakaj         ;ne nazaj na Cakaj
   return         

end

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



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

PrispevekObjavljeno: Čet Jul 27, 2006 8:23 am    Naslov sporočila:   Odgovori s citatom

Takole bi moral biti program pokomentiran ze na zacetku - en nasvet z moje strani: ce zelis program se kdaj prebrati (npr. po nekaj mesecih), potem ga ustrezno komentiraj. To pomaga tudi takrat, ko kdo drug isce napake za tabo, saj sicer ne more vedno s 100% gotovostjo ugotoviti kaj si zelel narediti, posledicno pa ne more zanesljivo zakljuciti ali je nekje napaka ali gre samo za zelo kreativen nacin resevanja problema. Pri majhnih programih se nekako gre, pri velikih pa tako pocetje pobere ogrooooomno casa in volje.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
bohinc
Član
Član



Pridružen-a: Ned 06 Nov 2005 13:27
Prispevkov: 10
Aktiv.: 0.04

PrispevekObjavljeno: Čet Jul 27, 2006 1:52 pm    Naslov sporočila:  še vedno tipke;) Odgovori s citatom

Silvo hvala za pomoč, ampak moram razočarati. da še vedno ne dela:(. Če pa poizkusim demo programe od vellemena, tam pa delajo pritiski na tipke vse v redu. Edin če bi te še prosil, da bi mi napisov program za vsako tipko posebej, da se ob pritisku prižge ledica, da vsaj vidim če mi to dela v redu, ali pa vsaj za eno.Da vsaj vidim pravilno proceduro branja tipke Težko verjamem da bi blo s hardwearam kaj narobe!!
Hvala vnaprej

Lp
bohinc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Iztok
Član
Član



Pridružen-a: Pet 08 Okt 2004 0:55
Prispevkov: 4974
Aktiv.: 21.00
Kraj: LJ

PrispevekObjavljeno: Čet Jul 27, 2006 2:00 pm    Naslov sporočila:   Odgovori s citatom

Sokrat je napisal/a:
... - en nasvet z moje strani: ce zelis program se kdaj prebrati (npr. po nekaj mesecih), potem ga ustrezno komentiraj. ...

Zlata vreden nasvet!

Jaz sem se tega navadil na hard-way ko sem čez mesece spreminjal kakšen program in precej Brick wall ... sedaj delam celo več komentarjev kot je v Silvotovem primeru. Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Proteus
Član
Član



Pridružen-a: Sre 15 Jun 2005 10:03
Prispevkov: 1943
Aktiv.: 8.20

PrispevekObjavljeno: Čet Jul 27, 2006 2:19 pm    Naslov sporočila:   Odgovori s citatom

Koda:
sedaj delam celo več komentarjev kot je v Silvotovem primeru

Komentarji kot: "klic procedure beri" ali "z vrednostjo .4 polnim register Zanka1" so prej nepotreben balast kot pa komentar, saj je stvar sama po sebi dovolj samoumevna.

Sam ostajam na splošnem komentarju posameznih funkcij, kjer jasno napišen kaj funkcija počne. To je v končni fazi tudi bistveno, da veš kaj si v nekem segmentu kode motovilil. To, da napišeš A sem dal v B te prav nič ne razsvetli, ker še vedno ne veš, zakaj si to naredil.
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: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Jul 28, 2006 12:18 pm    Naslov sporočila:   Odgovori s citatom

Treba je še izključiti komparatorje, pa program preverjeno dela.

Nekje na začetku, ko si na bank0 dodaj še:
Koda:

movlw b'111'
movwf CMCON


Upam, da si dal tipko na RA2 ter na pin pullup upor. Izhod je na RA4. Pri komentarjih sem se sam zatipkal. Videl sem šele sedaj, ko sem vezje sestavil na testno ploščo.

Sicer se strinjam s Proteusom. Sam običajno komentiram le dele, kjer predvidevam eventuelne spremembe. Večino komentarja si napišem v "glavo" procedure. Komentarje zgoraj sem pisal zaradi "analize" programa.

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



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

PrispevekObjavljeno: Pet Jul 28, 2006 1:29 pm    Naslov sporočila:   Odgovori s citatom

Ce gre za opis algoritma po korakih, je smiselno komentirati dobesedno vsako vrstico, da razumes od kje tisto racunanje in zakaj ne izgleda tako, kot bi po opisu algoritma (diagram poteka) pricakoval - optimizacija.

Ce npr. program potrebuje mnozenje in deljenje z 10, MCU nima HW MUL/DIV ukaza in noces implementirati (manj ucinkovitega) popolnega mnozenja in deljenja, ker ga ne potrebujes, potem je program brez komentarjev na koncu prakticno neberljiv (enkrat sem naredil ravno tako stvar za PIC v assemblerju in vem kako izgleda Laughing ).

Konetarji tipa "premaknem vrednost X iz naslova A v B" so pa res nesmiselni, saj ne povedo nicesar o delovanju programa - vse to je mogoe razbrati iz zapisa ukaza.
Nazaj na vrh
Skrit 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
Stran 1 od 1

 
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: 491 dni


Powered by phpBB © 2001, 2005 phpBB Group