Advertisement
Dany1858

atmega: esercizio 3

Jul 5th, 2019
3,447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Un palazzetto ha un automatismo conta posti a 12 bit
  2. la parte bassa viene rappresentata sulla porta B
  3. la parte alta sulla porta A
  4. si predisponga il conteggio ad un solo contatore ma con due pulsanti,
  5. ingresso monte e ingresso valle.
  6. Si utilizzi INT0 e INT1 attivi bassi
  7. raggiunto l overflow disabilitare le interrupt e visualizzare 0xFF su porta C e D*/
  8.  
  9. .include "8535def.inc"          ;nomi registri
  10. .CSEG                           ;memoria programma
  11. .ORG 0x000
  12.     rjmp    RESET   ;0x000
  13.     rjmp    INT_0   ;0x001
  14.     rjmp    INT_1   ;0x002
  15.     reti            ;0x003
  16.     reti            ;0x004
  17.     reti            ;0x005
  18.     reti            ;0x006
  19.     reti            ;0x007
  20.     reti            ;0x008
  21.     reti            ;0x009
  22.     reti            ;0x00A
  23.     reti            ;0x00B
  24.     reti            ;0x00C
  25.     reti            ;0x00D
  26.     reti            ;0x00E
  27.     reti            ;0x00F
  28.     reti            ;0x010
  29.  
  30. RESET:
  31.     ldi r16, LOW(RAMEND)
  32.     out SPL, r16
  33.     ldi r16, HIGH(RAMEND)
  34.     out SPH, r16
  35.  
  36. MAIN:
  37.     ldi r17, 0x40               ;solo bit 6 attivo
  38.     out MCUCR, r17              ;abilito SE, sleep mode idle e ex int down
  39.     ldi r17, 0xC0               ;abilito int0 e int1
  40.     out GIMSK, r17
  41.     ser r17                     ;tutti bit a 1
  42.     out DDRA, r17
  43.     out DDRB, r17               ;porte impostate in uscita
  44.     clr r17                     ;contB
  45.     clr r18                     ;contA
  46.     clr r19                     ;aux
  47.     sei
  48.     end:
  49.         sleep
  50.         rjmp end
  51.  
  52. INT_0:
  53.     rcall incrementa
  54.     reti
  55.  
  56. INT_1:
  57.     rcall incrementa
  58.     reti
  59.  
  60. incrementa:
  61.     sec                         ;carry a 1
  62.     adc r17, r19                ;inc B
  63.     adc r18, r19                ;inc A
  64.     cpi r18, 0x10               ;overflow (12 bit soli)
  65.     breq pieno
  66.     out PORTB, r17
  67.     out PORTA, r18
  68.     ret
  69.  
  70. pieno:
  71.     clr r17
  72.     out GIMSK, r17              ;disabilito int0 e int1
  73.     ser r17
  74.     out DDRC, r17
  75.     out DDRD, r17
  76.     out PORTC, r17
  77.     out PORTD, r17
  78.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement