Programme fonctionnant sous le pic16f84 permettant de faire fonctionner un led en couleur avec des temporisations.
Source / Exemple :
;;;;;;;;;;;;;;;;;;;;;;;;text du 18/3/2009;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIST P=16F84, R=DEC
#include "P16F84.INC"
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
__IDLOCS 1998h
mv1 EQU h'0C'
mv2 EQU h'0D'
mv3 EQU h'0E'
mv4 EQU h'0F'
;================================================;
ledblue_a0 EQU h'0'
ledgreen_a1 EQU h'2'
;================================================;
ledred_b0 EQU h'0'
ledyellow_b2 EQU h'2'
;================================================;
ORG 0x004
GOTO projet
;;;;;;;;;;;;;;;;;;;;;;;;; zorne des souprogrammes;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
projet ; contiguration des ports du pic
bsf STATUS,RP0 ; passé en banque 1
; 1 pour dit en entrée OU 0 en sortie
movlw b'00000' ; 0 0 0 0 0
movwf TRISA ; A4 A3 A2 A1 A0
movlw b'00000000' ; 0 0 0 0 0 0 0 0
movwf TRISB ; B7 B6 B5 B4 B3 B2 B1 B0
bcf STATUS,RP0 ; passé en banque 0
clrf PORTA ; effacé les ports du pic portA
clrf PORTB ; effacé les ports du pic portB
program ; debut du program
bsf PORTA,ledblue_a0
bsf PORTB,ledyellow_b2
call temp_7s
bsf PORTA,ledblue_a0
bsf PORTB,ledred_b0
bsf PORTB,ledyellow_b2
call temp_10s
bsf PORTA,ledblue_a0
bsf PORTB,ledred_b0
bsf PORTB,ledyellow_b2
call temp_17s
bsf PORTB,ledred_b0
bsf PORTA,ledblue_a0
call temp_2s
bsf PORTB,ledred_b0
bsf PORTB,ledyellow_b2
bsf PORTA,ledblue_a0
call temp_17s
bsf PORTB,ledyellow_b2
bsf PORTA,ledgreen_a1
bcf PORTB,ledred_b0
call temp_2s
bsf PORTA,ledblue_a0
bsf PORTB,ledyellow_b2
bsf PORTB,ledred_b0
call temp_17s
bcf PORTA,ledgreen_a1
bsf PORTA,ledblue_a0
call temp_7s
goto program ; retour au program
;;;;;;;;;;;;;;;;;;;;; sous-programme ;;;;;;;;;;;;;;;;;;;;;;;
temp_2s
movlw d'255'
movwf mv1
movlw d'255'
movwf mv2
movlw d'12'
movwf mv3
gf decfsz mv1,f ; -1 du contenu de mv1 saut si mv1 = 0
goto gf
decfsz mv2,f ; -1 du contenu de mv2 saut si mv2 = 0
goto gf
decfsz mv3,f ; -1 du contenu de mv3 saut si mv3 = 0
goto gf
return
;=============================================================
temp_7s
movlw d'255'
movwf mv1
movlw d'255'
movwf mv2
movlw d'15'
movwf mv3
gf1 decfsz mv1,f ; -1 du contenu de mv1 saut si mv1 = 0
goto gf1
decfsz mv2,f ; -1 du contenu de mv2 saut si mv2 = 0
goto gf1
decfsz mv3,f ; -1 du contenu de mv3 saut si mv3 = 0
goto gf1
return
;=============================================================
temp_17s
movlw d'255'
movwf mv1
movlw d'255'
movwf mv2
movlw d'80'
movwf mv3
gf2 decfsz mv1,f ; -1 du contenu de mv1 saut si mv1 = 0
goto gf2
decfsz mv2,f ; -1 du contenu de mv2 saut si mv2 = 0
goto gf2
decfsz mv3,f ; -1 du contenu de mv3 saut si mv3 = 0
goto gf2
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
temp_10s
movlw d'255'
movwf mv1
movlw d'255'
movwf mv2
movlw d'30'
movwf mv3
gf3 decfsz mv1,f ; -1 du contenu de mv1 saut si mv1 = 0
goto gf3
decfsz mv2,f ; -1 du contenu de mv2 saut si mv2 = 0
goto gf3
decfsz mv3,f ; -1 du contenu de mv3 saut si mv3 = 0
goto gf3
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END ; fin du projet
Conclusion :
dites moi ce que vous en pensez.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.