Portál AbcLinuxu, 19. dubna 2024 18:39

Začátky s assemblerem (ATmega8) I - první program

25.7.2008 23:00 | Přečteno: 4892× | Jednočipy

Po jednočipech pošilhávám dobře víc jak rok. Začalo to PICkama, ale ty poměrně drahé programátory mně dost odrazovaly a tulení choroba bránila v bastlení vlastního. Letos jsem objevil Atmely a zjistil že se dají programovat pomocí LPT kabelu...

Tak jsem si zakoupil dvě Megy8L a pustil se do sestrojení kabelu. Asi po týdnu jsem zanechal pokusů o programování s tím že na mojem počítači to prostě takto jednoduše nepůjde.

Už jsem byl rozhodnutý pořídit ponyprog, ale na jedné diskuzi nebo kde jsem zavadil o kontakt na borca který vyrábí USBprog. Ten mi před pár dny přišel a já jsem začal zkoušet programy na ostro.

Psaní programů v céčku je hezké, ale mně nějak víc padl do oka assembler. Bohužel to že je k dispozici "orginál" překladač céčka se projevuje nedostatkem návodů právě na ten assembler. v tomto ohledu se jako užitečné jeví seriály na programujte.com a taky stránky avr-asm-tutorial.net(bohužel anglicky)

Jako první program jsem se pokusil napsat blikač. Je to vlastně zpožďovací podprogram, +úvodní řádky které se starají o správné nastavení výstupů a dva příkazy na změnu stavu bitu na kterém je připojena LEDka.

Vercajk:

Určitě se hodí soubor s lidským "pojmenováním" jednotlivých bitů, portů, a registrů. Soubor m8def.inc. Program překládám pomocí avra (určitě najdete v repositáři).

Zdroják:

	.include "m8def.inc"
	.def w=r16

	rjmp main

main:	LDI w,$FF 
	out DDRB,w 	;učinit celý portB výstupním

	LDI W,LOW(ramend) ;natáhnout konec ram
	out SPL,W	;vložit adresu do stackpointeru
	LDI W,HIGH(ramend)
	out SPH,W


	ldi r18,1	;natáhnout jedničku do r18
	sbi portb,0

;========	

start:	SBI portb,0
	rcall cekej

	CBI portb,0
	rcall cekej

	rjmp start

;========
cekej:	CLR r20
 	CLR r21		;nastavit na nulu
wait: 	add r21,r18	;přičteme 1

	nop
	brcc wait	;skočí je li carry v nule


	add r20,r18	;jedničku k béčku
	brcc wait
	ret		;návrat z podprogramu
;========

Závěr:

První problém byl že jsem se snažil cpát do příkazů MOV a ADD přímo čísla což nejde.Vůbec nejvíc mně zatopila skutečnost, že podprogram musí být až na konci programu. Na to nějak avra neupozorní chybovým hlášením.
Při interním oscilátoru megy nastaveném na 1MHz ledka bliká s periodou cca půl sekundy.

Je to naprogramované dost prasácky. Hlavně registry by si měl člověk nějak normálně pojmenovat. R20 a R21 se člověk splete ani neví jak. Pracovní registr (R16) je označen jako W po vzoru PICek.

       

Hodnocení: 75 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

26.7.2008 00:10 skywaker
Rozbalit Rozbalit vše Re: Začátky s assemblerem (ATmega8) I - první program
Odpovědět | Sbalit | Link | Blokovat | Admin
Velmi dobra kniha je "Mikrokontrolery ATMEL AVR ASSEMBLER od Vladimira Vanu" len odporucujem. prevedie zakladami asemblera
26.7.2008 10:40 ondracch | skóre: 19 | blog: Mozková kreč
Rozbalit Rozbalit vše Re: Začátky s assemblerem (ATmega8) I - první program
Podobnou knihu od Vladimíra Váňi mám tady v na polici a vůbec jí nepoužívám, protože jsem přešel na Céčko. Kdyby měl někdo zájem, můžeme se domluvit na nějaké sympatické ceně. Pro přesnost je to tahle.
Proč myslíš, že nemůžeš žít jinak? Pořád Tvořím...
Konqui avatar 26.7.2008 12:49 Konqui | skóre: 18 | blog: Konqui | Rožnov pod Radhoštěm
Rozbalit Rozbalit vše Re: Začátky s assemblerem (ATmega8) I - první program
Odpovědět | Sbalit | Link | Blokovat | Admin
Na časování je lepší použít čítač/časovač a využívat přerušení. Mám i nějaký program kterým se dá vypočítávat nastavení registrů na zvoleném čítači podle frekvence mikrokontroléru
Open/save dialogy z GTK+ jsou nejkřiklavější ukázkou toho nejdebilnějšího software, co vůbec může existovat.
28.7.2008 23:46 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Začátky s assemblerem (ATmega8) I - první program
Odpovědět | Sbalit | Link | Blokovat | Admin
Místo add r20, r18, které plýtá registrem, lze použít subi r20,0xff
Vůbec nejvíc mně zatopila skutečnost, že podprogram musí být až na konci programu. Na to nějak avra neupozorní chybovým hlášením.
Nemusí. Ale když ho dáš na začátek, musíš ho přeskočit.

A osobně nemám rád avra, můj pokus s ním něco přeložit se ještě nikdy nepovedl. Radši používám AvrAssebler pod wine.
Quando omni flunkus moritati
10.12.2017 11:09 mark12
Rozbalit Rozbalit vše Re: Začátky s assemblerem (ATmega8) I - první program
Odpovědět | Sbalit | Link | Blokovat | Admin
After all, they have a bigger size and always folded. You need to include the logo of the business as well.Good graphics are essential for the success of flyers. It should be accompanied by the name of your company. fiftyfive print

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.