; attiny 45 ; glowing orb ; .include "tn45def.inc" .equ led1 = PB3 .equ led2 = PB4 .equ led3 = PB0 .equ led4 = PB1 .def temp = R17 .def temp1 = R18 .def temp2 = R19 .def temp3 = R20 .def temp4 = R21 .def temp5 = R22 .def temp6 = R22 .cseg .org 0 rjmp reset delay: mov temp3, temp5 delay_loop: mov temp4, temp2 delay_loop1: dec temp4 brne delay_loop1 dec temp3 brne delay_loop ret delay2: ldi temp, 15 delay_loop2: ldi temp1, 255 delay_loop3: dec temp1 brne delay_loop3 dec temp brne delay_loop2 ret delay3: ldi temp, 37 delay_loop4: ldi temp1, 8 delay_loop5: dec temp4 brne delay_loop1 dec temp3 brne delay_loop ret delay4: mov temp3, temp5 delay_loop6: mov temp4, temp2 delay_loop7: dec temp4 brne delay_loop7 dec temp3 brne delay_loop6 ret delay_half_sec: ldi temp, 255 delay_half_sec_loop: ldi temp1, 255 delay_half_sec_loop2: dec temp1 brne delay_half_sec_loop2 dec temp brne delay_half_sec_loop ret leds_on: sbi PORTB, led1 sbi PORTB, led2 sbi PORTB, led3 sbi PORTB, led4 ret leds_off: cbi PORTB, led1 cbi PORTB, led2 cbi PORTB, led3 cbi PORTB, led4 ret ; ; main program ; reset: ; ; set stack pointer to top of RAM ; ldi temp, high(RAMEND) out SPH, temp ldi temp, low(RAMEND) out SPL, temp cbi PORTB, led1 sbi DDRB, led1 cbi PORTB, led2 sbi DDRB, led2 cbi PORTB, led3 sbi DDRB, led3 cbi PORTB, led4 sbi DDRB, led4 ; ; start main loop ; loop: rcall fade_on rcall fade_on_2 rcall on_half_sec rcall fade_off_2 rcall fade_off rjmp loop cycle: rcall leds_on rcall delay rcall leds_off rcall delay2 ret cycle2: rcall leds_on rcall delay3 rcall leds_off rcall delay4 ret on_half_sec: rcall leds_on ;rcall delay_half_sec ;rcall delay_half_sec ;rcall delay_half_sec ;rcall delay_half_sec ;rcall delay_half_sec ;rcall delay_half_sec rcall delay_half_sec rcall delay_half_sec rcall delay_half_sec rcall delay_half_sec rcall leds_off ret fade_off: ldi temp5, 16 ldi temp2, 255 fade_off_loop2: rcall cycle rcall cycle ;dec temp5 ;brne fade_off_loop ;ldi temp5, 10 ;ldi temp2, 120 dec temp2 brne fade_off_loop2 ret fade_on: ldi temp5, 16 ldi temp2, 1 fade_on_loop2: rcall cycle rcall cycle inc temp2 cpi temp2, 255 brne fade_on_loop2 ret fade_on_2: ldi temp5, 255 ldi temp2, 15 fade_on_loop_4: rcall cycle2 dec temp5 cpi temp5, 1 brne fade_on_loop_4 ret fade_off_2: ldi temp5, 1 ldi temp2, 15 ;rcall cycle2 fade_off_loop_4: rcall cycle2 inc temp5 cpi temp5, 255 brne fade_off_loop_4 ret