
;****************************************************************
 
.include "2343def.inc"
 
 rjmp RESET   ;reset handle
 
 
 
 
;* Register variables 
 
 .def T1   = r16
 .def T2   = r17 
 .def temp = r18 
 
;* Code 
 
runDelay: 
 ldi T1, 150   ;T1 used as delay 2nd count 
 ldi T2, 150   ;T2 used as delay 3nd count 
delay_1: 
 dec T1 
 brne delay_1 
 dec T2 
 brne delay_1 
 dec temp    ;temp must be preset as 
 brne delay_1    ; delay master count 
 ret 
 
 
 

;* Mainprogram - let the LEDs run back and forth
 
;* Defines
 
 .equ A = 0   ;portB0 (1st LEDs)
 .equ B = 1   ;portB1 (2nd LEDs)
 .equ C = 2   ;portB2 (3th LEDs)
 .equ D = 3   ;portB4 (common 1)
 .equ E = 4    ;portB5 (common 2)
 
 .equ X = 1   ;X times runDelay
 
;* Register variables
 
 .def baff = r19
 
;* Code
 
RESET:
 ldi    temp, RAMEND  ;point stack in RAM
 out    SPL, temp
 
 sbi DDRB, A   ;output A
 sbi DDRB, B   ;output B
 sbi DDRB, C   ;output C
 sbi DDRB, D   ;output D
 sbi DDRB, E   ;output E
 
KITT:
 ldi baff, 0b11101011 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101101 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101110 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110011 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110101 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110110 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110101 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110011 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101110 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101101 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 rjmp KITT   ;next loop
 
 
