Programmation carte à puce

johpascal Messages postés 18 Statut Membre -  
johpascal Messages postés 18 Statut Membre -
Bonjour,
je ss entrain de realiser un lecteur de carte à puce. la partie electroniqe est dejà terminee, mais ss coincé au nivo prog car je m'y connais pas vraiment. je plus grand soucis c'est comment ecrire le code de comparaison ( par ex: pascal) ds l'EEPROM 24c02 par ex. g mm achete un programmateur de carte à puce. le fichier à charger ds la carte est de ".HEX" blocage encoreà ce nivo car je sais pas koi y charger.
g eu un prog de lecteur de carte à puce (ci dessous) qq part mais jusque là ss coincé au nivo de la procedure pr ecrire ds l'eeprom (24cxx)...et je comprend pas aussi o nivo de la comparaison des codes.
mon gros soucis c vrmnt cmt ecrire mon code ds l'eeprom.
merci d'avance pr vos reponses.

#include "KENF AUR.h"

#include EEPROM_SDA PIN_C4
#include EEPROM_SCL PIN_C3
#use delay(clock=20000000)
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT
#use i2c(master, sda=EEPROM_SDA,scl=EEPROM_SCL)
#use rs232(baud=9600,Xmit=PIN_C6,Rcv=PIN_C7

#define EEPROM_ADDRESS byte
#define EEPROM_SIZE 256

#define pres_carte input(PIN_B0)
#define Led_verte_0 output_bit(PIN_C1,0)
#define Led_verte_1 output_bit(PIN_C1,1)
#define gache_0 output_bit(PIN_C2,0)
#define gache_1 output_bit(PIN_C2,1)
#define Led_rouge_0 output_bit(PIN_C0,0)
#define Led_rouge_1 output_bit(PIN_C2,1)

#define NB 4 //nombre de codes autorisés possible

void init_ ext_eeprom()
}
output_float(eeprom_scl);
output_float(eeprom_sda);
}

void write_ext_eeprom(byte data)
{
i2c_start();
i2c_write(0xa0);
i2c_write(0x05);
i2c_write(data);
i2c_stop();
delay_ms(11);
}

byte read_ext_eeprom(void)

byte data;
{
i2c_start();
i2c_write(0xa0);
i2c_write(0x05);
i2c_start();
i2c_Write(0xa1);
data=i2c_read(0);
i2c_stop();
return(data);
}

int8 lecture (void)

{
return(read_ext_eeprom();
}

int8 comparaison(code)

{

int8 code_ init[NB]={'m','i','c','o'}; /*liste de code valides */

int n;

for(n=0;n<NB;n++) if(code==code_init[n]) return(1);
return(0);
}
void programme(void)

{
int8 code;

printf("donne le code à stocker dans la carte à puce");
getch();
code=getch();
printf(code);
write_ext_eeprom(code);
}

void main(void) /*ce programme permet de programmer et de lire la carte à puce i2c
*/

{

unsigned int8 code; /*code contenue sur la carte à puce sur 8 bits */
int1 Rxp;

do
{
set_tris_b(0x01); /* confuguration du bit RBO/INT en entrée */

init_ext_eeprom(); //initialisation de la carte à puce

while(pres_carte==0); //détection de la carte à puce

Rxp=kbhit(); //Rxp=0 si pas réception de la RS232 sinon Rxp=1
if(Rxp==o)

{

code =lecture();
if(comparaison(code)==o)

{

Led_rouge_1;
while(pres_carte==1);
Led_rouge_0;
}
else
{

Led_verte_1;
while(pres_carte==1);
led_verte_0;
gache_1;
delay_ms(2000);
Gache_0;
}

else

{
programme();
while(pres_carte==1);
}

}while(1);

}

}

1 réponse

  1. johpascal Messages postés 18 Statut Membre
     
    Bonjour,
    je ss entrain de realiser un lecteur de carte à puce. la partie electroniqe est dejà terminee, mais ss coincé au nivo prog car je m'y connais pas vraiment. je plus grand soucis c'est comment ecrire le code de comparaison ( par ex: pascal) ds l'EEPROM 24c02 par ex. g mm achete un programmateur de carte à puce. le fichier à charger ds la carte est de ".HEX" blocage encoreà ce nivo car je sais pas koi y charger.
    g eu un prog de lecteur de carte à puce (ci dessous) qq part mais jusque là ss coincé au nivo de la procedure pr ecrire ds l'eeprom (24cxx)...et je comprend pas aussi o nivo de la comparaison des codes.
    mon gros soucis c vrmnt cmt ecrire mon code ds l'eeprom.
    merci d'avance pr vos reponses.

    #include "KENF AUR.h"

    #include EEPROM_SDA PIN_C4
    #include EEPROM_SCL PIN_C3
    #use delay(clock=20000000)
    #fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT
    #use i2c(master, sda=EEPROM_SDA,scl=EEPROM_SCL)
    #use rs232(baud=9600,Xmit=PIN_C6,Rcv=PIN_C7

    #define EEPROM_ADDRESS byte
    #define EEPROM_SIZE 256

    #define pres_carte input(PIN_B0)
    #define Led_verte_0 output_bit(PIN_C1,0)
    #define Led_verte_1 output_bit(PIN_C1,1)
    #define gache_0 output_bit(PIN_C2,0)
    #define gache_1 output_bit(PIN_C2,1)
    #define Led_rouge_0 output_bit(PIN_C0,0)
    #define Led_rouge_1 output_bit(PIN_C2,1)

    #define NB 4 //nombre de codes autorisés possible

    void init_ ext_eeprom()
    }
    output_float(eeprom_scl);
    output_float(eeprom_sda);
    }

    void write_ext_eeprom(byte data)
    {
    i2c_start();
    i2c_write(0xa0);
    i2c_write(0x05);
    i2c_write(data);
    i2c_stop();
    delay_ms(11);
    }

    byte read_ext_eeprom(void)

    byte data;
    {
    i2c_start();
    i2c_write(0xa0);
    i2c_write(0x05);
    i2c_start();
    i2c_Write(0xa1);
    data=i2c_read(0);
    i2c_stop();
    return(data);
    }

    int8 lecture (void)

    {
    return(read_ext_eeprom();
    }

    int8 comparaison(code)

    {

    int8 code_ init[NB]={'m','i','c','o'}; /*liste de code valides */

    int n;

    for(n=0;n<NB;n++) if(code==code_init[n]) return(1);
    return(0);
    }
    void programme(void)

    {
    int8 code;

    printf("donne le code à stocker dans la carte à puce");
    getch();
    code=getch();
    printf(code);
    write_ext_eeprom(code);
    }

    void main(void) /*ce programme permet de programmer et de lire la carte à puce i2c
    */

    {

    unsigned int8 code; /*code contenue sur la carte à puce sur 8 bits */
    int1 Rxp;

    do
    {
    set_tris_b(0x01); /* confuguration du bit RBO/INT en entrée */

    init_ext_eeprom(); //initialisation de la carte à puce

    while(pres_carte==0); //détection de la carte à puce

    Rxp=kbhit(); //Rxp=0 si pas réception de la RS232 sinon Rxp=1
    if(Rxp==o)

    {

    code =lecture();
    if(comparaison(code)==o)

    {

    Led_rouge_1;
    while(pres_carte==1);
    Led_rouge_0;
    }
    else
    {

    Led_verte_1;
    while(pres_carte==1);
    led_verte_0;
    gache_1;
    delay_ms(2000);
    Gache_0;
    }

    else

    {
    programme();
    while(pres_carte==1);
    }

    }while(1);

    }

    }
    0