začiatočník v assembleri

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
webkar
Pokročilý člen
Pokročilý člen
Príspevky: 633
Dátum registrácie: 08 Máj 2010, 00:00
Bydlisko: BA
Vek: 27

začiatočník v assembleri

Príspevok od používateľa webkar » 12 Feb 2011, 17:57

zdravím, akurát sa učím v assembleri urobil som si jednoduchý program keď stlačím tlačítko na PA0 tak sa rozvieti LEDka na PD0 akurát mi to nefunguje nič nesvieti... tu je program
.nolist
.include "m16def.inc"
.list

ser R16
ldi R18,0b00000000
out DDRA,R18
out DDRD,R16
in R19,PORTA
mov R20,R19
out PORTD,R20


vopred díki
0

Používateľov profilový obrázok
frei
Pokročilý člen
Pokročilý člen
Príspevky: 786
Dátum registrácie: 08 Feb 2010, 00:00
Bydlisko: Smižany
Vek: 31
Kontaktovať používateľa:

Príspevok od používateľa frei » 12 Feb 2011, 18:21

Tak toto isto assembler neni 8O
0

Používateľov profilový obrázok
webkar
Pokročilý člen
Pokročilý člen
Príspevky: 633
Dátum registrácie: 08 Máj 2010, 00:00
Bydlisko: BA
Vek: 27

Príspevok od používateľa webkar » 12 Feb 2011, 18:23

ja som myslel AVR assembler :)
0

Používateľov profilový obrázok
frei
Pokročilý člen
Pokročilý člen
Príspevky: 786
Dátum registrácie: 08 Feb 2010, 00:00
Bydlisko: Smižany
Vek: 31
Kontaktovať používateľa:

Príspevok od používateľa frei » 12 Feb 2011, 18:29

Aha :oops: Ja robim iba s pic
0

Používateľov profilový obrázok
Washu
Power user
Power user
Príspevky: 4521
Dátum registrácie: 15 Apr 2010, 00:00
Bydlisko: Multiverse
Vek: -1998
Kontaktovať používateľa:

Príspevok od používateľa Washu » 12 Feb 2011, 18:36

; neskusal som snad tam nieje moc preklepov :D
ldi r19, 254
out DDRA, r19
ldi r19, 1
out PORTA, r19
out DDRD, r19
loop:
in R19,PINA
sbrc R19,0
sbi PORTD,0
sbrs R19,0
cbi PORTD,0
rjmp loop

PS: Preco sa mordujes s assemblerom, na AVR je celkom fajn Ccko...
0
It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong
(Richard Feynman)

Používateľov profilový obrázok
webkar
Pokročilý člen
Pokročilý člen
Príspevky: 633
Dátum registrácie: 08 Máj 2010, 00:00
Bydlisko: BA
Vek: 27

Príspevok od používateľa webkar » 12 Feb 2011, 18:45

jo díki toto mi funguje btw vážne je na avr lepšie cčko? nikto "múdry" mi povedal presný opak vraj je Cčko na atmely úplne na h.... môžem to cčko písať aj vo microsoft visual c++?
0

Používateľov profilový obrázok
stanke
Stály člen
Stály člen
Príspevky: 287
Dátum registrácie: 13 Nov 2007, 00:00
Bydlisko: Bernolákovo
Vek: 32
Kontaktovať používateľa:

Príspevok od používateľa stanke » 13 Feb 2011, 00:27

no visualko, neviem pretože potrbuješ kompilátor..
neviem presne ako je to u atmeloch ale pre PICká je to.hex ako napríklad mikroC...
takže pogoogli dačo pre avrká, na iných zahraničných fórach je o tom hafo...:)

a na margo C/asm...
céčko napíšeš program za pár minút, ak poznáš syntax C naučíš sa to za jeden deň...

zase na druhú stranu assemblerom napíšeš presne to čo chceš aby robil, register po registri, cyklus po cykli...

ak zapínaš ledky tak nieje o čom riešiť C je tá správna voľba, no keď budeš potrebovať presne vedieť koľko času čo bude stroju trvať musíš použiť asm...
0
Obrázok

Používateľov profilový obrázok
Washu
Power user
Power user
Príspevky: 4521
Dátum registrácie: 15 Apr 2010, 00:00
Bydlisko: Multiverse
Vek: -1998
Kontaktovať používateľa:

Príspevok od používateľa Washu » 13 Feb 2011, 00:39

webkar napísal:jo díki toto mi funguje btw vážne je na avr lepšie cčko? nikto "múdry" mi povedal presný opak vraj je Cčko na atmely úplne na h.... môžem to cčko písať aj vo microsoft visual c++?
Zalezi na tom co ides programovat.
Ak potrebujes spracovanie signalu tak si si vybral nevhodny MCU, tam patri DSP (inak aj tie sa dnes programuju v C alebo C+ASM)
Ak chces extremnu spolahlivost programu (mil/airspace aplikacie) tak znova to zacina nie prave najvhodnejsim procesorom.
Ak to je klasicke domace bastlenie (nejake "blikace" s displayom a par tlacitkami) tak naco sa znasilnovat s assemblerom. Kedysi mali MCU malo FLASH a este menej RAM takze ASM malo zmysel. Ale dnes v dobach 128kB+ MCU? Tolko sotva zaplnite aj v Ccku. A vykon? Takisto, AVR su vykonnejsie ako prve pocitace. A ked nahodou prestane stacit AVR tak tu mame nepreberne mnozstvo inej havede taktovatelnej kolko je len treba.

Pani doba sa zmenila.
Dnes uz nieje najnovsim vydobytkom techniky PIC16F84 alebo AT89C2051 :P Otvorte oci je tu toho plno...
0
It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong
(Richard Feynman)

Používateľov profilový obrázok
stanke
Stály člen
Stály člen
Príspevky: 287
Dátum registrácie: 13 Nov 2007, 00:00
Bydlisko: Bernolákovo
Vek: 32
Kontaktovať používateľa:

Príspevok od používateľa stanke » 13 Feb 2011, 02:52

presne tak napriklad ovladanie motora pulznou modulaciou s odosielanim dat na LCD vyjde v C pod 1kB, celý robot s 5timi senzormi a nejakou logikou sa nad 4kB v C ani nedostane...
a cena takého PIC napríklad 16f690 je 1.33€ ... fakt nieje o čom :)

taktiež som sa začal učiť programovať MCU v asembleri, no kým som prišiel na to čo to sú registre a ak opresunúť jeden prd z pracovného registra na digitálny výstup mcu, odložil som to na policu a rok sa na to díval :)

a prinajhoršom, môžeš ničo napísať v C, disassemblovať to a porobiť úpravy asm kódu ručne :)
0
Obrázok

Používateľov profilový obrázok
webkar
Pokročilý člen
Pokročilý člen
Príspevky: 633
Dátum registrácie: 08 Máj 2010, 00:00
Bydlisko: BA
Vek: 27

Príspevok od používateľa webkar » 13 Feb 2011, 14:37

no máte pravdu, ďakujem, robil som v programe pawno (game mody do samp) ktorý je dosť podobný Cčku takže syntax som už vedel skôr sa učím funkcie atd. jo a posledná vec keď som si urobil 2 svetelné "hady" (napr. tie čo sú v prípone) a chcem aby sa dali prepínať tlačítkom (napr na PA0) ako to prosím, mám urobím? díkes
Prílohy
simpleScan_v1.txt
(1.21 KiB) 102 stiahnutí
KitScan_v1.txt
(895 Bajtov) 103 stiahnutí
0

Používateľov profilový obrázok
Washu
Power user
Power user
Príspevky: 4521
Dátum registrácie: 15 Apr 2010, 00:00
Bydlisko: Multiverse
Vek: -1998
Kontaktovať používateľa:

Príspevok od používateľa Washu » 13 Feb 2011, 15:39

Pokracuj a uc sa ;)
V danom priklade by sa elegantne dalo vyuzit pole:
const unsigned char leds[] = {0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81}; (v GCC namiesto const pouzi PROGMEM a pristupuj cez funkciu, popisane je to v manuale k LIBC)
V druhom pripade zase bitovy posun << alebo >>
Umyselne nedavam cely program, skus najst co potrebujes.
0
It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong
(Richard Feynman)

Používateľov profilový obrázok
webkar
Pokročilý člen
Pokročilý člen
Príspevky: 633
Dátum registrácie: 08 Máj 2010, 00:00
Bydlisko: BA
Vek: 27

Príspevok od používateľa webkar » 13 Feb 2011, 19:37

díki, skúšal som to s tým bitovým posunom tak ako to mám (viď. príloha)
je podla mňa dosť na h*vno síce to funguje ale za každým jak sa zmení c tak to zapíše ptm to zasa zmení a zasa zapíše. nedá sa to nejak nastaviť aby to napr. každých 10ms prečítalo hodnotu z premennej c a hneď ju tam aj zapísalo co som skúšal
while (2)
{
PORTD=c;
delay_ms(10);
}
mi nešlo... vopred díki
Prílohy
Nový textový dokument.TXT
(703 Bajtov) 101 stiahnutí
0

Používateľov profilový obrázok
Washu
Power user
Power user
Príspevky: 4521
Dátum registrácie: 15 Apr 2010, 00:00
Bydlisko: Multiverse
Vek: -1998
Kontaktovať používateľa:

Príspevok od používateľa Washu » 13 Feb 2011, 19:46

To mam zateba setko spravit, skus pouzit sedu koru mozgovu ;)
Tu mas obojsmerne beziace svetlo, na preklepy si vyhradzujem pravo :D

#include <mega16.h>
#include <Delay.h>

int main(void){
unsigned char n, c;
DDRD = 0xFF;
while (1){
c = 1;
for(n = 0; n < 8; n++){
PORTD = c;
delay_ms(100);
c <<= 1;
}
for(n = 0; n < 8; n++){
PORTD = c;
delay_ms(100);
c >>= 1;
}
}
return(0);
}
0
It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong
(Richard Feynman)

Kofo

Príspevok od používateľa Kofo » 13 Feb 2011, 19:57


Používateľov profilový obrázok
Washu
Power user
Power user
Príspevky: 4521
Dátum registrácie: 15 Apr 2010, 00:00
Bydlisko: Multiverse
Vek: -1998
Kontaktovať používateľa:

Príspevok od používateľa Washu » 13 Feb 2011, 20:01

Kofo napísal:Prečo to nemôžeš riešiť tu?

http://svetelektro.com/modules.php?name ... 410#259410
Od toho su tu moderatori aby spojili obsahom skoro identicke vlakna do jedneho, pripadne upozornili autora duplicitneho vlakna na duplicitu...
0
It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong
(Richard Feynman)

miroL
Stály člen
Stály člen
Príspevky: 489
Dátum registrácie: 28 Máj 2008, 00:00
Bydlisko: TRNAVA
Vek: 53

Príspevok od používateľa miroL » 15 Feb 2011, 16:34

Webkar
Asi pred tyzdnom vysla Konstrukcna elektronika 1/2011, ktora je venovan zaciatkom programovania v C-cku pre procesor Atmega 644. Kludne si to mozes preonacit na tu svoju 16-ku. Tiez som tento clanok ocenil, pretoze knih je sice plno, ale ja som tiez potreboval nieco taketo. Aby to bolo o AVR kach, v C-cku, a pouzivalo sa AVR studio. Paci sa mi napr kniha od D. Matouska o ATmege 16, ale je to o Asembleri, potom vyslo nieco nove, sice sa tam programuje v C-cku, ale tam sa zasa pouzival Keill...
0

Používateľov profilový obrázok
webkar
Pokročilý člen
Pokročilý člen
Príspevky: 633
Dátum registrácie: 08 Máj 2010, 00:00
Bydlisko: BA
Vek: 27

Príspevok od používateľa webkar » 15 Feb 2011, 17:17

ajaj, ja idiot som ten MCU asi zničil... chcel som si na kontaktnom poli urobiť trochu poriadok a omylom som tam dal 7812 (miesto 7805tky) :( ... takže si chcem kúpiť nový ale ďalších 5 euro za megu16 nedám to radšej tú 644ku... btw je medzi nimi nejaký rozdiel ? (teda okrem veľkosti FLASH a max. osc. freq.)
0

Kofo

Príspevok od používateľa Kofo » 15 Feb 2011, 17:25

Washu napísal:Od toho su tu moderatori
:D Prosím ťa...

Práve preto som upozornil.

miroL
Stály člen
Stály člen
Príspevky: 489
Dátum registrácie: 28 Máj 2008, 00:00
Bydlisko: TRNAVA
Vek: 53

Príspevok od používateľa miroL » 15 Feb 2011, 17:36

Za tu 644 zacvakas este viacej, navyse na zaciatok je to dost riziko, ze ho znicis, zvlast ked skusas na skus. doske. To by som Ti radsej odporucil spravit niektory z tych programovacich pripravkov od Matouska / su na 2313, m16 aj m644/, ku ktorym ma svoj soft. Niekto mozno bude namietat, ze je to blbost, ale pre zaciatocnikov je to celkom lacne a vhodne riesenie, pretoze mu tam nedovoli zamknut procesor, co je pri cene uvedenych procesorov dolezite.
0

Používateľov profilový obrázok
webkar
Pokročilý člen
Pokročilý člen
Príspevky: 633
Dátum registrácie: 08 Máj 2010, 00:00
Bydlisko: BA
Vek: 27

Príspevok od používateľa webkar » 15 Feb 2011, 18:01

nj akurát ja som s robením DPS som moc kamarát neni a keď si to teraz postavím na DIP28 a ptm si kúpim DIP40 tak to zasa stavať novú DPS sa mi moc nechce... na tú 16stnástku som používal toto http://robotika.cz/guide/blink/stk200.png ntbk má aj LPT a na PC mám len serial takže som to programoval na ntbku moc mi to nevadilo
0

Napísať odpoveď