Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;*****************************************************************************
- ;COMPOSANT : ATMEL AVR 8 Bits (RISC) - ATMega328P Quartz = 16 MHz
- ;PROGRAMME : ex2.asm
- ;VERSION : V1
- ;CREATION : 26/02/19
- ;DERNIERE MAJ. : 26/02/19
- ;DESCRIPTION : Chenilard ADV
- ;AUTEUR : Antoine GIORDANO LA GRECA
- ;*****************************************************************************
- ; DIRECTIVES D'ASSEMBLAGE
- ;*****************************************************************************
- .DEVICE atmega328p ;Type de Microcontrôleur (définit dans l'include)
- .INCLUDE "m328Pdef.inc" ;Fichier de définition du microcontrôleur
- ; PORTS D'ENTREES/SORTIES
- ;*****************************************************************************
- ; Port C0 à C5 Branché sur une LED
- ; Port B0 à B7 ???
- ; Port D0 à D7 ??
- ;*****************************************************************************
- ; CONSTANTES
- ;*****************************************************************************
- ; Pas de constante
- ;*****************************************************************************
- ; DEFINITIONS DE REGISTRES
- ;*****************************************************************************
- ; r0 à r15 Libres
- ; r16 à r20 Utilisés par le programme
- ; r21 à r25 Libres
- ; r26 à r31 Réservés pour registre X, Y, Z
- ;*****************************************************************************
- ; ORGANISATION RAM
- ;*****************************************************************************
- .DSEG
- .ORG 0x0100 ; début de la mémoire disponible pour l’utilisateur (vous)
- ; INTERRUPTIONS ET RESET
- ;*****************************************************************************
- ; Même si les interruptions ne sont pas utilisées ces définitions doivent être déclarées
- .CSEG ;Segment de Code
- .ORG $0000 ;Positionnement au début de la mémoire
- jmp RESET ;Reset Handler
- jmp EXT_INT0 ;IRQ0 Handler
- jmp EXT_INT1 ;IRQ1 Handler
- jmp EXT_INT2 ;IRQ2 Handler
- jmp TIM2_COMP ;Timer2 Compare Handler
- jmp TIM2_OVF ;Timer2 Overflow Handler
- jmp TIM1_CAPT ;Timer1 Capture Handler
- jmp TIM1_COMPA ;Timer1 CompareA Handler
- jmp TIM1_COMPB ;Timer1 CompareB Handler
- jmp TIM1_OVF ;Timer1 Overflow Handler
- jmp TIM0_COMP ;Timer0 Compare Handler
- jmp TIM0_OVF ;Timer0 Overflow Handler
- jmp SPI_STC ;SPI Transfer Complete Handler
- jmp USART_RXC ;USART RX Complete Handler
- jmp USART_UDRE ;UDR Empty Handler
- jmp USART_TXC ;USART TX Complete Handler
- jmp ADC_COMP ;ADC Conversion Complete Handler
- jmp EE_RDY ;EEPROM Ready Handler
- jmp ANA_COMP ;Analog Comparator Handler
- jmp TWI ;Two-wire Serial Interface Handler
- jmp SPM_RDY ;Store Program Memory Ready Handler
- ;*****************************************************************************
- ; PROGRAMME PRINCIPAL (RESET)
- ;*****************************************************************************
- ;Initialise la pile en bas de la mémoire RAM en adresse 16 bits
- RESET: ldi r16, HIGH(RAMEND) ;Charge la valeur haute de l’adresse en fin mémoire RAM
- out SPH, r16 ;Positionne le pointeur de pile haut sur cette adresse
- ldi r16, LOW(RAMEND) ;Charge la valeur basse de l’adresse en fin mémoire RAM
- out SPL, r16 ;Positionne le pointeur de pile bas sur cette adresse
- ;-----------------------------------------------------------------------------
- ;Initialisation Port B ;PB0 à PB7 = Led
- ser r16 ;Port en sortie (les bits du port sont mis à 1, soit en sortie)
- out DDRC, r16 ;Ecriture sur le registre de direction du port C
- clr r16 ;Port en bas (les bits du port sont mis à 0, Led éteinte)
- out PORTC, r16 ;Port C mis à zéro
- ;-----------------------------------------------------------------------------
- ;Fin d’initialisation
- jmp Debut ;Fin d'initialisation, on saute au début
- ;_____________________________________________________________________________
- ;Interruptions non utilisées
- EXT_INT0: ;IRQ0
- EXT_INT1: ;IRQ1
- EXT_INT2: ;IRQ2
- TIM2_COMP: ;Timer2 Comparaison
- TIM2_OVF: ;Timer2 Overflow
- TIM1_CAPT: ;Timer1 Capture
- TIM1_COMPA: ;Timer1 CompareA
- TIM1_COMPB: ;Timer1 CompareB
- TIM1_OVF: ;Timer1 Overflow
- TIM0_COMP: ;Timer0 Compare
- TIM0_OVF: ;Timer0 Overflow
- SPI_STC: ;SPI Transfer Complete
- USART_RXC: ;USART RX Complete
- USART_UDRE: ;UDR Empty
- USART_TXC: ;USART TX Complete
- EE_RDY: ;EEPROM Ready
- ADC_COMP: ;ADC Conversion Complète
- ANA_COMP: ;Analog Comparator
- TWI: ;Two-wire Serial Interface
- SPM_RDY: ;Store Program Memory Ready
- nop ;Ne rien faire dans cette interruption
- reti ;Fin de l’interruption
- ;*****************************************************************************
- ;_____________________________________________________________________________
- ;Programme principal
- ;_____________________________________________________________________________
- Debut: ;Programme principal
- ldi r17, 1
- Boucle:
- ;out PORTC, r17
- ;Boucle d’attente
- ldi r18, 255 ;Charge le temps d’attente primaire
- ldi r19, 255 ;Charge le temps d’attente secondaire
- Attente: ;Attente
- dec r18 ;Décrément de 1 de la variable r18 (125 ns)
- nop
- brne Attente ;Boucle sur Attente jusqu’à l’obtention d’un zéro dans r18
- ;Boucle secondaire
- ldi r18, 250 ;Réinitialise la boucle primaire
- dec r19 ;Décrémente de 1 la boucle secondaire
- brne Attente ;Boucle sur Attente jusqu’à l’obtention d’un zéro dans r19
- lsl r17 ;multiplie par 2
- ldi r20, $30 ;mask
- eor r20, r17 ;mettre le xor ici
- out PORTC, r20 ;push le r17
- cpi r17,16 ;avent les deux dernier led
- BREQ suite
- jmp Boucle
- suite:
- ldi r18, 255 ;Charge le temps d’attente primaire
- ldi r19, 255 ;Charge le temps d’attente secondaire
- Attenteb: ;Attente
- dec r18 ;Décrément de 1 de la variable r18 (125 ns)
- nop
- brne Attenteb ;Boucle sur Attente jusqu’à l’obtention d’un zéro dans r18
- ;Boucle secondaire
- ldi r18, 250 ;Réinitialise la boucle primaire
- dec r19 ;Décrémente de 1 la boucle secondaire
- brne Attenteb ;Boucle sur Attente jusqu’à l’obtention d’un zéro dans r19
- lsr r17 ;multiplie par 2
- ldi r20, $0 ;mask
- eor r20, r17 ;mettre le xor ici
- out PORTC, r20 ;push le r17
- cpi r17,0 ;avent les deux dernier led
- BREQ Debut
- jmp suite
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement