bonjour,

Je réalise en ce moment un projet sur la carte easypic4 de mikroelektronika.
Je doit afficher des chiffres sur un afficheur 7 segment branchés sur le port série A de la carte.

J'ai trouver un programme qui permet de le faire sur le PORTC mais je n'arrive pas à la faire fonctionner sur les autres ports.

Code:
/*
 * Project name:
     Serial_7seg
 * Copyright:
     (c) Mikroelektronika, 2007.
 * Description:
     This code demonstrates working with max7219 on Serial 7-seg Display2 board.
     Eight 7 segment displays are connected to MAX7219.
 * Test configuration:
     MCU:             P16F877A
     Dev.Board:       EasyPIC4
     Oscillator:      HS, 8.0 MHz
     Ext. Modules:    Serial 7-seg Display2 board on PORTC
     SW:              mikroC v7.0
     Notes:           Turn on PIC and CS0 switches on Serial 7-seg Display2 board
*/

#define CHIP_SELECT F0

char i;

void max7219_init1() {
  PORTC.CHIP_SELECT = 0;       // SELECT MAX
  SPI_write(0x09);             // BCD mode for digit decoding
  SPI_write(0xFF);
  PORTC.CHIP_SELECT = 1;       // DESELECT MAX

  PORTC.CHIP_SELECT = 0;       // SELECT MAX
  SPI_write(0x0A);
  SPI_write(0x0F);             // Segment luminosity intensity
  PORTC.CHIP_SELECT = 1;       // DESELECT MAX

  PORTC.CHIP_SELECT = 0;       // SELECT MAX
  SPI_write(0x0B);
  SPI_write(0x07);             // Display refresh
  PORTC.CHIP_SELECT = 1;       // DESELECT MAX

  PORTC.CHIP_SELECT = 0;       // SELECT MAX
  SPI_write(0x0C);
  SPI_write(0x01);             // Turn on the display
  PORTC.CHIP_SELECT = 1;       // DESELECT MAX

  PORTC.CHIP_SELECT = 0;       // SELECT MAX
  SPI_write(0x00);
  SPI_write(0xFF);             // No test
  PORTC.CHIP_SELECT = 1;       // DESELECT MAX
}

void main() {
   char i;
  TRISC.CHIP_SELECT = 0x0;       // Set RC0 pin as output
  
  SPI_init();                  // Initialize SPI module
  
  max7219_init1();             // initialize  max7219

      for(i=0;i<=8;i++){
    PORTC.CHIP_SELECT = 0;     // select max7219
    SPI_write(i);              // send i to max7219 (digit place)
    SPI_write(9-i);            // send 9-i to max7219 (digit value)
    PORTC.CHIP_SELECT = 1;
  }

  
}//~!

Si je remplace tout les PORTC par PORTB et que je remplace également TRISC par TRISB cela ne marche pas ....
pourquoi ????

autre question : peut on redéfinir les entrées / sorties en plein millieu du programme : j'ai un clavier de brancher sur le portC. Est ce que je peut le définir en entrée quand je gère le clavier et en sortie quand je gère l'afficheur???
(je ne sait pas si ça peut marcher ... )


Merci