;for AVR: ATmega16 * ;clock frequency: 4MHz * ;************************************************************************** ;Programm function: ;-------------------------------------------------------------------------- .device ATmega16 .nolist .include "m16def.inc" ;========================================================================== ;DECLARATIONS .def temp = r16 .def merker = r17 .def counter = r18 ;========================================================================== ;START Programm rjmp Init ;========================================================================= Init: ser temp out DDRA, temp out DDRB, temp out DDRC, temp out PORTA, temp out PORTB, temp out PORTC, temp clr temp out DDRD, temp ser temp out PORTD, temp ;============================abfrage================================================== taste1: sbic PIND,0 rjmp taste1 rjmp taste2 taste2: sbic PIND,1 rjmp taste2 rjmp taste3 taste3: sbic PIND,2 rjmp taste3 rjmp taste4 taste4: sbic PIND,3 rjmp taste4 ;==============================richtige Eingabe================================ clr temp out PORTB, temp timer: ldi temp, 0b00000101 out TCCR0, temp ldi merker,117 ldi counter,100 warten: in temp, TCNT0 cp temp, counter brne warten subi counter, -100 dec merker brne warten ser temp out PORTB, temp clr temp out TCCR0, temp out TCNT0, temp rjmp taste1 ;================================timer2 für blinklicht=========================== timer2: ldi temp, 0b00000101 out TCCR0, temp ldi merker,20 ldi counter, 100 warten2: in temp, TCNT0 cp temp, counter brne warten2 subi counter, -100 dec merker brne warten2 clr temp out PORTB, temp ;================================timer 3 blinklicht===================================== ldi temp, 0b00000101 out TCCR0, temp ldi merker,20 ldi counter, 100 warten3: in temp, TCNT0 cp temp, counter brne warten3 subi counter, -100 dec merker brne warten3 ser temp out PORTB, temp rjmp timer2