Plate-forme d'essais

 

Une plate-forme de développement, c'est bien ! mais il manquait une platine pour réaliser quelques essais.

J'ai réalisé pour cela une platine qui pourra se connecter à la plate-forme ICD2.

Le circuit a été réalisé avec le logiciel de CAO LochMaster.

Vous noterez sur la carte les barettes tulipes qui permettront de faire un maximum d'essais. Notamment, il sera possible de tester :

1) Réalisation d'un chenillard (essai des LED) :

J'ai relié sur le PORTD la barette tulipes connectée aux 8 LED.

Le programme en C.

//******************************************************************************
// Project: CHENILLARD.c
// Ce projet fonctionne avec un PIC 16F877-20
// Temporisation avec une boucle de comptage
// 04/04/06	Le projet a pour but de faire défiler l'affichage
// d'une LED
// 
// External Oscillator 20 Mhz, No WDT, No MCLR, PWRT  

/* PORTD */
/* 30   29   28   27   22   21   20   19 pin PIC  	*/
/* 7    6    5    4    3    2    1    0  PORTD		*/ 
/*                                                  */

/* PORTC */
/* 26   25   24   23   18   17   16   15 pin PIC  	*/
/* 7    6    5    4    3    2    1    0  PORTC		*/ 
/*                                                  */

/* PORTB */
/* 40   39   28   37   36   35   34   33 pin PIC  	*/
/* PGD  PGC  5    4    PGM  2    1    0  PORTB		*/ 
/*                                                  */

/* PORTA */
/* 7    6    5    4    3    2  pin PIC  	*/
/* 5    4    3    2    1    0  PORTA        */
/*                                          */

//#define ICD2_DEBUG
#pragma chip PIC16F877
//#pragma config WDTE=off, FOSC=HS

#pragma char LED @ PORTD ;

/****************************************************/
// PROCEDURES
void wait_ms(uns16 tm);

/****************************************************/
void main(void)
{
// VARIABLES
 	 
/****************************************************/
// HORLOGE DU PIC
       
/****************************************************/
// INHIBITION FONCTIONS INUTILES    
 ADCON1=0x06; // Port A utilisé en I/O digital
           
/****************************************************/	
// PORTD
	PORTD = 0b.0000.0000;
	TRISD = 0b.0000.0000; // 0 = Output, 1 = Input  		
 
	LED = 1;
	 
for(;;)
{
	LED=LED<<1;
    wait_ms(1000);
    if (LED == 128) LED =1 ;
 
}
//fin du main
}

/*** Tempo ***/
// tm=1 correspond à 1ms pour Q=20Mz 
void wait_ms(uns16 tm)
{
uns16 t1, t2;

	t1 = tm*5;
	do{
	t2 = 90;		while( --t2!=0 );	}
	while( --t1!=0 );
}

Et ça marche, ...