;******************************************************************** ;* 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