1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| .include "m169def.inc"
.org 0x0000
Rjmp RESET
.org 0x0014
Rjmp TIMER_COMPARE
.org 0x0030
RESET:
ldi r16,high(ramend)
out SPH,r16
ldi r16,low(ramend)
out SPL,r16
sei ; Autorise les interruptions
rcall INIT
INIT:
clr r17
ldi r16,0xFF
out DDRB,r16 ; Configure le PORTB en entrée
ldi r16,0x00
out DDRD,r16 ; Configure le PORTD en sortie
;INITIALISATION du timer0
;FOC0A WGM00 COM0A1 COM0A0 WGM01 CS02 CS01 CS00 TCCR0A
ldi r16,0b00001101
out TCCR0A,r16
ldi r16,0b11000010 ; Mettre la valeur 194 pour +/- 2Hz
out OCR0A,r16
;– – – – – – OCIE0A TOIE0 TIMSK0
ldi r16,0b00000010
ldi r26,$6e
st X,r16
rjmp PROG
PROG:
in r18,PORTB
cpi r18,0b11111110
brne PROG
ldi r19,0b11111101
out PIND,r19
CALL TEMPO
ldi r19,0b11111111
out PIND,r19
CALL TEMPO
rjmp PROG
TIMER_COMPARE:
cpi r17,0b00000101
brmi LED_ON
LED_OFF:
ldi r20,0b11111111
out PIND,r20
jmp CLEAR
LED_ON:
ldi r20,0b11111110
out PIND,r20
CLEAR:
inc r17
cpi r17,0b00001010
brne FIN
clr r17
FIN:
reti
TEMPO:
dec r21
brne TEMPO
ret |
Partager