highlight.asm-avr

    ;********************************************************************
    ;* LED flasher: LED will flash with a X on/off ratio at PD6
    ;*
    ;* NOTE: delay depends in the value of X, 1 is fast, 255 is slow
    ;*
    ;* No copyright ©1998 RES® * FREEWARE *
    ;*
    ;* NOTE: Connect a low current LED with a 1k resistor in serie from
    ;*	 Vdd to pin 11 of the MCU. (Or a normal LED with a 330ohm)
    ;*
    ;* RES® can be reached by email: digitalaudio@mail.com
    ;* or visit the website: http://home.wanadoo.nl/electro1/avr
    ;*
    ;* Version           :1.0
    ;* Date		     :12/26/98
    ;* Author	     :Rob's ElectroSoft®
    ;* Target MCU        :AT90S1200-12PI@4MHz
    ;********************************************************************

    .include "1200def.inc"

    	rjmp	RESET		;reset handle

    ;* Long delay

    ;* Register variables

    	.def  T1      = r1
    	.def  T2      = r2
    	.def  temp    = r19

    ;* Code

    longDelay:
    	clr   T1		;T1 used as delay 2nd count
    	clr   T2		;T2 used as delay 3d count
    delay_1:
    	dec   T2
    	brne  delay_1
    	dec   T1
    	brne  delay_1
    	dec   temp		;temp must be preset as
    	brne  delay_1		; delay master count
    	ret

    ;* Resets the data direction register D

    ;* Defines

    	.equ  led   = 6		;LED at PD6

    ;* Code

    RESET:
    	sbi   DDRD, led		;connect LED to PORTD pin 6

    ;* Main program

    ;* This part will let the LED go on and off by X

    ;* Register variables

    	.equ  X   =  10 	;enter delaytime X

    flash:
    	sbi   PORTD, led	;LED on
    	ldi   temp, X		;X sec delay
    	rcall longDelay
    	cbi   PORTD, led	;LED off
    	ldi   temp, X		;X sec delay
    	rcall longDelay
    	rjmp  flash		;another run

    /* other
    tests */

    .org LARGEBOOTSTART
    ; the following sets up RAMPZ:Z to point to a FLASH data object, typically
    ; for use with ELPM.
    ldi ZL, low (cmdtable * 2)
    ldi ZH, high (cmdtable * 2)
    .if ((cmdtable * 2) > 65535)
    ldi r16, 1
    sts RAMPZ, r16
    .endif
    ; more code follows here
    cmdtable: .db "foo", 0x0
    .db "Hello\n" // is equivalent to:
    .db 'H', 'e', 'l', 'l', 'o', '\\', 'n'
    .db '\0', '\177', '\xff'
    .db "\nx\rx\ax\bx\fx\tx\vx\\x\0000\xfff\0\1"
    0b10_111_2 0xaf3_4 0_12 32_32 $32_3

    .macro m
    ldi @0, @1
    .endm m r16,\ 0

    #define TEST \
    .IF val \
    .DW __TIME__ \
    .ELSE \
    .DW 1 \
    .ENDIF

    #defi TEST