;****************************************************** .include "2323def.inc" rjmp RESET ;Reset Handle ;****************************************************** RESET: .def temp =r16 .def rndtemp =r23 .def counter =r18 .def step= r19 .def RndSeed1=r20 .def RndSeed2=r21 .def RndTemp=r22 ldi temp, low(RAMEND) out SPL, temp ;init Stack Pointer ldi temp, 1 out DDRB, temp ; PORTB Definition: 0=Out, 1=In, 2=In ldi r19, 0 out PORTB, r19 ; alle LEDs erstmal aus ldi step, 15 ; Schrittweite ldi RndSeed2, 234 ; random init ldi RndSeed1, 71 ldi rndTemp, 147 ; Start: mov rndTemp, RndSeed1 sbrc RndSeed2, 6 com RndTemp ;bit 0 eor bit 14 lsr RndTemp rol rndSeed1 rol rndSeed2 ;---- cpi rndtemp, 34 breq txon cpi rndtemp, 68 breq txoff ;---- PWM: ldi counter, 0 cpi rndtemp, 1 ; vergleicht, brsh HIGH ; ob pulse groesser 0 (mindestens 1) ist, dann HIGH LOW: cbi PORTB, 0 ; PB0 aus LOW2: add counter, step cpi counter, 255 ; vergleicht, brlo LOW2 ; ob counter < 255 ist, dann LOW2 (hochzaehlen) rjmp START ; Neustart HIGH: sbi PORTB, 0 ; PB0 ein HIGH2: add counter, step cp counter, rndtemp ; vergleicht, brlo HIGH2 ; ob counter < pulse ist, dann HIGH2 (hochzaehlen) cpi counter, 255 ; vergleicht, breq START ; ob counter = 255 ist, dann Neustart rjmp LOW TXON: ; sbi PORTB, 1 sbi PORTB, 2 rjmp pwm TXOFF: cbi PORTB, 1 cbi PORTB, 2 rjmp pwm :020000020000FC :1000000000C00FED0DBF01E007BB30E038BB3FE0A3 :100010005AEE47E463E9642F56FD60956695441FE8 :10002000551F623289F0643491F020E0613028F489 :10003000C098230F2F3FE8F3EECFC09A230F261767 :10004000E8F32F3F41F3F4CFC19AC29AEECFC198A3 :04005000C298EBCF98 :00000001FF