začiatočník v assembleri
Moderátori: psichac, Moderátori
začiatočník v assembleri
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
.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
- Washu
- Power user
- Príspevky: 4521
- Dátum registrácie: 15 Apr 2010, 00:00
- Bydlisko: Multiverse
- Vek: -1998
- Kontaktovať používateľa:
; neskusal som snad tam nieje moc preklepov
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...
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)
(Richard Feynman)
- stanke
- Stály člen
- Príspevky: 287
- Dátum registrácie: 13 Nov 2007, 00:00
- Bydlisko: Bernolákovo
- Vek: 33
- Kontaktovať používateľa:
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...
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
- Washu
- Power user
- Príspevky: 4521
- Dátum registrácie: 15 Apr 2010, 00:00
- Bydlisko: Multiverse
- Vek: -1998
- Kontaktovať používateľa:
Zalezi na tom co ides programovat.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++?
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 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)
(Richard Feynman)
- stanke
- Stály člen
- Príspevky: 287
- Dátum registrácie: 13 Nov 2007, 00:00
- Bydlisko: Bernolákovo
- Vek: 33
- Kontaktovať používateľa:
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
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
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) 112 stiahnutí
-
- KitScan_v1.txt
- (895 Bajtov) 110 stiahnutí
0
- Washu
- Power user
- Príspevky: 4521
- Dátum registrácie: 15 Apr 2010, 00:00
- Bydlisko: Multiverse
- Vek: -1998
- Kontaktovať používateľa:
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.
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)
(Richard Feynman)
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
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) 107 stiahnutí
0
- Washu
- Power user
- Príspevky: 4521
- Dátum registrácie: 15 Apr 2010, 00:00
- Bydlisko: Multiverse
- Vek: -1998
- Kontaktovať používateľa:
To mam zateba setko spravit, skus pouzit sedu koru mozgovu
Tu mas obojsmerne beziace svetlo, na preklepy si vyhradzujem pravo
#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);
}
Tu mas obojsmerne beziace svetlo, na preklepy si vyhradzujem pravo
#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)
(Richard Feynman)
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...
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
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
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
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