Hola que tal a todos. He creado esta libreria de subrutinas para operar con tarjetas chip SmartCard.
Por ahora es solo de lectura de ID de la misma.
Queria consultar con ustedes que les parece y que modificarian o agregarian.
La información para armar estas subrutinas la saque de pablin.
http://www.pablin.com.ar/electron/información/chipcard/index.htm
el chip esta siempre en modo lectura, en este caso nunca pasa a modo de programacion, es decir que Vpp se conecta a Vcc y RW en nivel bajo.
muchas gracias,
mano.
Por ahora es solo de lectura de ID de la misma.
Queria consultar con ustedes que les parece y que modificarian o agregarian.
La información para armar estas subrutinas la saque de pablin.
http://www.pablin.com.ar/electron/información/chipcard/index.htm
Código:
;
;
;En esta libreria tenemos tres tareas basicas para aplicaciones
;con tarjetas chip SmartCard de 8 contactos.
;
;*****************************************************************************************************
;SC_LeeID = Lee los tres bytes de ID de la tarjeta y los guarda en tres registros
; "SC_IDByte1", "SC_IDByte2" y "SC_IDByte3".
;
; // DEFINIR LINEA Y PUERTO DEL MICRO DONDE SE ENCUENTRA EL PIN "IO" DE //
; // LA TARJETA CHIP COMO "SC_IO" //
;
;*****************************************************************************************************
;
;SC_Reset = Resetea la tarjeta poniendola en la direccion 0 de memoria.
; // DEFINIR LINEA Y PUERTO DEL MICRO DONDE SE ENCUENTRA EL PIN "RESET" DE //
; // LA TARJETA CHIP COMO "SC_Rst" //
;
;*****************************************************************************************************
;
;SC_Clock = Da un pulso de reloj a la tarjeta.
;
; // DEFINIR LINEA Y PUERTO DEL MICRO DONDE SE ENCUENTRA EL PIN "CLOCK" DE //
; // LA TARJETA CHIP COMO "SC_CLK" //
;
;*****************************************************************************************************
CBLOCK
SC_IDByte1
SC_IDByte2
SC_IDByte3
BCont_A
ENDC
SC_LeeID
clrf SC_IDByte1 ;-----------------------------------------------------
clrf SC_IDByte2
clrf SC_IDByte3
call SC_Reset
movlw .40
movwf BCont_A
CKInt bsf SC_CLK
call Retardo_1ms
bcf SC_CLK
call Retardo_1ms
decfsz BCont_A
goto CKInt ;------------------------------------------------------
movlw .8 ;------------------------------------------------------
movwf BCont_A
Byte1 btfss SC_IO
goto EsCero1
EsUno1 bsf STATUS,C
goto FinID1
EsCero1 bcf STATUS,C ;Recupera el Byte #1
FinID1 rrf SC_IDByte1,F ;de ID de la SmartCard
bsf SC_CLK
call Retardo_1ms
bcf SC_CLK
call Retardo_1ms
decfsz BCont_A
goto Byte1 ;------------------------------------------------------
movlw .8 ;------------------------------------------------------
movwf BCont_A
Byte2 btfss SC_IO
goto EsCero2
EsUno2 bsf STATUS,C
goto FinID2
EsCero2 bcf STATUS,C ;Recupera el Byte #2
FinID2 rrf SC_IDByte2,F ;de ID de la SmartCard
bsf SC_CLK
call Retardo_1ms
bcf SC_CLK
call Retardo_1ms
decfsz BCont_A
goto Byte2 ;-----------------------------------------------------
movlw .8 ;-----------------------------------------------------
movwf BCont_A
Byte3 btfss SC_IO
goto EsCero3
EsUno3 bsf STATUS,C
goto FinID3
EsCero3 bcf STATUS,C ;Recupera el Byte #3
FinID3 rrf SC_IDByte3,F ;de ID de la SmartCard
bsf SC_CLK
call Retardo_1ms
bcf SC_CLK
call Retardo_1ms
decfsz BCont_A
goto Byte3 ;-----------------------------------------------------
return ;Sale de la subrutina de lectura de la SmartCard
;*****************************************************************************************************
SC_Reset
bcf SC_Rst
call Retardo_1ms
call SC_Clock
bsf SC_Rst
return
;*****************************************************************************************************
SC_Clock
bcf SC_Clk
call Retardo_1ms
bsf SC_Clk
call Retardo_1ms
return
;*****************************************************************************************************
;/////////////////////////////////////////////////////////////////////////////////////////////////////
;/////////////////////// //////////////////////
;/////////////////////// Libreria hecha por Mariano Renzi 2008 //////////////////////
;/////////////////////// //////////////////////
;/////////////////////////////////////////////////////////////////////////////////////////////////////
;*****************************************************************************************************
el chip esta siempre en modo lectura, en este caso nunca pasa a modo de programacion, es decir que Vpp se conecta a Vcc y RW en nivel bajo.
muchas gracias,
mano.