Pointeuse par carte à puce

nasrinamsia1 Messages postés 1 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 23 août 2005 - 23 août 2005 à 16:57
powerf Messages postés 8 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 21 octobre 2008 - 21 oct. 2008 à 22:19
Je viens de faire un projet d'une pointeuse par carte à puce et je cherche des informations à propos de cela. merci

2 réponses

powerf Messages postés 8 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 21 octobre 2008
21 oct. 2008 à 22:19
pour ça il te faut savoir la lire .si tu veut faire aver la gold (16f84+24c16) c facile tu lit l'eeprom du pic en mode programation et puis tu fait se qu'il te sempble, j'ai deja ecrit un source qui lit les 64 octets du 16f84(integré dans la carte) avec un pic16f84a je me suis basé sur la doc de microchip :

********************************************************
;------------ Exemple d'application avec un PIC : Un clignotant ---------------

; Titre : lecture d'une golde
; Date : 26 avril 2007
; Auteur : B.A
;la_vera_strada@yahoo.fr
; PIC utilisé : PIC 16 F 84(A)
; On réalise une initialisation a la lecture sur une carte a puce asynchrone (golde) qui contien un microcontroleur pic
; donc on lit un pic avec un pic!l'horloge elle est sur RA1 et RB7 ou SDA elle est sur RA0,et la sortie de lecture est sur RA2
;et enfin MCLR est sur RA3.
;------------ Directive d' assemblage pour MPLAB ---------------


LIST p=16F84 ; Définition de processeur
#include ; Définitions des constantes

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC



W EQU 0x00 ; variable W = 0
F EQU 0x01 ; variable F = 1
;------------ Définition des constantes ---------------


#define scl 1 ; horloge
#define sda 0 ; envoie des données
#define mclr 3 ; mode de prog
#define ack 2 ; lecture des données

;------------ Définition des registres temporaires ---------------

retard1 EQU 0x0C ; le registre temporaire retard1 se trouve à l' adresse 0C
tp2 EQU 0x10 ; le registre temporaire tp2 se trouve à l' adresse 10
retard2 EQU 0x0F ; le registre temporaire retard1 se trouve à l' adresse 0F
memo EQU 0x12 ; le registre temporaire memo se trouve à l' adresse 12
tp1 EQU 0x13 ; le registre temporaire memo se trouve à l' adresse 12
nbr EQU 0x14 ; le registre temporaire memo se trouve à l' adresse 12

;------------ Init des ports A et B ---------------
;;;; Donnees EEPROM interne du PIC : ;;;;

EEPROM_DATA equ 2100h

ORG EEPROM_DATA ; Contenu quelconque sous
DE 0C7h,005h,082h,085h ; des formes differentes...
DE 0B7h,065h,024h,0FFh ; Ces 64 octets d'EEPROM



ORG 0

BSF STATUS,5 ; on met à 1 le 5eme bit du registre status pour accéder
; à la 2eme page mémoire ( pour trisa et trisb )

MOVLW 0x00
MOVWF TRISB

MOVLW B'00100'
MOVWF TRISA

BCF STATUS,5 ; on remet à 0 le 5eme bit du registre status pour accéder
; à la 1eme page mémoire

;------------ raz de la led et du registre memo ---------------
int

MOVLW 0x00
MOVWF PORTB
MOVWF memo
MOVWF tp2
call tempo1
clrf nbr


;------------ Programme principal ---------------

debut
; ********le bit star**************

bcf PORTA,sda
bcf PORTA,scl
bcf PORTA,mclr
call tempo
bsf PORTA,mclr
call tempo
;*******************
call envoi1
call envoi0
call envoi1
call envoi0
call envoi0
call envoi0

call tempo
call tempo
;**********lecture*************
ire_oct
bsf PORTA,sda
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
movlw B'00001000'
movwf tp2
clrf memo
boucler
bcf PORTA,scl
call tempo
rrf memo
bcf memo,7
BTFSc PORTA,ack ;- on teste SDA : vaut-il '0' ?
bsf memo,7
bsf PORTA,scl
call tempo
DECFSZ tp2,F ;- huitieme cycle ?
GOTO boucler ; si non, on reboucle : cycle suivant.

;************le bit stop*************
bcf PORTA,sda
bcf PORTA,scl
call tempo
bcf PORTA,mclr
call tempo
tour
movf memo,W
movwf PORTB
goto tour



envoi1 ;*****************le bit 1*********
bsf PORTA,sda
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
bcf PORTA,scl
call tempo

return


envoi0 ;*****************le bit 0*********
bcf PORTA,sda
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
bcf PORTA,scl
call tempo

return






tempo ;*********une tamporisation de 5us************

nop
nop

RETURN ; retour au programme principal après l 'instruction CALL

tempo1
movlw 0xFF
movwf retard1
movlw 0xFF
movwf retard2
boucle11
DECFSZ retard1,F ; on décrémente retard1 et on saute la prochaine instruction si
GOTO boucle11 ; le registre retard1 = 0 sinon retour à tempo


movlw 0xFF
movwf retard1
DECFSZ retard2,F ; on décrémente retard2 et on saute la prochaine instruction si
GOTO boucle11 ; le registre retard2 = 0 sinon retour à tempo


RETURN ; retour au programme principal après l 'instruction CALL


END
0
powerf Messages postés 8 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 21 octobre 2008
21 oct. 2008 à 22:19
pour ça il te faut savoir la lire .si tu veut faire aver la gold (16f84+24c16) c facile tu lit l'eeprom du pic en mode programation et puis tu fait se qu'il te sempble, j'ai deja ecrit un source qui lit les 64 octets du 16f84(integré dans la carte) avec un pic16f84a je me suis basé sur la doc de microchip :

********************************************************
;------------ Exemple d'application avec un PIC : Un clignotant ---------------

; Titre : lecture d'une golde
; Date : 26 avril 2007
; Auteur : B.A
;la_vera_strada@yahoo.fr
; PIC utilisé : PIC 16 F 84(A)
; On réalise une initialisation a la lecture sur une carte a puce asynchrone (golde) qui contien un microcontroleur pic
; donc on lit un pic avec un pic!l'horloge elle est sur RA1 et RB7 ou SDA elle est sur RA0,et la sortie de lecture est sur RA2
;et enfin MCLR est sur RA3.
;------------ Directive d' assemblage pour MPLAB ---------------


LIST p=16F84 ; Définition de processeur
#include ; Définitions des constantes

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC



W EQU 0x00 ; variable W = 0
F EQU 0x01 ; variable F = 1
;------------ Définition des constantes ---------------


#define scl 1 ; horloge
#define sda 0 ; envoie des données
#define mclr 3 ; mode de prog
#define ack 2 ; lecture des données

;------------ Définition des registres temporaires ---------------

retard1 EQU 0x0C ; le registre temporaire retard1 se trouve à l' adresse 0C
tp2 EQU 0x10 ; le registre temporaire tp2 se trouve à l' adresse 10
retard2 EQU 0x0F ; le registre temporaire retard1 se trouve à l' adresse 0F
memo EQU 0x12 ; le registre temporaire memo se trouve à l' adresse 12
tp1 EQU 0x13 ; le registre temporaire memo se trouve à l' adresse 12
nbr EQU 0x14 ; le registre temporaire memo se trouve à l' adresse 12

;------------ Init des ports A et B ---------------
;;;; Donnees EEPROM interne du PIC : ;;;;

EEPROM_DATA equ 2100h

ORG EEPROM_DATA ; Contenu quelconque sous
DE 0C7h,005h,082h,085h ; des formes differentes...
DE 0B7h,065h,024h,0FFh ; Ces 64 octets d'EEPROM



ORG 0

BSF STATUS,5 ; on met à 1 le 5eme bit du registre status pour accéder
; à la 2eme page mémoire ( pour trisa et trisb )

MOVLW 0x00
MOVWF TRISB

MOVLW B'00100'
MOVWF TRISA

BCF STATUS,5 ; on remet à 0 le 5eme bit du registre status pour accéder
; à la 1eme page mémoire

;------------ raz de la led et du registre memo ---------------
int

MOVLW 0x00
MOVWF PORTB
MOVWF memo
MOVWF tp2
call tempo1
clrf nbr


;------------ Programme principal ---------------

debut
; ********le bit star**************

bcf PORTA,sda
bcf PORTA,scl
bcf PORTA,mclr
call tempo
bsf PORTA,mclr
call tempo
;*******************
call envoi1
call envoi0
call envoi1
call envoi0
call envoi0
call envoi0

call tempo
call tempo
;**********lecture*************
ire_oct
bsf PORTA,sda
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
movlw B'00001000'
movwf tp2
clrf memo
boucler
bcf PORTA,scl
call tempo
rrf memo
bcf memo,7
BTFSc PORTA,ack ;- on teste SDA : vaut-il '0' ?
bsf memo,7
bsf PORTA,scl
call tempo
DECFSZ tp2,F ;- huitieme cycle ?
GOTO boucler ; si non, on reboucle : cycle suivant.

;************le bit stop*************
bcf PORTA,sda
bcf PORTA,scl
call tempo
bcf PORTA,mclr
call tempo
tour
movf memo,W
movwf PORTB
goto tour



envoi1 ;*****************le bit 1*********
bsf PORTA,sda
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
bcf PORTA,scl
call tempo

return


envoi0 ;*****************le bit 0*********
bcf PORTA,sda
bcf PORTA,scl
call tempo
bsf PORTA,scl
call tempo
bcf PORTA,scl
call tempo

return






tempo ;*********une tamporisation de 5us************

nop
nop

RETURN ; retour au programme principal après l 'instruction CALL

tempo1
movlw 0xFF
movwf retard1
movlw 0xFF
movwf retard2
boucle11
DECFSZ retard1,F ; on décrémente retard1 et on saute la prochaine instruction si
GOTO boucle11 ; le registre retard1 = 0 sinon retour à tempo


movlw 0xFF
movwf retard1
DECFSZ retard2,F ; on décrémente retard2 et on saute la prochaine instruction si
GOTO boucle11 ; le registre retard2 = 0 sinon retour à tempo


RETURN ; retour au programme principal après l 'instruction CALL


END
0
Rejoignez-nous