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í 

PIC16F628A - zmena hodnoty v registroch
Jdi na stránku Předchozí  1, 2, 3, 4  Další
 
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
dudo02



Založen: Feb 27, 2007
Příspěvky: 991

PříspěvekZaslal: st únor 24 2016, 5:52    Předmět: Citovat

Tak som zmenil skoro vsetky GOTO na CALL, ale je to v podstate jedno, lebo nepouzivam RETURN.
Ja totiz idem z :
A1 na A0,alebo A2.
A2 na A1,alebo A3.
Atd...

To vnorenie mam max. 3-urovnove.
Skusim sa spyta inac - je mozne ulozit do registrov nazov navestia? Alebo cislo riadku v programe?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4513
Bydliště: Košice

PříspěvekZaslal: st únor 24 2016, 7:06    Předmět: Citovat

Nastuduj si vyvojove diagramy lebo z toho nikto nevyjde. Na test tlacidiel si urob podprogram a volaj hoo call return. Multiplex displeja maj v preruseni kludne odvodenom od sinusovky.
Proste mas zlu koncepciu. Program sa ma pisat od od vyvojoveho diagramu.
Neviem co je B1 a B2 tak ze tazko radit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dudo02



Založen: Feb 27, 2007
Příspěvky: 991

PříspěvekZaslal: st únor 24 2016, 8:11    Předmět: Citovat

Tak som skusil okomentovat B1.Ostane Bcka su rovnake, rozdiel je v inych hodnotach vkladanych do registrov a odkazuju na ine navestia pri stlaceni UP, alebo DOWN.

A1 az Ax su to iste ,akurat sa v nich navyse testuje tlacidlo WELD, ktore zavola podprogram samotnej sekvencie zvarania. Tu sa vkladaju hodnoty do registrov samotneho zvarania.


Da sa teda ulozit nazov navestia, alebo cislo riadku ako hodnota do registra? - Alebo sa pytam blbost?
Nie je to nic, co by som nutne potreboval,len ma to zaujima.

Teraz ak chcem nastavit predzvar, stlacim simultalne UP/DPWN a skocim do B1(10ms). Tam preskacem do B3(30ms) a stade sa vratim na A.
Pri opetovnej potrebe nastavenia predzvaru vsak opet skocim na B1.

Rad by som vsak skocil na B3, aby som vedel aka bola posledna nastavena hodnota.
No moja myslienka je taka,ze pri opustani B3, si niekde ulozim ze som z neho vyskocil a pri novom skoku z A do B si tuto hodnotu nacitam.
kód:

PRE10   CALL    PRESTEST    ;PODPROGRAM TESTUJUCI SIMULTANNE STLACENIE UP/DOWN.
   
   MOVLW   0XCF       ;VLOZENIE HODNOTY DO REGISTRA CASOVEJ SMYCKY PREDZVARU
   MOVWF   Z1       ;
   MOVLW   0X08       ;
   MOVWF   Z2       ;
   MOVLW   0X1       ;
   MOVWF   Z3       ;VLOZENIE HODNOTY DO REGISTRA CASOVEJ SMYCKY PREDZVARU
   
   MOVLW   0X7F       ;MULTIPLEX DYSPLAY - ZOBRAZENA HODNOTA 10ms
   MOVWF   PORTB       ;
   MOVWF   PD1       ;
   BSF   D1       ;
   CALL    TIME1       ;   
   BCF   D1       ;
   MOVLW   0X4F       ;
   MOVWF   PORTB       ;
   MOVWF   PD2       ;
   BSF   D2       ;
   CALL    TIME1       ;
   BCF   D2       ;
   MOVLW   0X40       ;
   MOVWF   PORTB       ;
   MOVWF   PD3       ;
   BSF   D3       ;
   CALL    TIME1       ;
   BCF   D3       ;MULTIPLEX DYSPLAY - ZOBRAZENA HODNOTA 10ms
   
   BTFSS   UP       ;TEST TLACIDLA UP, AK JE STLACENE ZAVOLAJ 20(B2)
   CALL    PRE20
   BTFSS   DOWN       ;TEST TLACIDLA DOWN, AK JE STLACENE ZAVOLAJ 0(B0)
   CALL    PRE0
   CALL    PRE10       ;NEBOLO STLACENE NIC,VRAT SA NA ZACIATOK A VSETKO ZNOVA.



Bodovacka.png
 Komentář:

Stáhnout
 Soubor:  Bodovacka.png
 Velikost:  20.94 kB
 Staženo:  78 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4513
Bydliště: Košice

PříspěvekZaslal: st únor 24 2016, 10:34    Předmět: Citovat

Tak teoreticky vies skocit kde len chces instrukciou GOTO $-x kde x cislo o ktore sa to posunie, znamienko predtym udava ci bude skok v pred alebo v zad. Inak strasna pracascina.

Nechapem preco si to tak komplikujes a pouzivas dve tlacidla a to ako fakt.
pouzitie 4 tlacidiel je ok a na takych hovadinach sa nesetri.
Daj schemu mam. To simultane tlacenie vyhod daj tam este jedno tlacisdlo a cez 2 diody ho zapoj na tie dva piny.

Cely tvoj problem je hlavne ze tam mas malo tlacidiel.

Ale je aka moznost zapnes to a nacitas z registra pre *predzvar hodnotu do nejakej premenej X dalej vies tu hodnotu X menit tlacidlami hore dole tj zvecsovat zmensovat, po opetovnom simultalnom stlaceni tlacidiel horedole, i tu premenu X prekopirujes do registra *predzvar.

Teraz si nacitas hodnotu z registra pre *zvar do premenej Y a tu zase vies upravovat tlacidlami hore dole, po spolocnom stlaceni horedole zober hodnoty Y a zapis do registra *zvar

MPlab umoznu je definovat hodnoty pr iinicialixzacii, tak ze vies nadefinovat napr zvar=20 a predzvar=40 tym padom v programe pri prvom zapnuti budes nastavovat casi od tychto hodnot co je prakticke (ak das osvecene hodnoty tak nebudes nastavovat len hned zvarat)[/b]
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: čt únor 25 2016, 5:32    Předmět: Citovat

Ano, program není dobře napsaný. Protože ale nevíme, zda je toto tvůj první a poslední program nebo se tím hodláš zabývat i dál, tak nyní vezmu v potaz jen to, že jsi nějak došel k cíli a další start už nebude Laughing ... tedy vyřešíme jen tento program. Tvoje potřeba je po zajetí do sekce B skočit na takové Bx, ze kterého bylo naposledy vyskočeno. Berme v potaz, že používáš všude GOTO, což je vzhledem k tvému řešení programu "dobře". Tedy principiálně to uděláš tak, že po skoku na B se zeptáš, jaká byla poslední svářecí hodnota a dle ní skočíš do příslučného Bx. Místo hodnoty svářecího času si můžeš udělat registr třeba "Last_prog" a tam si při výstupu z Ax či Bx uložiš číslo, na které se budeš ptát v A nebo B a dle toho skočíš do Ax nebo Bx. Kapíš to?
_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dudo02



Založen: Feb 27, 2007
Příspěvky: 991

PříspěvekZaslal: čt únor 25 2016, 6:50    Předmět: Citovat

Atlan - schema v prilohe. Hardware je uz hotovy, cize tlacidlo pridavat nebudem. Ja som povodne zacinal s verziou 10polohoveho prepinaca pre casy zvaru, samotny predzvar bol konstantny. Potom som si povedal ze skusim display.Pri prvych pokusoch zvarania som zistil, ze rozsah zvaracich casov ma byt rozsiahlejsi. Taktiez samotny predzvar je dobre mat regulovatelny - hoci to nie je nijak kriticke. A tak som sa dopracoval az sem.

Jeejda - datasheet k MCU uz mam davno, za ten MPLAB vdaka, je tam vela veci, ktorim som nerozumel a este ani nerozumiem, ale tu to je popisane. Mam co studovat.

Chenzze - Je to presne tak ako pises. Toto je moj prvy program. Ja som sa aj pytal, ci by mi niekto nenacrtol vyvojovy diagram, ale par ludi mi napisalo len ich predstavu v texte, comu som vobec nerozumel. Tak som zacal, ako som vedel - so zobrazenim cislice na LED displeji, Multiplex atd...V ramci hobby uz planujem dalsi projekt, ale ak by som sa tomu chcel venovat profesionalne, tak by som celkom urcite isiel na nejaky kurz. Vo forme samouky je to zlozite a clovek si lahko spravi zle navyky v zakladoch - asi to najhorsie ,co sa pri uceni sa novych veci moze stat. Stale mi vrtalo v hlave, ako moze procesor na zaklade 0 a 1, robit take uzasne veci. Teraz ma to posunulo, do pozicie ,kde mi to uz hlavu netrapi.

Skusal som instrukciu
kód:
goto   $+Z

Kde Z je register do ktoreho ukladam hodnotu pri vyskoceni z Bx, ale nefunguje to.

citace:
Tedy principiálně to uděláš tak, že po skoku na B se zeptáš, jaká byla poslední svářecí hodnota a dle ní skočíš do příslučného Bx
Toto spravim akou instrukciou ? Pozeral som sa, ale neprisiel som na nic rozumne - len same neuspesne pokusy - uz druhy den Pako


xxx_373.png
 Komentář:

Stáhnout
 Soubor:  xxx_373.png
 Velikost:  29.69 kB
 Staženo:  90 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
procesor



Založen: Oct 02, 2009
Příspěvky: 5286
Bydliště: PO

PříspěvekZaslal: čt únor 25 2016, 10:03    Předmět: Citovat

V RAM si jeden register vyhraď pre program A a jeden pre B
napr. STA a STB. Môžeš potom uložiť až 256 programov A a 256 programov B. Pri menšom počte je to jednoduchšie. PCHL reg stačí vynulovať. Ako uvádzam nižšie od adresy 0x0080 sa zmestí 64 A-programov a 64 B-programov.

Niekde si uložíš GOTO tabuľlu (jedno za druhým) pre programy A a potom aj pre programy B
kód:

   ORG  0x0080
TAB_A  GOTO PROGA0
    GOTO PROGA1
.
.
TAB_B   GOTO  PROGB0
     GOTO  PROGB1

.
.
; v aktualnom programe B použijes  súcet STA + TAB_A takto:
     MOVLW   TAB_A
     ADDWF    STA,w
     CLRF        PCHL
     MOVWF    PCL    ; teraz sa prepíše PCL novou hodnotou a zároveň sa presunie PCHL do PCH.
; nasledovať bude inšrukcia s tabuľky TAB


Samozrejme STA a STB si ukladáš v prebiehajúcom programe.

Edit:
Aj toto sa mi zdá byť zbytočné komplikovanie.
Všetky tie "programy sú rovnaké, iba sa menia konštanty. Nevidím dôvod, aby ich obsluhovali rôzne programy.

Treba sa naučiť ukladať premenné do EERAM a späť načítavať po reštarte do RAM.

Ten multiplex segmentov by pekne mohol robiť v isr module (prerušovací systém) , podobne aj ohľadávanie tlačitok by mohlo byť od programu nezávislé (spolu s filtrovaním).
Ak by ešte aj časovanie (počítanie) bolo vyriešené prerušovacím systémom cca po 10ms (dá sa zvoliť), aj časy by sa mohli nastavovať plynule a zobrazovať v reáli o 0 po 990ms.

edit 2
A po tej schéme tu bude kopec múdrujúcich Very Happy
Zrejme ten MOC 3023 v spojení s PORTA,5 moc nefunguje.
edit 3 Asi to bude s MOC3033/3053 bez ZC
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 26 2016, 5:06    Předmět: Citovat

No takto, samozřejmě to if bude uděláno po assemblerovsku Wink


Obr.png
 Komentář:

Stáhnout
 Soubor:  Obr.png
 Velikost:  24.27 kB
 Staženo:  81 krát


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



Založen: Feb 27, 2007
Příspěvky: 991

PříspěvekZaslal: pá únor 26 2016, 11:04    Předmět: Citovat

No toto mi bolo jasne - skor som sa pytal prave na to,ako sa to da spravit v assemblery Smile .

Jeejda - nejak som to nepochopil - to by bolo vhodnejsie pouzit interny pull up?

procesor - schemu bez s rezervou. Ano mas pravdu je tam iny optoclen - randoom phase detector. Hardware je funkncny, nakolko som uz nejake akupacky pozvaral a spinanie vyzera byt v maxime - prudove narazy a bliknutie svetiel v dielni tomu nasvedcuju...

Ok,tak skusim spravit uplne novy program.
Preruseniu som sa nejako snazil vyhnut, asi kvoli tomu,ze mu uplne nerozumiem...Ale vidim ze prave prerusenie sa vyuziva velmi casto.

Ok cize:
-Hlavna smycka
kód:
start
goto   $-1


-Nastavim casovac1 na 10ms a povolim prerusenie od tohoto casovaca
-po preteceni dojde k preruseniu kde mi z hlavnej smycky skoci program na urcene miesto
-na tomto mieste spravim mutiplex a otestujem tlacidla
- pri stlaceno tlacidle :
- up,skoci program na miesto kde pripocita hodnotu 10 do registra DISPLAY
-down, skoci program na miesto kde odpocita hodnotu 10 od registra DISPLAY
-weld,skoci program na miesto kde prebehne sekvencia zvaru

-register DISPLAY sa bude pouzivat pre zobrazenie hodnoty na displeji a zaroven na casy zvarania.
Takto nejako moze byt?
citace:
Ten multiplex segmentov by pekne mohol robiť v isr module (prerušovací systém) , podobne aj ohľadávanie tlačitok by mohlo byť od programu nezávislé (spolu s filtrovaním).
Tym filtrovanim myslis co?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
procesor



Založen: Oct 02, 2009
Příspěvky: 5286
Bydliště: PO

PříspěvekZaslal: pá únor 26 2016, 18:46    Předmět: Citovat

Filtrovanie...zákmity tlačidla. To môže trvať aj dlhšie ako 20ms. Tlačidlá je dobré ošahať a stav uložiť do registra. Hlavý program si to v registri nájde, vykoná čo treba. Po každom prebehu riadiaceho cyklu si môžeš stav tlačidiel (register) presunúť do druhého registra, čím získaš info v nasledujúcom cykle štyri-info o tom tlačidle:
1- čerstvo stlačené
2-už dlhšie stlačené
3-čerstvo pustené
4-dlhšie pustené



Hlavný program beží v slučke
Podľa tlačidiel zapína porty, nastavuje časovače, zapisuje segmetové registre,vypína porty.
Stále dokola.

IT routina aktualizované časovače dekremetuje, a posiela segmetové registre na port-mux, trebárs každých 10ms, alebo aj pomalšie.

Toto používam pre začiatok a koniec IT rutiny

kód:

;**********************************************************************************
;
itvector   ORG     0x004              ; interrupt vector location
      movwf   w_temp              ; save off current W register
      swapf   STATUS,W      ; STATUS save to W   
      clrf   STATUS      ; banky do 0
      movwf   status_temp        ; save off contents of STATUS register
      movfw   PCLATH
      movwf   pclath_temp
      clrf   PCLATH
   if ITUP == 1
      pagesel   _IntRout
      goto   _IntRout
   else
;==================================================================================
   #include <Tgit60502sr.inc> ;TU JE PRERUŠOVACIA ROUTINA
;==================================================================================
   endif
RetItRut
      movfw   pclath_temp
      movwf   PCLATH
      swapf   status_temp,w
      movwf   STATUS
      swapf   w_temp,f
        swapf   w_temp,w          ; restore pre-isr W register contents
      retfie                    ; return from interrupt set up GIE


Uloží sa kontext programu (STATUS, W reg, PCHL) a potom sa všetko vráti späť, aby hlavý program mohol nerušene pokračovať.
Tie registre (w_temp, status_temp, pchl_temp) je dobré umiestniť v oblasti GPS od 0x70 aby sa nemuselo riešiť "bank-ovanie" zložito, pretože prerušenie môže vzniknúť a v inom stave ako BANK0.

Samotná IT rutina môže byť aj v inom PAGESEL0 pri väčších pamätiach, preto je tam aj inštukcia
kód:

        pagesel     IntRout
        goto          IntRout 


V prerušovacom programe dekrementuj čítače (môžeš ich mať aj viac pre rôzne použitie).

V hlavnom programe nastavíš hodnotu čítača a potom sleduješ kedy sa dopočíta k nule a vykonáš čo potrebuješ. Ku každému čítaču je dobré mať aj indikátor, že sa požaduje po uplynutí času nejaká akcia. Pri zahájení akcie sa ten indikátor zhodí (vynuluje)

Takéto macro používam v IT routine. Trebárs aj 16 časovačov TIMn =TIM0....TIM15 ( n funguje až do 32)
Každému TIMeru je priradených v registri TER0 a TER1 32 bitové pole pre do ktorého sa po dočítaní čítača zapíše jednotka.
Hlavný program sleduje tento byt (timer-flag) a vie že časovač práve dočítal.

kód:
; CASOVAC TIMn pre interupt rutinu

RTM_M      macro   n
      tstf   TIM#v(n)
      BZ   GoTIM#v(n+1)
      decf   TIM#v(n),F
      _Z_TSC
      bsf   TER#v(n/8),#v(n-(n/8)*8)
GoTIM#v(n+1)
      endm


V hlavnom programe sa časovač štartuje zase ako makro ak hodnoty časovačov sú uložené v EERAM

kód:
; Code pre Start casovaca TIM(timer) s konstantou TK(tk)

START_TIM_M   macro   timer,tk
StartTIM#v(timer)TK#v(tk)
      movlw   TK#v(tk)-H'2100'
LETR#v($)
   if  LETR#v($)/2048 == 0
      call   EEData_Read      
   else      
      pagesel p0
      call   EEData_Read   
      pagesel p1
   endif
      movwf   TIM#v(timer)
      bcf   TER#v(timer/8),#v(timer-(timer/8)*8)
      endm

EEData_Read je funkcia, ktorá vyberie z pamäte EERAM príslusnú hodnotu daného časovača. Na záver makra sa hodnota zapíše do časovača a vymaže sa (pre istotu) príslušný timer-flag-bit v registri TER0/1.
Zápis makra je zložitý, lebo platí pre každý TIM0...31 s príslušným flagom.

V programe je potom jednoduché

kód:

.
.
JeVozNaIS               ;staci ak na jednej slucke je voz - nahod TIM2,tk2            ;
      call   StartTIM2TK2   ; tk2 cca ( 0,25 - 0,5 sekundy doporuceny )
NaEndIS
.
.
      call   StartTIM12TK12
.
.   

;******************************************
;   SLUCKY
      START_TIM_M   2,2   ; staci 0,5sek
      return   
;testovanie fotosyst
      START_TIM_M   12,12   ;
      return   
;******************************************



Vyššie popísané makro casovača v IT_routine sa zapíšu napr. takto.
Na úpravu rozsahov je v príklade ešte použité ďalšie delenie pre čítače 7,8,9 a ďalšie pre 10,11,12 a tiež pomalšie pre 13, 14, 15
kód:

CasovaceIt   
; takt osc/4
;compare na hodnotu nastavenu pri inicializacii
;CCPIF
      banksel   WTCON1   ; preddelicka
      decf   WTCON1,F
      BNZ   WEndCas

      movlw   WTCON1K   ; obnov reddelicku
      movwf   WTCON1
STWCas
      clrwdt
      incf   WTCON,F   ; 62,5ms
W1Cas            ;         CWC1         CWC2
      movfw   WTCON   ;              max T   32     64     128    256    512
      andlw   CW1C   ;konstanta pre W2Cas  0X00 / 0X01 / 0X03 / 0X07 / 0X0F /
      _Z_TSS      ;                      1/2    1/4    1/8
      goto   WEndCas
            ; konstanta pre CWC1 0x01
      RTM_M   0   ;   ***31,875sek.*** krok 0,125s
      RTM_M   1   ;
      RTM_M   2
      RTM_M   3
      RTM_M   4
      RTM_M   5
      RTM_M   6
W2Cas
      movfw   WTCON
      andlw   CW2C   ;konstanta pre W2Cas  0x07
      _Z_TSS
      goto   WEndCas

      RTM_M   7   ; max. ***127,5sek. krok  0,5sek
      RTM_M   8
      RTM_M   9
W3Cas
      movfw   WTCON
      andlw   CW3C   ;konstanta pre W3Cas  0x1F
      _Z_TSS
      goto   WEndCas

      RTM_M   10   ; max.  ***510sek.  krok  2
      RTM_M   11
      RTM_M   12 
W4Cas
      movfw   WTCON
      andlw   CW4C   ;konstanta pre W4Cas  0x3F
      _Z_TSS
      goto   WEndCas

      RTM_M   13   ;***1020sek.=**8,5min krok 4s
      RTM_M   14   ; 4s krok max  1000s/  16min
      RTM_M   15
W5Cas
;      RTM_M   16   ;
;      RTM_M   17   ;   
;      RTM_M   18   ;
;      RTM_M   19   ;
;      RTM_M   20   ;
;      RTM_M   21   ;
;      RTM_M   22   ;
;      RTM_M   23   ;

WEndCas
      _TACT_S      ; idikacia ze preslo 0.125 sec / 0.0625sec
      bcf   PORTA,0
      _TMR1IF_C      ; povodne sysytemy pracovali bez CCP
      _CCP1IF_C      ; CCP sa nastavi na lub. dlzku TMR1
            ; mozno tak urychlovat cyklus riadenia
; pri 14

EndItRout
      banksel 0
   if ITUP == 1   
      pagesel   0
      goto   RetItRut
   endif


Makrá sú výhodné pri častom používaní rovnakých algoritmov nad rôznymi registrami a adresami, prípadne aj bitmi. Takéto adresovanie však je možné iba počas prekladu. Prekladač je schopný matematickými a logickými operáciami vygenerovať podľa parametrov makra adresy registrov a adresy návestí, prípadne aj bitov v registroch.


Naposledy upravil procesor dne pá únor 26 2016, 20:04, celkově upraveno 1 krát.
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 26 2016, 19:21    Předmět: Citovat

Tak zde to je. Neber to jako nejlepší řešení ale jedno z více a takové, které v tuto chvíli vstřebáš. Elegantní je to přes tu tabulku, jak bylo uvedeno výše.

kód:

   LAST_PROG EQU 0x7F
;--------------------------
   MOVLW  0x01 ; ZDE SI ZADEJ CISLO PROGRAMU, KAM CHCES SKOCIT (0-3)
   MOVWF  LAST_PROG
   MOVLW  0x01
;--------------------------
   INCF  LAST_PROG,F
         
   SUBWF  LAST_PROG,F
   BTFSC  STATUS,Z
   GOTO  LAST_PROG_0 

   SUBWF  LAST_PROG,F
   BTFSC  STATUS,Z
   GOTO  LAST_PROG_1

   SUBWF  LAST_PROG,F
   BTFSC  STATUS,Z
   GOTO  LAST_PROG_2

   SUBWF  LAST_PROG,F
   BTFSC  STATUS,Z
   GOTO  LAST_PROG_3

LAST_PROG_0
   NOP
LAST_PROG_1
   NOP
LAST_PROG_2
   NOP
LAST_PROG_3
   NOP

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



Založen: Oct 02, 2009
Příspěvky: 5286
Bydliště: PO

PříspěvekZaslal: pá únor 26 2016, 20:19    Předmět: Citovat

Pozor na pretečenie tabuľky GOTO Prog_01.... cez hranicu adriey 0x00FF. Na uplnú nezávislosť je potrebné predom upraviť aj PCLATH pri pretečení PCL. Rolling Eyes Takže-tak.
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 26 2016, 20:39    Předmět: Citovat

No máš je pěkně vyvalený Laughing Laughing Laughing
_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
procesor



Založen: Oct 02, 2009
Příspěvky: 5286
Bydliště: PO

PříspěvekZaslal: so únor 27 2016, 10:26    Předmět: Citovat

Ak si neustriehneš umiestnenie tabulky, inštrukcia AND s 0x0F nerieši preťečenie tabulky nad 0x00FF.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
procesor



Založen: Oct 02, 2009
Příspěvky: 5286
Bydliště: PO

PříspěvekZaslal: so únor 27 2016, 11:55    Předmět: Citovat

No vidíš, že si na to prišiel s tým ORG 0x000a.

A keď správne naplníš W reg to AND 0xF ti je na figu.
Pri blbom naplnení W ti to bude bežať niekde kde si nechcel.
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
Jdi na stránku Předchozí  1, 2, 3, 4  Další
Strana 3 z 4

 
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.25 sekund