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 24C64 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,NOBRO WNOUT
#use i2c(master, sda=EEPROM_SDA,scl=EEPROM_SCL)
#use rs232(baud=9600,Xmit=PIN_C6,Rc v=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);
}
}
-----