Siguiendo el hilo de los ejemplos
, aqui dejo un pequeño ejemplo de la lectura del codigo de un dispositivo ibutton.
INCLUDE "modedefs.bas"
DEFINE OSC 20
'@ device pic16f628, hs_osc, wdt_off, pwrt_on, bod_on, protect_off
cmcon = 7 ' to disable portA comparators
intcon.7 = 0 ' to disable interrupts
vrcon = 0 ' to disable reference voltage output at porta.2
ib VAR BYTE[8]
i VAR BYTE
TRISA = %00000000'RA output
TRISB = %00000010'RB output, RB1 input
OPTION_REG=$2F '00101111 Enable Timer0, rising edge, pre->WDT
GoTo start
start:
'While PORTB.1=3D1
'Wend
Pause 50
IF PORTB.1=0 Then
SerOut 3,T9600,["Button Detected",13,10]'output serial, on RB3
GoTo start
EndIF
OWOut PORTB.1,1,[$33]'output command to iButton
OWIn PORTB.1,0,[STR ib\8]'read 64 bit string
IF ib[1]=255 Then start'if error reading do it again
SerOut 3,T9600,["Button Detected",13,10]'output serial, on RB3
SerOut 3,T9600,["FAMILIA",13,10]'output serial, on RB3
SerOut2 3,84,[hex ib[0]]'display the code
SerOut 3,T9600,[13,10]
SerOut 3,T9600,["CODIGO",13,10]'output serial, on RB3
For i=7 TO 1 step -1
SerOut2 3,84,[hex ib
]'display the code
next i
SerOut 3,T9600,[13,10]
SerOut 3,T9600,[13,10]
GoTo start
End