Zdravím,
uz jednou jsem zde potreboval poradit a pomohli jste mi. Ted je to trochu horsi jelokoz jde o moji maturitní práci. Tak doufam, že to nebylo naposled Mam takovy problem:
Do procesoru nahraju program vse se zdá být OK ale jakmile ho dam do patice tistaku jde do nej napětí a ten mrzák nic nedela. Nejprve jsem zkousel krystal s 20Mhz ten nekmital vubec, tak jsem dal krystal na 14Mhz ten sice kmital ale nic se nedolo, ani ledky nesvítili. Tak sem hledal chybu a napsal jsem prg jednoduchého rozsvicení diod na portech a zase nic nefungovalo (osc kmital ale LEDky nic).
Rád bych kdybyste mi pomohli. V příloze přidávám tišták a prg, kterej je docela hezky napsanej s par obezlickama. Je to trochu komentovane ale chtřejší to určitě pochopí. Je to prg k ovladáni displeje LM20A21, ke kteremu jsem se zatim jeste nedostal kdyz sem ani nesprovoznil LEDky a určitě bude předmětem další diskuze.
Děkuji všem za zájem
Máš chybu v programu. Adresa RAM musí být 0x20.
0x0C je např. u 16F84
A jinak já používam. např.
cblock 0x20; první adresa paměti RAM pro PIC16F874 - 368bajtů (20h - 7Fh)
Priznak ;FLAGS
KlV_Port ;port klavesnice
KlV_Citac1 ;citac klavesnice opakovani
KlV_Citac2 ;cteni klaves
endc
; Special Function Registers ==============================================
RAM EQU H’20’ ;Zde je jiny zpusob zadavani registru.
RAM_END EQU H’7F’ ;konec RAMky
RBF EQU RAM ;Zada se kde je RAM a dalsi registry jsou
RBF1 EQU RAM+1 ;za RAMem
A podle krokování dělá co by asi dělat měl. Dej sem ten program s těmi ledkami, když ti taky nejede.
A abych nezapoměl. Ještě vypnout AD převod, někdy to zlobí.
banksel ADCON1
movlw b’00000110’ ; A/D input OFF
movwf ADCON1
Připojuji soubor, jakou mám incializaci pro 16F877A, třeba ti to pomůže
A upravil jsem ten tvuj původní, tak ho zkus. LCD PIC FINAL v_00 upravenej.asm (30.6 KB) INIT.ASM (2.29 KB)
To zní hodně samolibě, s ohledem na to jak program vypadá. honza3 si všiml nejspíš naprosto primárního problému, převálcování SFR, tak s tím něco udělej. Odověď :"Ani jedno z toho nepomohlo " je naprosto irelevantní v diskuzi o programování PIC.
jankop_: hele tenhle prg sem psal docela dloho a na to ze je to jeden z mych prvních uzitecnych prg tak sem na to pysnej… nevim jak si na tom ty ale rekl bych ze na beginera je to pekny…
ted je na rade Display ja tady mam LM20A21 a mam ho zapojenej takhle:
PIC Display
B0 DB4
B1 DB5
B2 DB6
B3 DB7
B4 RS
B5 R/W
B6 E
rekl bych spis ze je spatne zapojenej ale kontoloval jsem se a vse na svem miste. V DataSheetu od tohodle displeje sice je napsano kde je ( BD0-BD7, RS, R/W, E, Vss, Vdd, Vo) co ale na druhy strane jsou dalsi konektory na pripojeni nekam kamsi a ty tam nejsou popsany co to je a k cemu to slouží. Taky nevim poradne kam mam zapojit Vo. Jak uz jsem napsal asi to bude spatne zapojene jelikoz Display nema zadnou reakci - nezobrazuje nic.
Vo zapoj na trimr 5K a ten zapoj na VSS a VDD
Nastavíš si s ním jas displeje, proto ti asi nic neukazuje
Víš vůbec něco o elektronice?
A ještě k programu. Podle mě je zbytečné kontrolovat příznak BUSY, pokud dodržíš předepsané časové limity, tak není důvod, aby LCD nefungoval. A ušetřil by jsi jeden vývod u procesoru. Vývodů není nikdy dost.
No, tak aspoň jeden uspěch, LCD je funkční, ale nemáš ho z inicializovanej.
Zkus tento program zahrnout do svého programu, vývod RW uzemni
V programu si uprav vývody E a RS kam je máš připojené. LCD.asm (5.31 KB)
tak dislpej uz jsem “rozchodil” ale nezobrazuje to co ma respektive zobrazuje poze nakou nahodnou hatmatilku. V priloze pridavam zatim posledni verzi prg. Snad se na to naka dobra duse podiva a rekne kde byla chyba/y jelioz uz jsem z toho docela zoufalej LCD PIC FINAL v_00 upravenej 000.asm (31.6 KB)
Máš chybu v podprogramu na ovládání LCD displeje. Na to jsem ti posílal ten můj! Kdyby jsi ten program psal z ověřenými a odzkoušenými podprogramy, asi by ti už fungoval. Na ovládání LCD displeje už asi nic nového nevymyslíš.
Zkus to
Ale máš v tom programu pěknej bordel. Pleteš si zápis instrukcí a dat do LCD. A do TEXT a TEXT2 si dej přímo znaky, a ne čísla znaku.
Např. místo movlw .65 dej movlw ‘A’
Bude to přehlednější
A když chceš registr přesunout do W, tak musíš místo MOVF ADRTX napsat MOVF ADRTX,w