TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: LuisFrino en 22 de Noviembre de 2003, 08:59:00

Título: Como leer un IButton para control de acceso y comando de alarma o maquinas
Publicado por: LuisFrino en 22 de Noviembre de 2003, 08:59:00
El codigo no esta completo pero da buenas pistas
de como leer dispositivos Dallas de la linea DS
despues con tiempo voy a postear otros metodos
de hacer llaves codificadas mas sencillas
NOTA estos codigos son para niveles avanzados
y es bueno  como ejemplo  para aquellos que no saben mezclar codigo basic con assembler



"*****************************************************************************************
" Alarma para Motos controlada por IButton por Marcos Ledesma   Luis Frino
Leo Gonzales
"---Asignación de pines  16F84-----------------------------------

"PIN Nº:   NOMBRE:     USO/CONECCION:
"01         RA2         salida al buzzer
"02         RA3          salida al relay y sirena
"03          RA4/T0CKI   nada
"04          -MCLR       RESET DEL MICRO
"05          Vss          GND
"06          RB0/Int       Conección con el I"Button ( RX )
"07          RB1          Conección con el I"Button ( TX )
"08          RB2          Jumper de programación
"09         RB3         nada
"10         RB4         nada
"11         RB5         nada
"12         RB6         nada
"13         RB7         nada
"14          Vdd          +5Vdc
"15          OSC2/CLKOUT XTAL 4Mhz.
"16          OSC1/CLKIN  XTAL 4Mhz.
"17          RA0          entrada para el sensor de mercurio
"18         RA1         Pulsador de asalto  

"-----------------------------------------------------------------

"---Definiciones--------------------------------------------------
"DEFINE OSC 16
DEFINE NO_CLRWDT 1

sen_merc    var porta.0                 "entrada sensor de mercurio
pul_asal    var porta.1                 "entrada pulsador de asalto
buzzer      var porta.2                 "salida sonido de activacion
relay       var porta.3                 "salida relay, sirena y stop de motor
x           var word                    "variable (word) para hacer loops
asd         var byte                    "Variable de uso general
temp        var byte                    "Variable temporal de ectura
llave       var byte(6)                 "Los 48 bit del codigo del i´button leido
llaves      var byte                    "cantidad de llaves programadas
delayasm    var byte
cambio      var bit                     "Variable para activar y desactivar
sibutton    var bit                     "Variable de i"button detectado
bitleido    var bit
paso        var bit
rxibutton   var portb.0
txibutton   var portb.1                 "Pata de conección con el i"button
programa    var portb.2                 "Pata de Programación
trisa = %11110011                       "configuracion puerto a: RA0 y RA1 = entradas,
                                        "RA2 y RA3 = salidas ( el resto no importa )
trisb = %11111101                       "configuro todo el puerto b como entrada



" Leer numero de serie del i"buton
"----------------------------------------------------------------------
delay480:
asm
        movlw   0x9e
        movwf   _delayasm
dly480
       decfsz   _delayasm,f
        goto   dly480
       nop
        nop
       return
endasm
        return

delay15:
asm
        movlw   0x03
        movwf   _delayasm
dly15
       decfsz   _delayasm,f
        goto   dly15
       nop
        nop
       return
endasm
        return
       

delay60:
asm
        movlw   0x12
        movwf   _delayasm
dly60
       decfsz   _delayasm,f
        goto   dly60
       nop
        nop
       return
endasm
        return

delay6:
asm
       nop
       nop
        nop
        nop
endasm
    return
leeributton:
        high txibutton
        gosub delay480
        low txibutton
        gosub delay60
        if rxibutton = 1 then
            cambio = 0
            sibutton = 0
        else
            gosub delay480
            bitleido = 1
            gosub enviar1bit
            bitleido = 1
            gosub enviar1bit
            bitleido = 0
            gosub enviar1bit
            bitleido = 0
            gosub enviar1bit
            bitleido = 1
            gosub enviar1bit
            bitleido = 1
            gosub enviar1bit
            bitleido = 0
            gosub enviar1bit
            bitleido = 0
            gosub enviar1bit
            pauseus 100
            for asd = 1 to 8
                gosub leer1bit
            next asd
            for asd = 1 to 6
                gosub leer1bit
                temp.0 = bitleido            
                gosub leer1bit
                temp.1 = bitleido            
                gosub leer1bit
                temp.2 = bitleido            
                gosub leer1bit
                temp.3 = bitleido            
                gosub leer1bit
                temp.4 = bitleido            
                gosub leer1bit
                temp.5 = bitleido            
                gosub leer1bit
                temp.6 = bitleido            
                gosub leer1bit
                temp.7 = bitleido            
                llave(asd) = temp            
            next asd
            sibutton = 1
        endif
        return

enviar1bit:
        high txibutton
        gosub delay15
        if bitleido = 0 then
            gosub delay60
        else
            low txibutton
        endif
        gosub delay6
        low txibutton
        return

leer1bit:
        high txibutton
        low txibutton
        gosub delay15
        if rxibutton = 1 then
            bitleido = 1
        else
            bitleido = 0
        endif
        gosub delay60
        return
Título: RE: Como leer un IButton para control de acceso y comando de alarma o maquinas
Publicado por: todopic en 23 de Noviembre de 2003, 15:53:00
Hola Luis, no trabaje aun con los IButton, se consiguen facil?, cuanto cuestan?

Gracias!

Norberto
Título: RE: Como leer un IButton para control de acceso y comando de alarma o maquinas
Publicado por: LuisFrino en 23 de Noviembre de 2003, 19:45:00
Hola Norberto
yo los importe desde EEUU hace casi 4 años cuando recien estaban
siendo promocionados aqui en la argentina el que los trae es SEMAC no te gastes en escribir porque hay que llenar un form y despues no te responden www.semac.com.ar
creo que estan el el orden de los 9 0 10 dolares cada uno
los otros precios no los tengo me refiero a la linea completa de DS
ya qye hay muchos modelos entre ellos sensores con memoria interna para almacenar datos para ser leidos luego por soft
disculpas lor los errores de ortografia
cualquier duda privado!!!
saludos
Luis