Extreme Burner

Z MediaWiki SPŠ a VOŠ Písek
Verze z 7. 6. 2013, 09:36, kterou vytvořil JA (diskuse | příspěvky) (Založena nová stránka: Soubor:Extreme_Burner_01.jpg <source lang="asm"> .NOLIST .INCLUDE "m8def.inc" .LIST ldi R16, HIGH(RAMEND) ;do R16 vlozime vyssi byte posledni adresy RAM ...)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

		.NOLIST
		.INCLUDE "m8def.inc"
		.LIST

		ldi R16, HIGH(RAMEND)	;do R16 vlozime vyssi byte posledni adresy RAM
		out SPH, R16			;nastavime SPH na tuto adresu
		ldi R16, LOW(RAMEND)		;do R16 vlozime nizsi byte posledni adresy RAM
		out SPL, R16			;nastavime SPL na tuto adresu

		ldi R16, 0b00000001		;do R16 vlozime 1
		out DDRB, R16			;pin PB0 nastavime jako vystupni


zacatek:	rcall zpozdi			;zavolame rutinu zpozi
		
		in R16, PORTB			;precteme stav portu B
		ldi R17, 0b00000001		;do R17 vlozime 1
		eor R16, R17			;znegujeme bit 0 XORem
		out PORTB, R16			;vysledek posleme z5 na port B

		rjmp zacatek			;skocime na navesti "zacatek"


;rutina ZPOZDI 500ms, tedy 2000000 cyklu při 4MHz
zpozdi:	ldi R16, $12		;do R16 cislo $12
on1:		ldi R17, $BC		;do R17 cislo $BC
on2:		ldi R18, $C4		;do R18 cislo $C4
on3:		dec R18		;sniz R18 o 1
		brne on3		;pokud Z = 1 (zero flag), tedy pokud po prevedeni dec byl vysledek 0, skoc na "on3"
		dec R17		;sniz R17 o 1
		brne on2		;pokud Z = 1, skoc na "on2"
		dec R16		;sniz R16 o 1
		brne on1		;pokud Z = 1, skoc na "on1"
		nop			;nedelej jeden cyklus nic
		nop			;nedelej dalsi cyklus nic (od zacaku sem je to presne 2000000 cyklu)
ret


Soubor:Extreme Burner 02.jpg

:020000020000FC
:1000000004E00EBF0FE50DBF01E007BB05D008B34C
:1000100011E0012708BBFACF02E11CEB24EC2A9582
:10002000F1F71A95D9F70A95C1F700000000089575
:00000001FF


Soubor:Extreme Burner 10.jpg