Advertisement
-aem-

Led mezzo secondo con interrupt

Oct 26th, 2022 (edited)
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. JMP INIT           ; Reset Handler
  2.  JMP EXT_INT0       ; IRQ0 Handler
  3.  JMP EXT_INT1       ; IRQ1 Handler
  4.  JMP ISR_PCINT0     ; PCINT0 Handler
  5.  JMP ISR_PCINT1     ; PCINT1 Handler
  6.  JMP ISR_PCINT2     ; PCINT2 Handler
  7.  JMP WDT            ; Watchdog Timer Handler
  8.  JMP TIM2_COMPA     ; Timer2 Compare A Handler
  9.  JMP TIM2_COMPB     ; Timer2 Compare B Handler
  10.  JMP TIM2_OVF       ; Timer2 Overflow Handler
  11.  JMP TIM1_CAPT      ; Timer1 Capture Handler
  12.  JMP TIM1_COMPA     ; Timer1 Compare A Handler
  13.  JMP TIM1_COMPB     ; Timer1 Compare B Handler
  14.  JMP TIM1_OVF       ; Timer1 Overflow Handler
  15.  JMP TIM0_COMPA     ; Timer0 Compare A Handler
  16.  JMP TIM0_COMPB     ; Timer0 Compare B Handler
  17.  JMP TIM0_OVF       ; Timer0 Overflow Handler
  18.  JMP SPI_STC        ; SPI Transfer Complete Handler
  19.  JMP USART_RXC      ; USART, RX Complete Handler
  20.  JMP USART_UDRE     ; USART, UDR Empty Handler
  21.  JMP USART_TXC      ; USART, TX Complete Handler
  22.  JMP ISR_ADC        ; ADC Conversion Complete Handler
  23.  JMP EE_RDY         ; EEPROM Ready Handler
  24.  JMP ANA_COMP       ; Analog Comparator Handler
  25.  JMP TWI            ; 2-wire Serial Interface Handler
  26.  JMP SPM_RDY        ; Store Program Memory Ready Handler
  27.  
  28.  INIT:
  29.    SBI DDRB, 7      ; DDRB7 in output
  30.    CBI PORTB, 7     ; PORTB7 resettato, il led parte da spento
  31.    
  32.    CLR R16
  33.    OUT TCCR0A, R16  ; Timer/Counter 0 in normal mode
  34.    LDI R16, 5
  35.    OUT TCCR0B, R16  ; Prescaler a 1024
  36.    LDI R16, 128     ; Maschera per l'inversione dello stato del led
  37.                     ; 128 = 0B10000000
  38.    LDI R17, 30      ; Numero di overflow del TC0 in mezzo secondo
  39.    
  40.    LDI R20, HIGH(RAMEND)    ; Inizializzazione Stack Pointer
  41.    OUT SPH, R20
  42.    LDI R20, LOW(RAMEND)
  43.    OUT SPL, R20
  44.  
  45.    LDI R18, 1              
  46.    OUT TIMSK0, R18  ; Abilita l'interrupt dell'overflow del TC0
  47.    OUT SMCR, R18    ; Abilita la Sleep Mode
  48.    
  49.    SEI              ; Abilita gli interrupt globali
  50.    
  51.    MAIN:
  52.       SLEEP         ; Attiva la Sleep Mode
  53.       RJMP MAIN
  54.    
  55.    
  56. EXT_INT0:           ; IRQ0 Handler
  57. EXT_INT1:           ; IRQ1 Handler
  58. ISR_PCINT0:         ; PCINT0 Handler
  59. ISR_PCINT1:         ; PCINT1 Handler
  60. ISR_PCINT2:         ; PCINT2 Handler
  61. WDT:                ; Watchdog Timer Handler
  62. TIM2_COMPA:         ; Timer2 Compare A Handler
  63. TIM2_COMPB:         ; Timer2 Compare B Handler
  64. TIM2_OVF:           ; Timer2 Overflow Handler
  65. TIM1_CAPT:          ; Timer1 Capture Handler
  66. TIM1_COMPA:         ; Timer1 Compare A Handler
  67. TIM1_COMPB:         ; Timer1 Compare B Handler
  68. TIM1_OVF:           ; Timer1 Overflow Handler
  69. TIM0_COMPA:         ; Timer0 Compare A Handler
  70. TIM0_COMPB:         ; Timer0 Compare B Handler
  71.     RETI
  72. TIM0_OVF:           ; Timer0 Overflow Handler
  73.     PUSH R0         ; memorizzo R0 nello Stack
  74.     IN R0, SREG     ; copio lo SR in R0
  75.     PUSH R0         ; memorizzo R0 nello Stack
  76.     PUSH R21        ; memorizzo R21 nello Stack
  77.    
  78.     DEC R17         ; decremento il numero di overflow
  79.     BRNE FINE       ; controllo R17 รจ arrivato a zero
  80.                     ; se รจ diverso da 0 esco dall'ISR
  81.                     ; altrimenti lo riporto al valore
  82.                     ; iniziale e inverto lo stato del led
  83.    
  84.     IN R21, PORTB   ; inverto lo stato del led
  85.     EOR R21, R16
  86.     OUT PORTB, R21
  87.    
  88.     LDI R17, 30     ; riporto R17 al valore iniziale
  89.    
  90. FINE:
  91.     POP R21         ; prelevo R21 dallo Stack
  92.     POP R0          ; prevelo R0 dallo Stack
  93.     OUT SREG, R0    ; riporto lo SR al valore iniziale
  94.     POP R0          ; prelevo R0 dallo Stack
  95.    
  96.     RETI
  97. SPI_STC:            ; SPI Transfer Complete Handler
  98. USART_RXC:          ; USART, RX Complete Handler
  99. USART_UDRE:         ; USART, UDR Empty Handler
  100. USART_TXC:          ; USART, TX Complete Handler
  101. ISR_ADC:            ; ADC Conversion Complete Handler
  102. EE_RDY:             ; EEPROM Ready Handler
  103. ANA_COMP:           ; Analog Comparator Handler
  104. TWI:                ; 2-wire Serial Interface Handler
  105. SPM_RDY:            ; Store Program Memory Ready Handler
  106.    RETI
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement