Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

podprogram pro LED displej

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: út únor 18 2014, 20:10    Předmět: podprogram pro LED displej Citovat

Dobrý den, nemáte někdo podprogram pro PIC co by zjistil hodnotu z W a následně ji ukázal na LED displeji?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
monterjirka



Založen: Jun 14, 2003
Příspěvky: 2797
Bydliště: Blížejov

PříspěvekZaslal: út únor 18 2014, 23:10    Předmět: Citovat

Někdy v roce 2002 - 2003 vycházel v KTE magazínu dobře udělaný kurz základů programování PIC zaměřený na přípravek CHIPON, tam je popsaná komunikace PIC s displejem,...
http://www.gmelectronic.eu/index.php/cz/clanky-informace/clanky/radio-plus-kte
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: čt únor 20 2014, 20:32    Předmět: Citovat

KTE nepomohlo (nejspíš neumím hledat) v jiném programovacím jazyce bych to udělal asi nějak takto:
if(w == 1)
porta = 00000110
else if(w == 2)
porta = 01011011
atd...
ale nevím jak udělal takovou podmínku v asembleru
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: pá únor 21 2014, 5:20    Předmět: Citovat

Doufám, ze LED displejem myslíš sedmisegmentovku. Pokud ne, tak tento příspěvek možná nebude splňovat to, co jsi chtěl.
K tomuto účelu se používá tabulka.
kód:

TAB_ZNAKU   ;TADY SE PREVEDE CISLO ci HODNOTA NA 8-BITOVE CISLO, KTEREMU ODPOVIDA ZOBRAZENI NA 7.SEGMENTOVCE
;      ;V NEGATIVNI LOGICE - TZN. LOG.0 = SVITI , LOG.1 = NESVITI
   ADDWF   PCL,F

ZN0   RETLW   B'01010000'   ;0   
ZN1   RETLW   B'01011111'   ;1   
ZN2   RETLW   B'00110010'   ;2   
ZN3   RETLW   B'00010110'   ;3   
ZN4   RETLW   B'00011101'   ;4   
ZN5   RETLW   B'10010100'   ;5   
ZN6   RETLW   B'10010000'   ;6   
ZN7   RETLW   B'01011110'   ;7   
ZN8   RETLW   B'00010000'   ;8   
ZN9   RETLW   B'00011100'   ;9   

ZNA   RETLW   B'00011000'   ;10 
ZNB   RETLW   B'10000011'   ;11 
ZNC   RETLW   B'11110000'   ;12 
ZND   RETLW   B'00010011'   ;13 
ZNE   RETLW   B'10110000'   ;14 
ZNF   RETLW   B'10111000'   ;15 
ZNX   RETLW   B'11111111'   ;16 
ZNST   RETLW   B'00111100'   ;17 
ZNS   RETLW   B'10010100'   ;18 
ZNU   RETLW   B'01010001'   ;19 
ZNN   RETLW   B'10011011'   ;20 
ZNR   RETLW   B'10111011'   ;21 
ZNMINUS RETLW   B'10111111'   ;22 
ZNT   RETLW   B'10110001'   ;23 
ZNJ   RETLW   B'01010011'   ;24 
ZNO   RETLW   B'10010011'   ;25 
ZNH   RETLW   B'00011001'   ;26 
ZNY   RETLW   B'00111001'   ;27 
ZNL   RETLW   B'11110001'   ;28 


Tabulku musis mit hned nekde na zacatku programu. Ber to jen jako vytazek z meho kodu. Ty si ji nastav jak potrebujes.
Pokud chces zobrazit viceciferne cislo, musis toto cislo nejprve rozdelit na BCD kod.

kód:

PREVODBCD   ;PREVADENA HODNOTA MUSI BYT VE W REG.      
   CLRF   BCD1
   CLRF   BCD10
   CLRF   BCD100
;STOVKY         
   movwf   TMP0      ;NACTI HODNOTU Z W (PREVADENE CISLO) DO TMP0
        clrf    TMP1      ;VYMAZ TMP1
   movlw   .100      ;100dec do W reg.
STOVKY   incf   TMP1,F      ;PRICTI 1 V reg. TMP1
   subwf   TMP0,F      ;ODECTI TMP0-W A ULOZ DO TMP0
   btfsc   STATUS,C   ;TEST, ZDA ODECET BYL PRES 0
   goto    STOVKY      ;VRAT SE NA STOVKY
   decf   TMP1,W      ;PRICTI JEDNA DO TMP1 A VYSLEDEK ULOZ DO W
   movwf   BCD100      ;VYSLEDEK OPERACE (vWreg.) PRESUN DO reg.BCD100
;DESITKY
   movlw   .100      ;100dec do W reg.
   addwf   TMP0,F
        clrf    TMP1
   movlw   .10      ;10dec do W reg.
DESITKY   
   incf   TMP1,F
   subwf   TMP0,F
   btfsc   STATUS,C
   goto    DESITKY
   decf   TMP1,W
   movwf   BCD10      ;VYSLEDEK OPERACE (vWreg.) PRESUN DO reg.BCD10
;JEDNOTKY   
   movlw   .10      ;10dec do W reg.
   addwf   TMP0,F
   clrf    TMP1
   movlw   .1      ;1dec do W reg.
JEDNOTKY
   incf   TMP1,F
   subwf   TMP0,F
   btfsc   STATUS,C
   goto    JEDNOTKY
   decf   TMP1,W
   movwf   BCD1      ;VYSLEDEK OPERACE (vWreg.) PRESUN DO reg.BCD1
   RETURN
;Vysledek operace je v registrech BCD100, BCD10, BCD1       

Toto pouzivam ja.
Hodne zdaru

_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Niki31
Zablokován


Založen: Jul 05, 2008
Příspěvky: 131

PříspěvekZaslal: pá únor 21 2014, 7:23    Předmět: Citovat

Není nutné aby to bylo na začátku programu.Taky je možno
před danou poslopnost příkazu napsat direktivu např. ORG 256
a překladač umístí tento kód od adresy H100,tedy na začátek
druhé stránky paměti programu.Pak stačí před voláním přepnout stánku
a volat dekódování znaku.

ToMastře ,ta podmínka v ASSEMBLERU se napíše přesně tak jak jsi
ji napsal.Assembler zná mnohem víc příkazů než jen samotné instrukce
mikrokontroléru.If,else ... jsou jedny z nich.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: pá únor 21 2014, 20:47    Předmět: Citovat

když jsem napsal:
if(W = 00000001)
PORTA == 01011111
if(W == 00000010)
PORTA = 00110010
atd...
tak mi pickit2 (software) hlásil že nemám konfigurační slovo v .HEX souboru (ale bylo tam a bez "IFů" to šlo normálně)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: so únor 22 2014, 11:19    Předmět: Citovat

konfigurační slovo jsem vyřešil ale když dám if(TLAC == 1) (TLAC jsem definoval nahoře jako PORTB,0) tak to píše Error[108] C:\USERS\TOSCHIBA\DOCUMENTS\PIC16F876A_TEST.ASM 22 : Illegal character (,)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: so únor 22 2014, 18:04    Předmět: Citovat

citace:
ale když dám if(TLAC == 1)

To nejde.
if - else - endif jsou direktivy překladače pro podmíněný překlad.

Příklad části kódu, která je jiná pro pic16xx a pic18xx.
kód:

#define pic 16
;#define pic 18

;kód:
...
...
if(pic==16) ;pic musí být konstanta, známá v době překladu
   MOVLW 1
   ...
   ...
else
   MOVLW 5
   ...
   ...
endif
   ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: so únor 22 2014, 20:29    Předmět: Citovat

takže to umí pracovat jen s konstantami?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: ne únor 23 2014, 6:11    Předmět: Citovat

Zkrátka if() nejde použít v kódu pro testování bitů nebo registrů.
Musíš použít výhradně instrukce z instrukční sady.

Např.
kód:
if(PORTB.0 == 0)
   W = 5
else
   W = 10

Napíšeš takto
kód:
BTFSS PORTB,0
GOTO B
MOVLW 10
GOTO END

B: MOVLW 5
END:

Snad to mám dobře, dávno tomu co jsem dělal s Picama.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: ne únor 23 2014, 8:23    Předmět: Citovat

a na zjištění hodnoty z W to půjde?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: ne únor 23 2014, 8:51    Předmět: Citovat

toMajstr: napis co to ma delat ,jaky hodnoty z W bude zobrazovat a kolik ?
pak ti muzem rict jestly bude tabulka lepsi nebo btfsX...

AB1: PIC v asm nema za navestim 2tecku,hlave pro ostatni co pouzivaj ctrl+c/ctrl+v
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: ne únor 23 2014, 9:07    Předmět: Citovat

ve W budou čísla 1-9 (později možná vyší) a podle toho se na LED displeji zobrazí číslo 1-9
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: ne únor 23 2014, 9:17    Předmět: Citovat

pres tabulku jak psal vyse Chenzee, jinak pro normalni tudis bezne zobrazeni se pouziva tabulka pro 0-9 znaku netreba vic, zbytek se vypocitava...

jen tak pro zajimavost , co to bude az to bude ? zobrazeni hodnoty z W Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
toMajstr



Založen: Nov 10, 2013
Příspěvky: 332

PříspěvekZaslal: ne únor 23 2014, 9:47    Předmět: Citovat

měl by to být časovač ale chtěl bych aby se to dalo pomocí ctrl+c, ctrl+v použít i jinde
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund