Menu

Programmation carte à puce [Fermé]

johpascal 17 Messages postés mercredi 4 avril 2007Date d'inscription 16 août 2013 Dernière intervention - 9 juin 2008 à 21:55 - Dernière réponse : johpascal 17 Messages postés mercredi 4 avril 2007Date d'inscription 16 août 2013 Dernière intervention
- 10 juin 2008 à 14:21
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);

}

}
Afficher la suite 

1 réponse

johpascal 17 Messages postés mercredi 4 avril 2007Date d'inscription 16 août 2013 Dernière intervention - 10 juin 2008 à 14:21
0
Merci
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);

}

}