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

Pridružen-a: Ned 06 Nov 2005 13:27 Prispevkov: 10 Aktiv.: 0.04
|
Objavljeno: Sre Jul 26, 2006 7:58 pm Naslov sporočila: Težava s tipkami |
|
|
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 |
|
 |
bohinc Član

Pridružen-a: Ned 06 Nov 2005 13:27 Prispevkov: 10 Aktiv.: 0.04
|
Objavljeno: Sre Jul 26, 2006 8:01 pm Naslov sporočila: |
|
|
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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Jul 27, 2006 12:26 am Naslov sporočila: |
|
|
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 |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Jul 27, 2006 8:23 am Naslov sporočila: |
|
|
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 |
|
 |
bohinc Član

Pridružen-a: Ned 06 Nov 2005 13:27 Prispevkov: 10 Aktiv.: 0.04
|
Objavljeno: Čet Jul 27, 2006 1:52 pm Naslov sporočila: še vedno tipke;) |
|
|
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 |
|
 |
Iztok Član

Pridružen-a: Pet 08 Okt 2004 0:55 Prispevkov: 4974 Aktiv.: 21.00 Kraj: LJ
|
Objavljeno: Čet Jul 27, 2006 2:00 pm Naslov sporočila: |
|
|
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 ... sedaj delam celo več komentarjev kot je v Silvotovem primeru.  |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Čet Jul 27, 2006 2:19 pm Naslov sporočila: |
|
|
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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pet Jul 28, 2006 12:18 pm Naslov sporočila: |
|
|
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 |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pet Jul 28, 2006 1:29 pm Naslov sporočila: |
|
|
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 ).
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 |
|
 |
|
|
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: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|