Ísť na začiatok.
prihlásenie:
Registrácia  |  Zabudnuté heslo
tu sa nachádzate: hlavná stránka  rôzne  téma
kategórie:  

Mandelbrotov fraktál ;)

29
reakcií
132
prečítaní
Tému 4. mája 2022, 11:32 založil EnaXnaY.


1.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 11:32 avatar
Kto sa chce pohrať s fraktálom, vytvoril SOM generátor : www.dzio.sk Tento odkaz smeruje mimo DF.sk


2.
označiť príspevok

admin muž
   4. 5. 2022, 17:59 avatar
Ďaleko užitočnejšie, keď v assembleri vyriešiš napr. ako vydeliť viacbytový deliteľ viacbytovým delencom.


3.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:05 avatar
V assembleri neviem programovať


4.
označiť príspevok

admin muž
   4. 5. 2022, 18:07 avatar
Assembler je základ 8 bitovej komunikácie.
Súhlasí EnaXnaY


5.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:13 avatar
Nepotrebujem riešiť také low level záležitosti


7.
označiť príspevok

admin muž
   4. 5. 2022, 18:15 avatar
Každý kto chce vedieť, ako funguje digitálny svet, to bude riešiť. Ostatní používajú už naprogramované kalkulačky.
.


8.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:16 avatar
Hej, to uznávam, kedysi sme sa to učili na výške, ale MŇA skorej zaujímalo programovanie apiek na vyššej úrovni


6.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:14 avatar
Tak ešte SOM dnes nakódil game of life : www.dzio.sk Tento odkaz smeruje mimo DF.sk


9.
označiť príspevok

admin muž
   4. 5. 2022, 18:21 avatar
Pre PIC to funguje takto:

To, čo je za bodkočiarkami sú poznámky, ktoré kompilátor ignoruje.

Slovo "Vydelenie" je názov podprogramu.

;*****************************************************************************************************************
;*************************** DELENIE VIACBYTOVEHO DELENCA VIACBYTOVYM DELITELOM **********************************
;*****************************************************************************************************************

;
;Toto delenie pracuje na principe odpocitavania bajtov delitela od bajtov delenca az do pretecenia. Vtedy...
;...nastane vratenie hodnoty o pretecenu ciastku a posun o 1 smerom k nizsim bajtom delenca k dalsiemu odpocitavaniu.
;Pocitadla rozprestrete pomedzi bajty delenca pocitaju pocet odpocitani na prislusnych poziciach (vaahach) delenca.
;-----------------------------------------------------------------------------------------------------------
;-Adresa zaciatku bajtov delenca sa zadava do premennych ADRESA_H_DELENCA_A_VYSLEDKU a ADRESA_L_DELENCA_A_VYSLEDKU.
;-Adresa zaciatku bajtov delitela sa zadava do premennych ADRESA_H_DELITELA a ADRESA_L_DELITELA.
;-Pocet bajtov delenca/delitela sa zadava do symbolickej konstanty "Dlzka_delenca".
;-Potom je mozne vlozit konkretne cisla delenca a delitela od prislusnych adries (posunom FSR a vkladanim INDF).
;-Nenulovych bajtov delitela moze byt samozrejme menej, nez "Dlzka_delenca". Nulove sa automaticky vylucia.
;-Delenim nulou sa proces delenia automaticky obchadza.
;-Pri delenci i deliteli plati zasada, ze bajt s najnizsou adresou je najnizsi (najmenej vyznamny).
;-Adresny priestor delenca potrebuje dvojnasobnu dlzku, lebo medzi jeho bajty su vlozene pocitadla vysledku.
;-Vysledok sa vo finale zapise na adresy delenca - tj. priestor delenca je prepisany vysledkom (podielom).
;
Vydelenie
banksel POCET_MIEST
;Rozlozenie registrov delenca tak, aby medzi nimi bola medzera pre registre podielu (vysledku).
movlw Dlzka_delenca
movwf POCET_MIEST
; movlw Adr_H_sub2
movf ADRESA_H_DELENCA_A_VYSLEDKU,w
movwf FSR0H
; movlw Adr_L_sub2-1+2*Dlzka_delenca+2
movlw 2*Dlzka_delenca+2-1
subwf ADRESA_L_DELENCA_A_VYSLEDKU,w
movwf FSR0L
; movlw Adr_L_sub2-1
decf ADRESA_L_DELENCA_A_VYSLEDKU,w
movwf FSR0L
rozlozenie
;presun na posledny byte delenca
movf POCET_MIEST,w
addwf FSR0L
;skopirovanie hodnoty toho byte a vynulovanie
movf INDF0,w
movwf TMP
clrf INDF0
;dalsi posun v pamati o dlzku delenca v bajtoch
movf POCET_MIEST,w
addwf FSR0L
;vlozenie hodnoty skopirovaneho bajtu tam
movf TMP,w
movwf INDF0
;vynulovanie nasledujucej pozicie (kvoli pripadneho obsahu v medzerach vyhradenych pre pocitadla)
incf FSR0L,f
clrf INDF0
decf FSR0,f
;navrat na zaciatok
movf POCET_MIEST,w
subwf FSR0L
subwf FSR0L
;znizenie nasledujuceho posunu o 1
decfsz POCET_MIEST
goto rozlozenie
;Zistenie dlzky delitela (pocet nenulovych cislic - tj. registrov). Zacina sa od dlzky, aku ma delenec minus 1.
;START adresy
; movlw Adr_H_delitel
movf ADRESA_H_DELITELA,w
movwf FSR1H
; movlw Adr_L_delitel + Dlzka_delenca
movlw Dlzka_delenca
addwf ADRESA_L_DELITELA,w
movwf FSR1L
;Pociatocna dlzka delitela rovnaka ako delenca
movlw Dlzka_delenca
movwf DLZKA_DELITELA
opakuj_zistovanie_dlzky
decf FSR1L,f
movf INDF1,w
btfss STATUS,Z
goto vyskoc_zo_zistovania
decfsz DLZKA_DELITELA,f
goto opakuj_zistovanie_dlzky
vyskoc_zo_zistovania
;****************** OSETRENIE DELENIA NULOU **********************
;Ked ani jeden register delitela nema nenulovu hodnotu, je nulovy. Vtedy preskoc cele delenie.
movf DLZKA_DELITELA,w
btfsc STATUS,Z
goto preskoc_cele_delenie
;===================================== VYPOCET DELENIA ========================================
;Vydelenie delenca delitelom a ziskanie vysledku (podielu)
;movlw Dlzka_delenca - DLZKA_DELITELA + 1
movf DLZKA_DELITELA,w
sublw Dlzka_delenca + 1
movwf POCET_MIEST
; adresa delenec, podiel
;Adr. +1(p)
; movlw Adr_H_sub2
movf ADRESA_H_DELENCA_A_VYSLEDKU,w
movwf FSR0H
; movlw Adr_L_sub2 + 2*Dlzka_delenca
movlw 2*Dlzka_delenca
addwf ADRESA_L_DELENCA_A_VYSLEDKU,w
movwf FSR0L
;adresa delitela
;Adr.Dn +1
; movlw Adr_H_delitel
movf ADRESA_H_DELITELA,w
movwf FSR1H
; movlw Adr_L_delitel + DLZKA_DELITELA
movf DLZKA_DELITELA,w
; addlw Adr_L_delitel
addwf ADRESA_L_DELITELA,w
movwf FSR1L
; Bajty delenca sa posuvaju o 2n-1 pozicii, lebo na 2n-2 poziciach su v pamati pocitadla registrov vysledku
; Bajty delitela sa posuvaju o n-1 pozicii, lebo adresne zacinaju od 0 a n nabera hodnoty 1,2,3,4,.....
delenie
;Posun adries vysledku, kvoli zarovnaniu jeho cisel doprava v pamati, lebo dlhsi delitel sa posuva...
;....o n-1 krat menej, nez ked ho tvori len jeden register. Najvyssi bajt delitela zacina odcitavanim...
;...od najvyssieho bajtu delenca. Postupne sa posuva po delenci smerom k nizsim cislam. Konci sa, ked...
;....sa najnizsi bajt delitela odpocitava od najnizsieho cisla delenca
;movlw DLZKA_DELITELA - 1
decf DLZKA_DELITELA,w
movwf TMP
lslf TMP,w
subwf FSR0L,f
; inkrementacia registra podielu (vysledku) +1
incf INDF0,f
;navrat ukazatela v pamati spat.
lslf TMP,w
addwf FSR0L,f
;movlw DLZKA_DELITELA
movf DLZKA_DELITELA,w
movwf POCET_BAJTOV_DELITELA
clrf AKTUALNY_BAJT_DELITELA
posun_bajtov_delitela
;n = 1,2,3,....
incf AKTUALNY_BAJT_DELITELA,f ;n = AKTUALNY_BAJT_DELITELA
;posun adresy delenca o n pozicii nizsie (v pamati je to pozicia 2n-1)
lslf AKTUALNY_BAJT_DELITELA,w ;*2
subwf FSR0L,f
incf FSR0L,f ;-1
;posun adresy delitela o n pozicii nizsie. (Bajty delitela zacinaju od nuly, preto odpocitavam 1)
movf AKTUALNY_BAJT_DELITELA,w ;-1
subwf FSR1L,f
;Odpocet hodnoty registra delitela od hodnoty registra delenca
movf INDF1,w
subwf INDF0,f
btfss STATUS,C
bsf Odpocet_povoleny
btfsc STATUS,C
bcf Odpocet_povoleny
;----------------------------
;Automaticke znasobovanie vnorena registrov pri viacmiestnom deliteli
;odpocet bajtov od aktualnej polohy bajtu delenca a delitela smerom hore, az po najvyssi bajt delenca.
movf AKTUALNY_BAJT_DELITELA,w
movwf POCET_VNORENI
opakuj_odpocet
;posun adries delenca hore az po najvyssi bajt
movlw .2 ;
addwf FSR0L,f ;
;Vyssi register sa odpocita len vtedy, ked nizsi pretiekol
btfss Odpocet_povoleny
goto preskoc_vykonanie_odpoctu
;odpocitanie 1 od registra vyssie
movlw .1
subwf INDF0,f
btfss STATUS,C
bsf Odpocet_povoleny
btfsc STATUS,C
bcf Odpocet_povoleny
preskoc_vykonanie_odpoctu
decfsz POCET_VNORENI
goto opakuj_odpocet
;--------------------
;Ak retazec dekrementacii dosiahol najvyssi register delenca (tj. boli za nim len nuly), vykonaj...
;...vratenie hodnot bajtov delitela do aktualnych bajtov delenca od toho ktory sposobil...
;...pretecenie, smerom vyssie - a opusti delenie. (Ten co sposobil pretecenie sa musi naspat add...
;...pripocitat kvoli pretecenej ciastke. Ostatne pripadneee vyssie sa len vkladaju.)
btfss Odpocet_povoleny
goto preskoc_opustenie_delenia
;Vrat do bajtu +2(Delenca) po preteceni spat nulu. (Ten musi byt vzdy nulovy.)
incf INDF0,f
;Navrat ukazatela spat na adresu bajtu delenca, pred ktorym vyniklo retazove pretecenie.
lslf AKTUALNY_BAJT_DELITELA,w ;*2
subwf FSR0L,f
;vrat hodnotu bajtu delenca ktory pretiekol spat o hodnotu bajtu delitela.
movf INDF1,w ; nacitanie registra delitela
addwf INDF0,f ; pripocitaj (vrat) zvysok hodnoty
;---------------------
;navrat hodnoty dalsich vyssich bajtov delitela do delenca, pred bajtom, ktory sposobil...
;...retazove pretecenie. Ak neexistuju vyssie bajty, tj. pretecenie sposobil najvyssi, tento...
;...proces sa preskoci.
movlw .1
subwf AKTUALNY_BAJT_DELITELA,w
btfsc STATUS,Z
goto preskoc_navrat
;Vlozenie zvysnych (vyssich) bajtov spat do delitela
decf AKTUALNY_BAJT_DELITELA,w
movwf POSUN_V_DELITELI
opakuj_vkladanie
;Subezny posun adries delenca a delitela
movlw .2
addwf FSR0L
incf FSR1L,f
;Vkladanie hodnot delitela na prislusne adresy bajtov delenca
movf INDF1,w
movwf INDF0
decfsz POSUN_V_DELITELI,f
goto opakuj_vkladanie
;Vratenie ukazatelov adries spat.
decf AKTUALNY_BAJT_DELITELA,w
movwf TMP
subwf FSR1L,f
lslf TMP,w
subwf FSR0L
preskoc_navrat
;-----------------------------
;navrat adresy delenca o n pozicii (v pamati je to pozicia 2n-1)
lslf AKTUALNY_BAJT_DELITELA,w ;*2
addwf FSR0L,f
decf FSR0L,f ;-1
;navrat adresy delitela o n pozicii. (Bajty delitela zacinaju od nuly, preto odpocitavam 1)
;movlw Adr_L_delitel + DLZKA_DELITELA
movf DLZKA_DELITELA,w
; addlw Adr_L_delitel
addwf ADRESA_L_DELITELA,w
movwf FSR1L ;posun pozicie v registroch delenca o 1 menej
goto vyskoc_z_delenia
preskoc_opustenie_delenia
;navrat adresy delitela o n pozicii. (Bajty delitela zacinaju od nuly, preto odpocitavam 1)
;movlw Adr_L_delitel + DLZKA_DELITELA
movf DLZKA_DELITELA,w
; addlw Adr_L_delitel
addwf ADRESA_L_DELITELA,w
movwf FSR1L ;posun pozicie v registroch delenca o 1 menej
decf FSR0L,f
decfsz POCET_BAJTOV_DELITELA
goto posun_bajtov_delitela
goto delenie
vyskoc_z_delenia
;Posun adries vysledku, kvoli zarovnaniu jeho cisel doprava v pamati pri deliteloch dlhsich ako 1 bajt.
;movlw DLZKA_DELITELA - 1
decf DLZKA_DELITELA,w
movwf TMP
lslf TMP,w
subwf FSR0L,f
;odpocitanie 1 od pocitadla podielu (vysledku), lebo pretecenie napocitalo 1 naviac
decf INDF0,f
;Navrat ukazatela v pamati spat na povodne miesto.
lslf TMP,w
addwf FSR0L,f
;posun v registroch delenca o 1 poziciu nizsie (sme na pozicii pocitadla podielu (vysledku))
movlw .2
subwf FSR0L,f
decfsz POCET_MIEST
goto delenie
;================================================================================================
preskoc_cele_delenie
;Zlozenie, poukladanie registrov podielu (vysledku) vedla seba. (Povodny obsah je premazany.)
movlw Dlzka_delenca-1
movwf POCET_MIEST
clrf TMP_TMP
; movlw Adr_H_sub2
movf ADRESA_H_DELENCA_A_VYSLEDKU,w
movwf FSR0H
; movlw Adr_L_sub2 + 2*Dlzka_delenca
movlw 2*Dlzka_delenca
addwf ADRESA_L_DELENCA_A_VYSLEDKU,w
movwf FSR0L
zlozenie
movlw .2
addwf TMP_TMP
movf TMP_TMP,w
subwf FSR0L
movf INDF0,w
movwf TMP
movlw .1
subwf TMP_TMP
movf TMP_TMP,w
addwf FSR0L
movf TMP,w
movwf INDF0
decfsz POCET_MIEST
goto zlozenie
movlw Dlzka_delenca
movwf POCET_MIEST
;vymazanie obsahu druhej polovice pamate "delenec,podiel".
premazanie_zvysku
decf FSR0L,f
clrf INDF0
decfsz POCET_MIEST
goto premazanie_zvysku
;Skopirovanie vysledku na od zaciatku adresy
movlw Dlzka_delenca
movwf POCET_MIEST
movf ADRESA_H_DELENCA_A_VYSLEDKU,w
movwf FSR0H
movf ADRESA_L_DELENCA_A_VYSLEDKU,w
movwf FSR0L
movf ADRESA_H_DELENCA_A_VYSLEDKU,w
movwf FSR1H
movf ADRESA_L_DELENCA_A_VYSLEDKU,w
addlw Dlzka_delenca+1
movwf FSR1L
opakuj_kopirovanie_podielu
movf INDF1,w
movwf INDF0
clrf INDF1
incf FSR0L,f
incf FSR1L,f
decfsz POCET_MIEST,f
goto opakuj_kopirovanie_podielu
; banksel PORTA
return


10.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:23 avatar
To mi pripomína BASIC, s ktorým SOM začínal, teraz už čisto len objektovo kódim


11.
označiť príspevok

admin muž
   4. 5. 2022, 18:23 avatar
Trvalo to 3 mesiace, než som tento podprogram dokončil tak, aby fungoval....


12.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:27 avatar
Hej, ono keď tam sú samé skoky z miesta na miesto, tak je ťažké sa v tom zorientovať


13.
označiť príspevok

admin muž
   4. 5. 2022, 18:27 avatar
Výsledkom bol generátor, ktorý bolo možné ladiť v jednotlivých krokoch.


14.
označiť príspevok

admin muž
   4. 5. 2022, 18:28 avatar


15.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:28 avatar
JA SOM dnes spáchal ten mandelbrot asi za 2 hoďky, ale to vďaka tomu, že už SOM to raz riešil v jave, tak len SOM prepísal kód do php a javascriptu


16.
označiť príspevok

admin muž
   4. 5. 2022, 18:30 avatar


17.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:31 avatar
Takýmto veciam sa venuje otec, on dokáže zo súčiastok poskladať ovládač na motor, JA tomu veľmi nerozumiem


20.
označiť príspevok

admin muž
   4. 5. 2022, 18:36 avatar
Assembler je veľmi jednoduchý, ale vyžaduje viac krokov. Každý krok je jedna inštrukcia. Jeden príkaz. Vyššie jazyky ako C, PHP, JAVA, používajú už funkcie, ktoré združujú mnoho príkazov (inštrukcii) procesora.


21.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:37 avatar
Áno tie vyššie jazyky sú nadstavba už, MŇA baví riešiť "biznis" logiku

Tieto základné funkcie už sú naprogramované, tak sa im nepotrebujem venovať


22.
označiť príspevok

admin muž
   4. 5. 2022, 18:41 avatar
V assembleri pracuješ s bitmi procesora, ktorý máš "na stole". C-éčko ti síce uľahčuje prácu, ale nemáš pod kontrolou RT


23.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:46 avatar
No tak na to, čo vytváram mi to ani veľmi netreba, napríklad včera SOM riešil zaujímavú výzvu, ako sa napojiť na google aby mi automaticky sťahovalo štatistiky reklamy, to SOM sa riadne vytrápil ale nakoniec SOM to dal
Súhlasí admin


24.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:50 avatar
Najviac ma baví evidovanie informácií, takže si vzhľadom na to vytváram rôzne apky


28.
označiť príspevok

admin muž
   4. 5. 2022, 18:58 avatar
Google je perfektná vec, ale predstav si, že niekto bude po tebe chcieť, aby si komunikoval s klávesnicou, displejom, GSM modulom, GPS modulom, ADC prevodníkom. DAC pevodníkom, atp... S nimi sa komunikuje najčastejšie pomocou SPI, I2C, USART.... A potom nasleduje obslužný program. Toto sú dôležité veci.


29.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:59 avatar
To by SOM asi nezvládol len tak ľahko, musel by SOM sa najprv naučiť ako na to


18.
označiť príspevok

admin muž
   4. 5. 2022, 18:32 avatar


19.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:34 avatar
Pekné to je


25.
označiť príspevok

admin muž
   4. 5. 2022, 18:51 avatar
Predstav si, že máš vytvoriť komunikačný software s teplotným čidlom DS18B20 datasheets.maximintegrated.com Tento odkaz smeruje mimo DF.sk
Komunikuje s účastníkom po 1 Wire zbernici, ktorá používa časové sloty. Na to je najlepší práve assembler, aby si zostrojil obslužný program.

http://www.youtube.com/watch?v=GvRrivpDnr4 Tento odkaz smeruje mimo DF.sk


26.
označiť príspevok

admin muž
   4. 5. 2022, 18:52 avatar
...podobne je to s obsluhou toho displeja a klávesnice.


27.
označiť príspevok

EnaXnaY muž
   4. 5. 2022, 18:52 avatar
Tak na to by SOM sa nechytal, elektrotechniku SOM skoro nedal na výške, musel SOM opakovať predmet


30.
označiť príspevok

admin muž
   4. 5. 2022, 19:04 avatar
Už len teraz, bomba odpaľovaná pomocou kódu, ktorý posielam do RFM69W. Nie je to síce LongRange, ale aj tak to má dosah kilometre a pomáham Ukrajinskej armáde. LongRange moduly RFM95W mám teraz na stole v bunkri a robím k tomu firmvare do PIC16F1847
váš príspevok

Pridávať príspevky môžu iba zaregistrovaní účastníci fóra.

Som zaregistrovaný

nick: heslo:
zostať trvalo prihlásený    
Nie som zaregistrovaný

Vaša prezývka:  

Po zaregistrovaní budete automaticky presmerovaní do tejto témy.

najnovšie príspevky na celom fóre

dnes, 10:09,  69- ahoj scarlette *21 Asi to bude stačiť v skrátenom podaní, lebo ak si dobre pamätám,...
dnes, 09:37,  "Píšem o vrchnostiach, nie o kresťanoch. Text ...Lebo nie nadarmo (vrchnosť) nosí meč,...
dnes, 08:57,  Pre Boha sú tisíce rokov ako včerajší deň.
dnes, 08:55,  Dosť slabú. Západné vrchnosti sú nad ním.
včera, 22:35,  15. ta vrchnost sa sklada tiez z jednotlivcov . chces aplikovat texty z obdobia pred vyse 2000...
včera, 22:33,  13. aj Rusko ma vladu *57
včera, 22:29,  Píšem o vrchnostiach, nie o kresťanoch. Text ...Lebo nie nadarmo (vrchnosť) nosí meč, lebo...
včera, 22:27,  12. to patri este do SZ . krestan by sa mal riadit riadit krestanskou filozofiou JK. *19...
včera, 22:24,  Boh vykonáva spravodlivosť na zemi cez vrchnosti (vlády).
včera, 22:20,  TvojOponent19 ako by si charakterizoval putinov rezim , ako fasisticky? *21 Na verejnosti...
včera, 22:19,  Správny preklad je nezavraždíš. Inak by Boh išiel sám proti sebe, keď dal zapísať:...
včera, 21:46,  62. ako sa prejavuje ta "spiritualita" ? *21
včera, 21:13,  66- klameš sám seba havrane a teda nemá význam na všetko reagovať. Nie si schopný...
včera, 20:31,  1. ukrajinci nazyvaju ruskych vojakov orkovia *19
včera, 20:29,  8. ale v biblii je jaj desatoro kde je nezabijes *38 a prestupenim pachas hriech . cize veriaci...
včera, 19:46,  USA tlači dolare Sudruhu červený vylagrovaný.....si presný kovaný ruský trol a ani o tom...
včera, 19:24,  "To o čom ty píšeš sa týka veriacich.".... Ok, tak ak sa toto týka IBA...
včera, 18:05,  Bibliu netreba vysvetľovať. Biblii treba veriť. Až potom môžeš niečo vysvetľovať. Buď...
včera, 18:00,  Vysvetlenie veršu si dostal. Boh necháva nespasených konať neprávosti. Zjavenie apoštola...
včera, 17:57,  Bibliu treba brať tak, ako je napísaná. Hore citovaný verš v nej je. Vrchnostiam sveta dal...
neprehliadnite
vyhľadávanie
 
Nadmerné upieranie sa o ideály brzdí vlastný intelektuálny rast!
Prevádzkuje df.sk | TOPlist
(115 430 bytes in 0,192 seconds)