PIC16F628A - zmena hodnoty v registroch
Moderátor: Moderátoři
Uz tomu zacinam lepsie rozumiet.
Cize pri pouziti CBLOCK sa premenne automaticky ukladaju na volne miesta do GENERAL PURPOSE REGISTER od adresy 20h smerom dohora po adresu 6Fh?
Takto som to spravil, ale moj problem to nevyriesilo - stale sa mi asi nieco prepisuje.
Kod som troska upratal, je v prilohe.
Procesor - tak nakoniec som robil blbost - zapisoval som hodnotu do TRISB ,hoci som potreboval zapisovat do PORTB.Cize do BANK1 sa nepotrebujem prepinat.
Len neviem prist na to kde je problem - pomohlo by ak by som v simulatore vedel zobrazit GENERAL PURPOSE REGISTER...
Cize pri pouziti CBLOCK sa premenne automaticky ukladaju na volne miesta do GENERAL PURPOSE REGISTER od adresy 20h smerom dohora po adresu 6Fh?
Kód: Vybrat vše
CBLOCK 0X20
d1
d2
d3
LEDTIME
X1
X2
X3
P1
P2
P3
ENDC
Kod som troska upratal, je v prilohe.
Procesor - tak nakoniec som robil blbost - zapisoval som hodnotu do TRISB ,hoci som potreboval zapisovat do PORTB.Cize do BANK1 sa nepotrebujem prepinat.
Len neviem prist na to kde je problem - pomohlo by ak by som v simulatore vedel zobrazit GENERAL PURPOSE REGISTER...
- Přílohy
-
- Bodovacka v1.2.asm
- (13.13 KiB) Staženo 76 x
Môž-byť máš problém s Hardware Stack-om.
V STEST je dosť komplikovaný podprorogram. Keďže mi uniká logika neviem to celé odkrokovať. Veľa-krát sa tam vracia cez GOTO z rôznych miest. Ak sa postupne ten pointer HW-stacku neposúva je to O.K. Ak áno je to K.O.
Sleduj Hardware stack, nesmie sa preplniť, ani podtiecť a mal by sa vracať do základnej polohy.
Pri volaní CALL sa tam ukladá návratová adresa a posunie sa pointer.
RETURN si vyberie adresu zníži pointer.
Niektoré-odladené časti (čakačky) preskakuj pomocou Break-pointov.
Akú verziu MPLAB-u používaš?
V STEST je dosť komplikovaný podprorogram. Keďže mi uniká logika neviem to celé odkrokovať. Veľa-krát sa tam vracia cez GOTO z rôznych miest. Ak sa postupne ten pointer HW-stacku neposúva je to O.K. Ak áno je to K.O.
Sleduj Hardware stack, nesmie sa preplniť, ani podtiecť a mal by sa vracať do základnej polohy.
Pri volaní CALL sa tam ukladá návratová adresa a posunie sa pointer.
RETURN si vyberie adresu zníži pointer.
Niektoré-odladené časti (čakačky) preskakuj pomocou Break-pointov.
Akú verziu MPLAB-u používaš?
- Přílohy
-
- BODOVačka.JPG
- (277.4 KiB) Staženo 53 x
Tak vam vsetkym dakujem velmi pekne za ochotu a pomoc.
Pouzivam MPLABX.
Ked sa mi podarilo zobrazit GPRegistre, tak som problem odhalil.Samozrejme som robil blbost - Upravoval som premennu programom a zaroven podprogramom. Pre podoprogram som si spravil dalsie premenne a tie potom kopirujem do P1, P2, P3.
Procesor - tebe este raz vdaka za trpezlivost.
STEST len testuje tlacidla a blika desatinou bodkou na displeji.
Tu je video - program je urcenu na zvaracku https://www.youtube.com/watch?feature=y ... pp=desktop
Da sa nastavovat cas predzvaru(rychle blikanie bodky) a aj samotny cas zvaru(hlavna smycka).
Pouzivam MPLABX.
Ked sa mi podarilo zobrazit GPRegistre, tak som problem odhalil.Samozrejme som robil blbost - Upravoval som premennu programom a zaroven podprogramom. Pre podoprogram som si spravil dalsie premenne a tie potom kopirujem do P1, P2, P3.
Procesor - tebe este raz vdaka za trpezlivost.
STEST len testuje tlacidla a blika desatinou bodkou na displeji.
Tu je video - program je urcenu na zvaracku https://www.youtube.com/watch?feature=y ... pp=desktop
Da sa nastavovat cas predzvaru(rychle blikanie bodky) a aj samotny cas zvaru(hlavna smycka).
Ake jednotky vlavo,?Nechapem ...Atlan píše:Tak neviem ale to je tvoj program? Preco su tie cisla zarovnane v lavo? Normalne su jednotky v pravo a nie v lavo. A hlavne sa nepremiestnuju
Ano, program je moj, napisal som ho od prvej do poslednej bodky ja.
Zacal som so zobrazenim cisla na LED displayi, potom multiplex a potom sa to nabalovalo.
Este si vyskusam ukladanie do eeprom a budem spokojny.
Verim tomu ,ze program by sa dal spravit jednoduchsie a mal som aj ja uz teraz ku koncu nejake napady, ale to by som ho musel prekopat cely.
Ak by som to robil, tal by som vyrobil novy hardware a skusil to s LCD displayom - tam by som mal vela moznosti sa naucit nove veci.Taktiez by som volil asi iny typ procesora...
Je myšleno toto. Jinak je jasný, že jak budeš postupovat v programováni, tak budeš zpětně i vidět, jak jsi to předtím dělal zbytečně složitě, a mnohdy nevhodně. Tomu se říká vývoj. Jen s těmi komentáři opravdu nešetři, teď jsou zbytečný, ale za dva měsíce poté, co ten program opustíš a k tomu vyprodukuješ nějaký jiný, se to začne z hlavy ztrácet a pak budeš vždy tápat, proč že jsi to takto napsal apod. ...
- Přílohy
-
- jedn.png
- Totok
- (53.66 KiB) Staženo 42 x
Žádnej učenej z nebe nespadl ...
Aha, jasne - je to pravda, prerobim to.
Tie komentare - tak ja neviem ani co by som tam viac komentoval.Vsetko co ma svoju osobitu ulohu je okomentovane.
Inac s tym tapanim mas uplnu pravdu - staci ak si za to sadnem o dva tyzdne a uz mam niekde problem. Skusim to tam teda okomentovat rozsiahlejsie.
Tie komentare - tak ja neviem ani co by som tam viac komentoval.Vsetko co ma svoju osobitu ulohu je okomentovane.
Inac s tym tapanim mas uplnu pravdu - staci ak si za to sadnem o dva tyzdne a uz mam niekde problem. Skusim to tam teda okomentovat rozsiahlejsie.
Tak spominane problemy odstranene.
No dalej by som sa rad opytal ako sa riesi nieco taketo, len neviem ci sa mi to podari vysvetlit:
Mam hlavny program A.
V nom podoprogram B, ktory ma dalsie 3 podprogramy -C, D, E.
Skocim z programu A do podprogramu B.
V nom skocim do C.
Vyskocim z C priamo do A.
Co by som chcel, je dosiahnut aby som pri najblizsom skoku do B skocil na miesto z ktoreho som naposledy vysiel ,teda do C.
Cize nieco ako ulozit do registra info , ze z ktore ho podprogramu som vyskocil a pri najblizsom navrate tuto hodnotu nacitat a skoci na navestie.
No dalej by som sa rad opytal ako sa riesi nieco taketo, len neviem ci sa mi to podari vysvetlit:
Mam hlavny program A.
V nom podoprogram B, ktory ma dalsie 3 podprogramy -C, D, E.
Skocim z programu A do podprogramu B.
V nom skocim do C.
Vyskocim z C priamo do A.
Co by som chcel, je dosiahnut aby som pri najblizsom skoku do B skocil na miesto z ktoreho som naposledy vysiel ,teda do C.
Cize nieco ako ulozit do registra info , ze z ktore ho podprogramu som vyskocil a pri najblizsom navrate tuto hodnotu nacitat a skoci na navestie.
Tak som nakreslil schemu.
Cize A je hlavna cast, ktora je spolocna pre A1,A2 , Ax...
V A1, A2 ,Ax... mulltiplexuje displej, vklada pemenne do registrov pre cas zvaru a testuje tlacidla. Po stlaceni prislusneho tlacidla skoci vyssie,alebo nizsie popr.skoci na samotnu sekvenciu zvaru.
V B sa deje v podstate to iste akurat nie mozne vyvolat samotne zvaranie - netestuje sa tu tlacidlo "weld".
Medzi A a B prepinam simultanym stlacenim oboch tlacidiel "down ""up"
Cize teraz skocim z A do B ,nastavim cas predzvaru a vratim sa spet. Avsak teraz odkazujem na stale to iste miesto A1 ,alebo B1.
A chcel by som to spravit tak, ze skocim do B.
Tam skocim na B2.
Z B2 sa vratim do A.
A ak znova skocim do B, tak by som potreboval aby som skocil rovno na B2-na poziciu ktoru som naposledy opustil.
Cize A je hlavna cast, ktora je spolocna pre A1,A2 , Ax...
V A1, A2 ,Ax... mulltiplexuje displej, vklada pemenne do registrov pre cas zvaru a testuje tlacidla. Po stlaceni prislusneho tlacidla skoci vyssie,alebo nizsie popr.skoci na samotnu sekvenciu zvaru.
V B sa deje v podstate to iste akurat nie mozne vyvolat samotne zvaranie - netestuje sa tu tlacidlo "weld".
Medzi A a B prepinam simultanym stlacenim oboch tlacidiel "down ""up"
Cize teraz skocim z A do B ,nastavim cas predzvaru a vratim sa spet. Avsak teraz odkazujem na stale to iste miesto A1 ,alebo B1.
A chcel by som to spravit tak, ze skocim do B.
Tam skocim na B2.
Z B2 sa vratim do A.
A ak znova skocim do B, tak by som potreboval aby som skocil rovno na B2-na poziciu ktoru som naposledy opustil.
- Přílohy
-
- Bodovacka.png
- (15.51 KiB) Staženo 65 x
Naposledy upravil(a) dudo02 dne 24 úno 2016, 05:44, celkem upraveno 1 x.