AIDE A LA PROGRAMMATION DES PICS

 

 Le but de cette page n'est pas de proposer un cours de plus sur les pics pour cela je vous recommande   l'excellente présentation des 16F84 et 16F87X de Bigonoff que vous trouverez  à cette adresse :  http://www.abcelectronique.com/bigonoff/ . Mon but est de vous proposer des routines et des feuilles maquette 

 


Les feuilles maquette sont des documents qui permettent de commencer un programme, les différents registres de configuration sont plus faciles à écrire car l’aide pour chaque bit est présente, donc pas de data-sheet à consulter, des macros sont déjà écrites, certains détails qui m’ont posés des problèmes sont précisés. J’ai pris modèle sur les feuilles de Bigonoff car je les ai trouvées très pratique à l'usage, une chose importante que j’ai appris grâce à lui c’est d’écrire des programmes clairs et suffisamment commentés, que je peux reprendre 6 mois après et comprendre ce que je voulais faire.

Un détail sur les macros de lecture et d'écriture en eeprom ,il y a une ligne écrite de deux façons car il existe deux méthodes pour passer une valeur

1° soit en litteral ex: REEPROM   D'5' ou le 5 est l'adresse mémoire à lire 

2° soit par une variable ex: REEPROM    ma_variable ou ma_variable contient l'adresse mémoire à lire

donc à chacun de ces deux cas correspond une seule ligne pour que la macro récupère la valeur,

soit: movlw   adeeprom     ; charger adresse eeprom (passage de la valeur en littéral)

soit: movf     adeeprom,w  ; charger adresse eeprom (passage de la valeur par une variable)

Ce détail est aussi valable dans les macros écrites par Bigonoff pour les 16F87X

 

Liste des feuilles maquette : 

12F675

12F683

16F628  et  16F628A 

16F88

16F876A et 16F877A

16F767

16F676 C'est le plus petit des 16F, 14 pattes, un peut particulier parmi les 16F, mais plein de ressources.

 La seule chose que je vous demande c’est de m’informer si vous trouver des erreurs, toujours possible, ou si vous les améliorées en me contactant à cette adresse vous pouvez aussi m’envoyer un message pour que je puisse vous communiquer une correction.

 


Une routine soft pour utiliser le port RS232 avec n’importe quel pic  qui a un oscillateur à 4MHz.

La transmission s’effectue à 9600 bauds, pas de parité, 8 bits, 2 bits de stop .

Elle est ici: Routine RS232

Attention de ne pas utiliser une sortie à drain ouvert (RA4 pour les 16F628 et 16F84 par exemple) pour le TX sur le pic.

Il faut utiliser un adaptateur de niveau pour faire correspondre le +12V -12V du RS232 avec respectivement le 0V et le +5V du niveau TTL du pic comme le Max 232 en suivant ce schéma .

 

Pour transmettre un octet il suffit de charger l'octet dans la variable caract et ensuite d'appeler la routine avec call   send  .

Pour recevoir un octet il suffit d'appeler le routine avec call   receive l'octet sera dans caract.

Une seconde routine RS232 soft plus souple ou l'on peut ajuster la fréquence de transmission en fonction de la fréquence du quartz:

RS232.asm


 Une routine RS232 hard qui calcul automatiquement les reglages en fonction de la frequence du quartz et du baudrate desiré il manque un peut de finition au niveau des messages d'alerte et au niveau du traitement de la parité, je la propose à titre indicatif.

  rs232_usart.asm


 Une routine I2C software pour un pic 16F avec quartz de 4MHz, ce qui donne une vitesse d'environ 100 KHz, je l'ai adaptée d'une routine de Pierre Col, par la mise en haute impedance des lignes à 1, elle supporte le mode multi-maître en testant les lignes au préalable.

 I2C.ASM

 


Pour plus de renseignements, n'hesitez pas à me contacter: