;COLOR MAGIC MOOD LIGHT ;(C) 2004 Markus Vohburger ;Gewerbliche Nutzung untersagt .include "tn12def.inc" .equ EE_OSCCAL =$3f .equ EE_SPEED0 =$00 .equ EE_SPEED1 =$01 .equ EE_SPEED2 =$02 .def speed0 = r02 .def speed1 = r03 .def speed2 = r04 .def temp1 = r16 .def swcount0 = r17 .def swcount1 = r18 .def swcount2 = r19 .def output = r20 .def pwmcount = r21 .def pwmvalue_red = r22 .def pwmvalue_green = r23 .def pwmvalue_blue = r24 .def director = r25 .def pwmvalue = r27 .def dirty = r28 .def swcount3 = r29 .def colorselect = r30 .def temp2 = r31 .equ timer_value = $d0 ;reset handler .org $0000 rjmp main ;timer overflow interrut handler .org OVF0Addr rjmp OVF0Handler .org $0010 main: ;stack setup ;read osccal byte ldi temp1,EE_OSCCAL rcall readeeprom out osccal,temp1 ;port setup ;port b input with pullups ldi temp1,$07 out ddrb,temp1 ;port b output off, pullups on ldi temp1,$1f out portb,temp1 setstatus: sbic eecr,eewe rjmp setstatus ldi temp1,$03 out eear,temp1 sbi eecr,eere in temp1,eedr cpi temp1,$00 breq ok cpi temp1,$07 breq ok ldi temp1,$07 ok: out ddrb,temp1 ;Toggle Power On Mode sbis pinb,4 rjmp toggle sbic pinb,3 rjmp notoggle toggle: ldi temp2,$00 ldi temp1,EE_SPEED0 rcall writeeeprom ldi temp1,EE_SPEED1 rcall writeeeprom ldi temp1,EE_SPEED2 rcall writeeeprom ;neuen status schreiben writeok: notoggle: ;Timer zurücksetzen ldi temp1,timer_value out tcnt0,temp1 ;Timer interrupts an ldi temp1,(1<