Apprendre la programamtion des PIc Mid Range et 16f88

Bonjour,

j'ai le coffret Apprendre la programmation des PIC Mid Range 4 eme édition , fournit avec un 16f88 mais dans le livre tout les exemples sont basés sur le 16f84 . Dans le cdrom il donne les modifications à apporter pour que les exemples fonctionnent avec le 16f88 .

tous ces exemples sont basés sur l'utilisation d'un quartz externe . J'ai trouvé un site sur lequel est donné un exemple utilisant le quartz interne >

formatting link

j'ai essayé d'adapter cette solution à un exemple du livre ,le clignotant mais ça ne marche pas . J'ai ajouté la ligne suivante

__CONFIG _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_CLKOUT

à ce programme

;------------ Exemple d'application avec un PIC : Un clignotant

---------------

> ; Titre : Clignotant > ; Date : 01 MARS 2010 > ; Auteur : P.M > ; PIC utilisé : PIC 16 F 88 > ; On réalise un clignotant sur la broche RB0 d' un PIC 16 F 88 le quartz est

de 4

; Mhz , on effectue une tempo environ égale à 0.2 seconde. > ; un bouton marche sur le port A permet de lancer le clignotant à une 1 ère

fréquence.

; un 2 ème bouton permet d' obtenir une 2 eme fréquence > ; un 3 ème bouton permet d' obtenir une 3 eme fréquence > > ;------------ Directive d' assemblage pour MPLAB --------------- > > list p=16f88 > #include p16f88.inc > errorlevel -302 > > > ;------------ Définition des constantes --------------- > > #define inter0 0 ; bouton marche > #define inter1 1 ; bouton 1 ere fréquence > #define inter2 2 ; bouton 2 eme fréquence > > ;------------ Définition des registres temporaires --------------- > > retard1 EQU 0x20 ; le registre temporaire retard1 se trouve
à l' adresse 20
tp2 EQU 0x21 ; le registre temporaire tp2 se trouve à l'

adresse 21

retard2 EQU 0x22 ; le registre temporaire retard1 se trouve
à l' adresse 22
memo EQU 0x23 ; le registre temporaire memo se trouve à l'

adresse 23

> ;------------ Init des ports A et B --------------- > > ORG 0 > > MOVLW 0x07 ; on met 07 dans le registre W > MOVWF CMCON ; on met 07 dans le registre

CMCON les comparateurs sont

; inhibés > > > 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 0x00 ; on met 00 dans le registre W > MOVWF TRISB ; on met 00 dans le port B il

est programmé en sortie

> MOVLW 0x3F ; on met 3F dans le registre W > MOVWF TRISA ; on met 3F dans le port A il

est programmé en entrée

> BCF STATUS,5 ; on remet à 0 le 5eme bit du registre status pour

accéder

; à la 1eme page mémoire > > ;------------ raz de la led et du registre memo --------------- > > > MOVLW 0x00 ; on met 00 dans le registre W > MOVWF PORTB ; on met W sur le port B ( led ) > MOVWF memo ; on met W dans le registre memo > MOVWF tp2 ; on met W dans le registre tp2 > > ;------------ Programme principal --------------- > > debut > > btfss PORTA,inter0 ; interrupteur 0 ( marche ) appuyé ? si oui on continu

sinon

;va à debut > goto debut > > ; -------------------- Test des inters ---------------------- > > btfss PORTA,inter1 ; interrupteur 1 ( freq 1 ) appuyé ? si non on va
à suite
goto suite > MOVLW 0x01 ; on met 01 dans le registre W > MOVWF tp2 ; on met W dans le registre tp2 > > suite > btfss PORTA,inter2 ; interrupteur 2 ( freq 2 ) appuyé ? si oui va
à freq2
goto suite2 > MOVLW 0x02 ; on met 02 dans le registre W > MOVWF tp2 ; on met W dans le registre tp2 > suite2 > > MOVLW 0xFF ; on met ff dans le registre W > MOVWF retard1 ; on met W dans le registre retard1 ( 1 ere

fréquence )

MOVWF retard2 ; on met W dans le registre retard2 ( 1 ere

fréquence )

> MOVLW 0xAA ; on met AA dans le registre W ( 2 eme

fréquence )

btfsc tp2,0 ; on test le bit 0 de tp2 si = 1 alors on

saute la prochaine instruction

MOVWF retard2 ; sinon on met W dans le registre retard2 ( 2

ere fréquence )

> MOVLW 0x55 ; on met 55 dans le registre W ( 3 eme

fréquence )

btfsc tp2,1 ; on test le bit 1 de tp2 si = 1 alors on

saute la prochaine instruction

MOVWF retard2 ; sinon on met W dans le registre retard2 ( 3

ere fréquence )

> COMF memo,F ; On effectue le complément du registre memo et > MOVF memo,W ; on met le resultat dans W > MOVWF PORTB ; on met W sur le port B ( leds ) > > > CALL tempo ; on appel la temporisation > > GOTO debut ; retour au début du programme > > > ;------------ Programme de temporisation --------------- > > tempo > DECFSZ retard1,F ; on décrémente retard1 et on saute la

prochaine instruction si

GOTO tempo ; le registre retard1 = 0 sinon retour à

tempo

> movlw 0xFF ; on recharge retard1 > movwf retard1 > > DECFSZ retard2,F ; on décrémente retard2 et on saute la

prochaine instruction si

GOTO tempo ; le registre retard2 = 0 sinon retour à

tempo

> > movlw 0x00 ; On met 0 dans TP2 > movwf tp2 > > RETURN ; retour au programme principal après l

'instruction CALL

> END > > > > > > >

Question comment faire pour utiliser le quartz interne au pic16f88 avec le programme "clignotant" . y a t il une modification sur les branchements du pic ( en plus de celui concernant osc1 et osc2 )

Merci .

Reply to
steph
Loading thread data ...

Le 01/06/2012 09:20, steph a écrit :

solution trouvée grace à Kripton et décrite plus bas dans le message "activer RB3 sur pic16F88"

merci .

Reply to
steph

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.