109 lines
2.2 KiB
Plaintext
109 lines
2.2 KiB
Plaintext
;********************************************************************
|
|
;* 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
|