;************ Directive d' assemblage pour MPLAB ***********
list p=16f84A
#include p16f84A.inc
__Config _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
;.............................................................
;******************** Variables utilisées ****************
var1 equ C
#define bphaut
#define bpbas
#define fchaut
#define fcbas
;********** Numero de version / données EEPROM ***********
ORG h'2100'
de "Version 1.0"
;************* definition des registres temporaires **********
retard1 EQU 0X0C ;le registre temporaire retard1 se trouve a l'adresse 0C
retard2 EQU 0X0F ;""""""""""""""""""""""""""""""""""""""""""""""""""""" 0F
retard3 EQU 0x10 ;""""""""""""""""""""""""""""""""""""""""""""""""""""" 0X10
;***************** Programme principal *******************
ORG 0
GOTO init
;*********** Sous Programme d 'interruption **********
ORG 4
;*********** IT sur RB4-RB7***********************************
bsf PORTA,0 ; on allume la led connectée sur ra0
call tempo
bcf PORTA,0
bcf INTCON,RBIF ; on raz le flag RBIF
bcf INTCON,RBIE
retfie ; retour d 'interruption
; *********** Programme d' INIT ***********************
init
bsf INTCON,GIE ; autorise les Interruptions
bsf INTCON,RBIE ; autorise l ' IT sur RB4-RB7
bsf STATUS,5 ; on met à 1 le 5eme bit du registre status pour accéder
; à la 2eme page mémoire ( pour trisa et trisb )
MOVLW B'11111100' ; programmation de rb0-rb7
MOVWF TRISB ; on met 11110000 dans le registre de direction du port B
MOVLW B'00110' ; programmation de ra0-ra4
MOVWF TRISA ; on met 00000 dans le registre de direction du port A
bcf STATUS,5 ; on remet à 0 le 5eme bit du registre status pour accéder
; à la 1eme page mémoire
clrf PORTA ; raz du port A
clrf PORTB ; raz du port B
; ***************** Début de votre Programme ***********************
;****************** Programme de temporisation ***********************
; modifier les valeurs dans retard1 retard2 et retard3 pour changer la temporisation
tempo
MOVLW 0xFF ; on met ff dans le registre W (selon la tempo souhaitée)
MOVWF retard1 ; on met W dans le registre retard1
MOVWF retard2 ; on met W dans le registre retard2
MOVLW 0x12 ; on met 12 dans le registre W (selon la tempo souhaitée)
MOVWF retard3 ; on met W dans le registre retard3
attente
DECFSZ retard1,F ; on décrémente retard1 et on saute la prochaine instruction si
GOTO attente ; le registre retard1 = 0 sinon retour à attente
movlw 0xFF ; on recharge retard1 (selon la tempo souhaitée)
movwf retard1
DECFSZ retard2,F ; on décrémente retard2 et on saute la prochaine instruction si
GOTO attente ; le registre retard2 = 0 sinon retour à attente
movlw 0xFF ; on recharge retard2 (selon la tempo souhaitée)
movwf retard2
DECFSZ retard3,F ; on décrémente retard3 et on saute la prochaine instruction si
GOTO attente ; le registre retard3 = 0 sinon retour à attente
RETURN ; retour au programme principal après l 'instruction CALL
end ; fin du programme
Partager