PIC16F628A - zmena hodnoty v registroch
Moderátor: Moderátoři
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
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...
- Přílohy
-
- Bodovacka v1.2.asm
- (13.13 KiB) Staženo 111 x
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 105 x
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=youtu.be&v=KEIPjKcr7p0&app=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...
- Přílohy
-
jedn.png- Totok
- (53.66 KiB) Staženo 67 x
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.
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.
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 92 x