Advertisement
paulogp

ATmega128: T1B - LED flip-flop usando interrupção

Jul 13th, 2011
512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Coloca o LED a piscar x em x tempo. Os tempos on e off estão definidos na rotina de interrupção.
  2. ; Exemplo de utilização do TC0 com interrupção por Output Compare
  3.  
  4. .include <m128def.inc>
  5.  
  6. .cseg
  7. .org 0
  8.     jmp main
  9.  
  10. .org 0x1E           ; vector interrupcao
  11.     jmp int_TC0
  12.  
  13. .org 0x46
  14.  
  15.  
  16. ; rotina de inicializacao do microprocessador
  17. ; 1024*62.5E-9*78=5E-4
  18.  
  19. inic:
  20.     ser r16             ; set register 0xFF
  21.     out DDRA, r16          
  22.  
  23.     ldi r16, 125        ; preenche OCR0 com 128
  24.     out OCR0, r16
  25.  
  26.     ldi r16, 0b00011111 ; configura TC0 (3 ult dig definem: 64, 128, ...)
  27.     out TCCR0, r16      ; modo 2, toggle OC0, sem prescaler
  28.  
  29.     ldi r16, 0b00010000 ; programa OC0 (PORTB 4) como saída
  30.     out DDRB, r16
  31.  
  32.     in r16, TIMSK       ; autoriza interrupção do TC0, OCIE0
  33.     ori r16, 2
  34.     out TIMSK,r16
  35.  
  36.     sei                 ; autorização global de interrupções
  37.     ret
  38.  
  39.  
  40. ; rotina de servico de interrupcao
  41. int_TC0:
  42.     inc r0              ; r: registo definido; r++
  43.  
  44.     ; led on
  45.     mov r17, r0
  46.     cpi r17, 0b01100100 ; count: 100
  47.     breq led_on
  48.  
  49.     ; led off
  50.     mov r17, r0
  51.     cpi r17, 0b11000000 ; count: 200
  52.     breq led_off
  53.  
  54.     reti                ; interrupt return
  55.  
  56.  
  57. ; programa principal
  58. main:
  59.     ldi r16, 0x10
  60.     out SPH, r16
  61.     ldi r16, 0xFF
  62.     out SPL, r16
  63.  
  64.     call inic
  65.  
  66.  
  67. aqui:
  68.     jmp aqui
  69.  
  70.  
  71. led_on:
  72.     ldi r17, 0b11111110
  73.     out PORTA, r17
  74.     reti
  75.  
  76.  
  77. led_off:
  78.     clr r0
  79.     ldi r17, 0b11111111
  80.     out PORTA, r17
  81.     reti
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement