domingo, 4 de enero de 2015

PRACTICAS CON TECNOLOGIA CMOS

PRACTICAS CON EL PIC 16F628

Temporizador con intervalos de 1seg en los puertos B


PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Led var portb.0;conectar led al puerto B.O
high led;encender led
pause 1000;tiempo de encendido 1seg
low led;apagar led
pause 1000;tiempo de apagado 1seg
end;fin de la programacion

Temporizador con intervalos de 1seg y subrutina en los puertos B

Subrutina.-Es una herramienta que facilita que el elemento que esta en el programa se repita varias veces.

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
led var portb.0;conectar puerto B.0
GUAYAS: ;subrutina GUAYAS
high led;encender led
pause 1000;tiempo de encendido
low led;apagar led
pause 1000;tiempo de apagado
goto GUAYAS;regresar a la subrutina GUAYAS
end; fin de la programacion

Temporizador con la instruccion Trisb en los puertos B.



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Trisb=0;habilito las puertas b
Cinthya: ;subrutina Cinthya
portb=000010;habilito la puerta b.1
pause 500;tiempo de encendido 1/2seg
portb=000000;deshabilito la puerta b.1
pause 2000;tiempo de apagado 2seg
goto Cinthya;regresar a la subrutina Cinthya
End;fin de la programacion

Temporizador con intervalos de 1seg en los puertos B




PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Trisb=%0;habilita un solo puerto b
Cinthya: ;subrutina Cinthya
Portb.1=1;habilito puerto b.1
pause 500;tiempo de encendido 1/2seg
Portb.1=0;deshabilito puerto b.1
pause 2000;tiempo de apagado 2seg
goto Cinthya;regresar a la subrutina Cinthya
end;fin de la programacion


Temporizador con intervalos de 1seg en los puertos A



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7;habilito los puertos A y los hace salidas
led var porta.0;conectar un led en el puerto b.0
Pele: ;subrutina pele
high led;encender led
pause 1000;tiempo de encendido
low led;apagar led
pause 500;tiempo de apagado
goto Pele;regresar a la subrutina Pele
end;fin de la programacion



Temporizador ascendente con intervalos de 1seg en los puertos B



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Trisb=0;habilito todos los puertos b
romeo: ;subrutina romeo
Portb=000001;habilita el puerto b.0
pause 1000;tiempo de encendido 1seg
Portb=000000;deshabilito el puerto b.0
pause 1000;tiempo de apagado de 1 seg
Portb=000010;habilita el puerto b.1
pause 1000;tiempo de encendido
Portb=000000;deshabilita el puerto b.1
pause 1000;tiempo de apagado
Portb=000100;habilita el puerto b.2
pause 1000;tiempo de encendido
Portb=000000;deshabilita el puerto b.2
pause 1000;tiempo de apagado
Portb=001000;habilito puerto b.3
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.3
pause 1000;tiempo de apagado
Portb=010000;habilito puerto b.4
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.4
pause 1000;tiempo de apagado
Portb=100000;habilito puerto b.5
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.5
pause 1000;tiempo de apagado
Portb=%01000000;habilito puerto b.6
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.6
pause 1000;tiempo de apagado
Portb=%10000000;habilito puerto b.7
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.7
pause 1000;tiempo de apagado
goto romeo; regresar a la rutnina romeo
End;fin de la programacion




Temporizador descendente con intervalos de 1seg en los puertos B



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Trisb=0;habilito todos los puertos b
romeo: ;subrutina romeo
Portb=%10000000;habilita el puerto b.7
pause 1000;tiempo de encendido 1seg
Portb=000000;deshabilito el puerto b.7
pause 1000;tiempo de apagado de 1 seg
Portb=%01000000;habilita el puerto b.6
pause 1000;tiempo de encendido
Portb=000000;deshabilita el puerto b.6
pause 1000;tiempo de apagado
Portb=100000;habilita el puerto b.5
pause 1000;tiempo de encendido
Portb=000000;deshabilita el puerto b.5
pause 1000;tiempo de apagado
Portb=010000;habilito puerto b.4
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.4
pause 1000;tiempo de apagado
Portb=001000;habilito puerto b.3
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.3
pause 1000;tiempo de apagado
Portb=000100;habilito puerto b.2
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.2
pause 1000;tiempo de apagado
Portb=%01000010;habilito puerto b.1
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.1
pause 1000;tiempo de apagado
Portb=%10000001;habilito puerto b.0
pause 1000;tiempo de encendido
Portb=000000;deshabilito puerto b.0
pause 1000;tiempo de apagado
goto romeo; regresar a la rutnina romeo
End;fin de la programacion

Temporizador con intervalos de 1seg en los puertos A



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7;habilita los puertos A y los hace salida
Led var porta.0;conectar led al puerto A.O
high led;encender led
pause 1000;tiempo de encendido 1seg
low led;apagar led
pause 1000;tiempo de apagado 1seg
end;fin de la programacion





Temporizador con intervalos de 1seg y subrutina en los puertos A



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7;habilita todas las compuertas A y las hace salidas
led var porta.0;conectar puerto A.0
GUAYAS: ;subrutina GUAYAS
high led;encender led
pause 1000;tiempo de encendido
low led;apagar led
pause 1000;tiempo de apagado
goto GUAYAS;regresar a la subrutina GUAYAS
end; fin de la programacion

Temporizador con la instruccion Trisa en los puertos A



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7;habilita todas las compuertas A y las hace salidas
Trisa=0;habilito las puertas a
Cinthya: ;subrutina Cinthya
porta=000010;habilito la puerta a.1
pause 500;tiempo de encendido 1/2seg
porta=000000;deshabilito la puerta a.1
pause 2000;tiempo de apagado 2seg
goto Cinthya;regresar a la subrutina Cinthya
End;fin de la programacion



Temporizador con la instruccion Trisa en los puertos A



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7;habilito todas las compuertas A y las hace salidas
Trisa=%0;habilita un solo puerto a
Cinthya: ;subrutina Cinthya
Porta.1=1;habilito puerto a.1
pause 500;tiempo de encendido 1/2seg
Porta.1=0;deshabilito puerto a.1
pause 2000;tiempo de apagado 2seg
goto Cinthya;regresar a la subrutina Cinthya
end;fin de la programacion



Temporizador ascendente con intervalos de 1seg en los puertos A



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7;habilito todas las compuertas A y las hace salidas
Trisa=0;habilito todos los puertos a
hachi: ;subrutina hachi
Porta=000001;habilita el puerto a.0
pause 1000;tiempo de encendido 1seg
Porta=000000;deshabilito el puerto a.0
pause 1000;tiempo de apagado de 1 seg
Porta=000010;habilita el puerto a.1
pause 1000;tiempo de encendido
Porta=000000;deshabilita el puerto a.1
pause 1000;tiempo de apagado
Porta=000100;habilita el puerto a.2
pause 1000;tiempo de encendido
Porta=000000;deshabilita el puerto a.2
pause 1000;tiempo de apagado
Porta=001000;habilito puerto a.3
pause 1000;tiempo de encendido
Porta=000000;deshabilito puerto a.3
pause 1000;tiempo de apagado
Porta=%01000000;habilito puerto a.6
pause 1000;tiempo de encendido
Porta=000000;deshabilito puerto a.6
pause 1000;tiempo de apagado
Porta=%10000000;habilito puerto a.7
pause 1000;tiempo de encendido
Porta=000000;deshabilito puerto a.7
pause 1000;tiempo de apagado
goto hachi; regresar a la rutnina hachi
End;fin de la programacion



Temporizador descendente con intervalos de 1seg en los puertos A



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7;habilito todas las compuertas A y las hace salidas
Trisa=0;habilito todos los puertos a
hachi: ;subrutina hachi  
Porta=%10000000;habilito puerto a.7
pause 500;tiempo de encendido
Porta=000000;deshabilito puerto a.7
pause 500;tiempo de apagado
Porta=%01000000;habilito puerto a.6
pause 500;tiempo de encendido
Porta=000000;deshabilito puerto a.6
pause 500;tiempo de apagado
Porta=001000;habilito puerto a.3
pause 500;tiempo de encendido
Porta=000000;deshabilito puerto a.3
pause 500;tiempo de apagado
Porta=000100;habilita el puerto a.2
pause 500;tiempo de encendido
Porta=000000;deshabilita el puerto a.2
pause 500;tiempo de apagado
Porta=000010;habilita el puerto a.1
pause 500;tiempo de encendido
Porta=000000;deshabilita el puerto a.1
pause 500;tiempo de apagado
Porta=000001;habilita el puerto a.0
pause 500;tiempo de encendido 1seg
Porta=000000;deshabilito el puerto a.0
pause 500;tiempo de apagado de 1 seg
goto hachi; regresar a la rutnina hachi
End;fin de la programacion

Semaforo

PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 21/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
trisb=0;habilito las puertos B
semaforo:;subrutina semaforo
portb=%100001;habilito los puertos b.0 y b.5
pause 9000;tiempo de espera 9 seg
portb=1010;habilito los puertos b.1 y b.3
pause 3000;tiempo de espera 3 seg
portb=1100;habilito los puertos b.2 y b.3
pause 9000;tiempo de espera 9 seg
portb=%010100;habilito los puertos b.2 y b.4
pause 3000;tiempo de espera 3 seg
goto semaforo;regresar a la subrutina semaforo
end;fin de la programacion

Temporizador con instruccion  FOR-NEXT

PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 16/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
romeo var byte;limitado el espacio de memoria
led var portb.4;conectar led al puerto b.4
for romeo=1 to 4
high led;encender led
pause 1500;tiempo de encendido 1.5seg
low led;apagar led
pause 500;tiempo de apagado 1/2seg
next
end ;fin de la programacion

Temporizador con instruccion  VAR BYTE

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 21/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
x var byte;limitado espacio de memoria
trisb=0;habilito los puertos b
leds var portb;todo el puerto b se llamara leds
leds=1;cargamos la variable leds con (00000001)
guayas:;subrutina guayas
for x=1 to 7
leds=leds<<1
pause 250;tiempo de espera 1/4seg
next
for x=1 to 7
leds=leds>>1
pause 250;tiempo de espera 1/4seg
next
goto guayas;regresar a la subrutina guayas
end;fin de la programacion

Temporizador con instruccion FOR-NEXT y VAR BYTE


PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 21/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
hachi var byte;limitado espacio de memoria
romeo:;subrutina romeo
led var portb.0;conecto un led al puerto b.0
for hachi=1 to 5;
high led;encender led
pause 500;tiempo de encendido 1/4 seg
low led;apagar led
pause 500; teimpo de apagado 1/4 seg
next
pause 2000;tiempo de espera 2 seg
for hachi=1 to 3;
high led;encender led
pause 500;tiempo de encendido 1/4 seg
low led;apagar led
pause 500;tiempo de apagado 1/4 seg
next
pause 3000;tiempo de espera 3 seg
goto romeo;regresar a la subrutina romeo
end;fin de la programacion

Temporizador con instruccion FOR-NEXT y VAR BYTE en todos los puertos B

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 21/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
rs var byte;
romeo:;subrutina romeo
led7 var portb.7;conectar un led al puerto b.7
for rs=1 to 7
high led7;encender led
pause 250;tiempo de encendido 1/4seg
low led7;apagar led
pause 250;tiempo de apagado 1/4seg
next
pause 1000;tiempo de espera 1seg
led6 var portb.6;conectar un led al puerto b.6
for rs=1 to 6
high led6;encender led
pause 250;tiempo de encendido 1/4seg
low led6;apagar led
pause 250;tiempo de apagado 1/4seg
next
pause 1000;tiempo de espera 1seg
led5 var portb.5;conectar un led al puerto b.5
for rs=1 to 5
high led5;encender led
pause 250;tiempo de encendido 1/4seg
low led5;apagar led
pause 250;tiempo de apagado 1/4seg
next
pause 1000;tiempo de espera 1seg
led4 var portb.4;conectar un led al puerto b.4
for rs=1 to 4
high led4;encender led
pause 250;tiempo de encendido 1/4seg
low led4;apagar led
pause 250;tiempo de apagado 1/4seg
next
pause 1000;tiempo de espera 1seg
led3 var portb.3;conectar un led al puerto b.3
for rs=1 to 3
high led3;encender led
pause 250;tiempo de encendido 1/4seg
low led3;apagar led
pause 250;tiempo de apagado 1/4seg
next
pause 1000;tiempo de espera 1seg
led2 var portb.2;conectar un led al puerto b.2
for rs=1 to 2
high led2;encender led
pause 250;tiempo de encendido 1/4seg
low led2;apagar led
pause 250;tiempo de apagado 1/4seg
next
pause 1000;tiempo de espera 1seg
led1 var portb.1;conectar un led al puerto b.1
for rs=1 to 1
high led1;encender led
pause 250;tiempo de encendido 1/4seg
low led1;apagar led
pause 250;tiempo de apagado 1/4seg
next
pause 1000;tiempo de espera 1seg
led var portb.0;conectar un led al puerto b.0
high led;encender led
pause 250;tiempo de encendido 1/4seg
low led;apagar led
pause 250;tiempo de apagado 1/4seg
goto romeo;regresar a la subrutina romeo
end;fin de la programacion

HOLA con instruccion LOOK UP

PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 07/10/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
trisb=0 ;habilito todos los puertos b.
X var byte ;espacio de memoria X.
Y var byte ;espacio de memoria Y.
totto: ;subrutina totto.
for X= 0 to 3
lookup x,[9,64,71,8],y
portb= y
pause 2000
next x
goto totto ;regresar a la subrutina totto.
end ;fin de la programacion.

Nombres con instruccion LOOK UP

PROGRAMAS
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 07/10/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
trisb=0 ;habilito todos los puertos b.
X var byte ;espacio de memoria X.
Y var byte ;espacio de memoria Y.
totto: ;subrutina totto.
for X= 0 to 5
lookup x,[70,6,71,121,33,8],y
portb= y
pause 2000 ;tiempo de espera 2 seg
next x
pause 3000;tiempo de espera 3seg
for X= 0 to 4
lookup x,[70,6,18,8,13],y
portb= y
pause 2000 ;tiempo de espera 2 seg
next x
pause 3000;tiempo de espera 3seg
for X= 0 to 4
lookup x,[18,8,72,7,8],y
portb= y
pause 2000 ;tiempo de espera 2 seg
next x
goto totto ;regresar a la subrutina totto.
end ;fin de la programacion.

Juego de leds

PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 21/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
trisb=0;habilito las puertos B
romeo:;subrutina romeo
portb=000011;habilito los puertos b.0 y b.1
pause 70;tiempo de espera 
portb=000001;habilito el puerto b.o
pause 70;tiempo de espera
portb=000010;habilito el puerto b.1
pause 70;tiempo de espera
goto romeo;regresar a la subrutina romeo
end;fin de la programacion

Juego de leds con instruccion FOR-NEXT

PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 21/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
x var byte;limito espacio de memoria
trisb=0
romeo:;subrutina romeo
portb=000001
for x=1 to 6
portb=000001
pause 300;tiempo de encendido
portb=000000
pause 300;tiempo de apagado
next
portb=000010
for x=1 to 2
portb=000010
pause 1000;tiempo de encendido
portb=000000
pause 1000;tiempo de apagado
next
portb=000011
for x=1 to 3
portb=000011
pause 300;tiempo de encendido
portb=000000
pause 300;tiempo de apagado
next
goto romeo;regresar a la subrutina romeo
end;fin de la programacion

Juegos de leds activados por medio de un pulsador

PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 22/09/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon= 7;habilita los puertos A y los hace salidas
pulsador var porta.0;conecto un pulsador al puerto a.0
led var portb.7;conecto un led al puerto b.7
led2 var portb.6;conecto un led al puerto b.6
led3 var portb.5;conecto un led al puerto b.5
led4 var portb.4;conecto un led al puerto b.4
led5 var portb.3;conecto un led al puerto b.3
led6 var portb.2;conecto un led al puerto b.2
led7 var portb.1;conecto un led al puerto b.1
led8 var portb.0;conecto un led al puerto b.0
rs:;subrutina rs
if pulsador= 0 then;si el pulsador fuera 0
high led;encender led
high led2;encender led2
high led3;encender led3
high led4;encender led4
high led5;encender led5
high led6;encender led6
high led7;encender led7
high led8;encender led8
else;caso contrario
low led;apagar led
low led2;apagar led2
low led3;apagar led3
low led4;apagar led4
low led5;apagar led5
low led6;apagar led6
low led7;apagar led7
low led8;apagar led8
endif;terminar la instruccion
goto rs;regresar a la subrutina rs
end;fin de la programacion

Programa para el pic de 40 pines display activados por un pulsador

PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 17/12/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7
led1 var portb.0
pulsador1 var portc.0
led2 var portb.1
pulsador2 var portc.1
led3 var portb.2
pulsador3 var portc.2
led4 var portb.3
pulsador4 var portc.3
led5 var portb.4
pulsador5 var portc.4
led6 var portb.5
pulsador6 var portc.5
led7 var portb.6
pulsador7 var portc.6
led8 var portb.7
pulsador8 var portc.7
inicio:
if pulsador1 =0 then
goto encendido
else
goto apagado
endif
if pulsador2 =0 then
goto encendido
else
goto apagado
endif
if pulsador3 =0 then
goto encendido
else
goto apagado
endif
if pulsador4 =0 then
goto encendido
else
goto apagado
endif
if pulsador5 =0 then
goto encendido
else
goto apagado
endif
if pulsador6 =0 then
goto encendido
else
goto apagado
endif
if pulsador7 =0 then
goto encendido
else
goto apagado
endif
if pulsador8 =0 then
goto encendido
else
goto apagado
endif
goto inicio
encendido:
high led1
high led2
high led3
high led4
high led5
high led6
high led7
high led8
goto inicio
apagado:
low led1
low led2
low led3
low led4
low led5
low led6
low led7
low led8
goto inicio
end

PROGRAMA CON LCD FIGURAS Y PALABRA






PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 26/01/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       3
Define  LCD_EREG        PORTB
Define  LCD_EBIT        2

PAUSE 500
lcdout $FE, 1, "     ?PLAYA? "
LCDout $FE, 2
LCDOUT $FE ,$40 ,$00,$00,$00,$00,$00,$01,$02,$15
LCDOUT $FE ,$48 ,$00,$0A,$04,$00,$1F,$0E,$15,$04
LCDOUT $FE ,$50 ,$00,$00,$0A,$04,$00,$10,$08,$14
LCDOUT $FE ,$58 ,$10,$08,$14,$0A,$13,$04,$08,$00

LCDOUT $FE ,$60 ,$01,$00,$0E,$1B,$0E,$0A,$00,$00
LCDOUT $FE ,$68 ,$04,$04,$04,$1F,$04,$04,$08,$00
LCDOUT $FE ,$70 ,$03,$04,$08,$1F,$00,$0E,$0E,$00
LCDOUT $FE ,$78 ,$1C,$02,$01,$1F,$00,$01,$0E,$11


LCDOUT $FE ,$81,0
LCDOUT $FE ,$82,1
LCDOUT $FE ,$83,2
LCDOUT $FE ,$84,3
LCDOUT $FE ,$C1,4
LCDOUT $FE ,$C2,5
LCDOUT $FE ,$C3,6
LCDOUT $FE ,$C4,7

LCDOUT $FE ,$8C,0
LCDOUT $FE ,$8D,1
LCDOUT $FE ,$8E,2
LCDOUT $FE ,$8F,3
LCDOUT $FE ,$CC,4
LCDOUT $FE ,$CD,5
LCDOUT $FE ,$CE,6
LCDOUT $FE ,$CF,7

END


LCD CABALLO SUBIENDO Y BAJADA.





PROGRAMA
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 25/02/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       3
Define  LCD_EREG        PORTB
Define  LCD_EBIT        2
POS1 VAR BYTE
POS2 VAR BYTE
POS3 VAR BYTE
POS4 VAR BYTE
POS1 = $C0
POS2 = $C1
POS3 = $C2
POS4 = $C3
PAUSE 500
LCDOUT $FE,$40,$00,$00,$10,$0F,$0F,$0D,$18,$10
LCDOUT $FE,$48,$04,$0E,$1F,$1C,$1C,$06,$05,$00
LCDOUT $FE,$50,$00,$00,$10,$0F,$0F,$0D,$04,$06
LCDOUT $FE,$58,$04,$0E,$1F,$1C,$1C,$1C,$08,$18
LCDOUT $FE,$60,$04,$06,$1F,$07,$07,$07,$02,$03
LCDOUT $FE,$68,$00,$00,$01,$1E,$1E,$16,$04,$0C
LCDOUT $FE,$70,$04,$0E,$1F,$07,$07,$07,$0C,$14
LCDOUT $FE,$78,$00,$00,$01,$1E,$1E,$16,$03,$01

INICIO:
LCDOUT $FE,1
LCDOUT $FE,POS1,0
LCDOUT $FE,POS2,1
PAUSE 300
LCDOUT $FE,1
LCDOUT $FE,POS3,2
LCDOUT $FE,POS4,3
PAUSE 300
POS1=POS1+3
POS2=POS2+3
POS3=POS3+3
POS4=POS4+3
IF POS4 > $CF THEN RETRO 
GOTO INICIO

RETRO:
 POS1 = $CF
 POS2 = $CE
 POS3 = $CD
 POS4 = $CC
RETROCEDE:
 LCDOUT $fe, 1 
 LCDOUT $FE,POS1, 7 
 LCDOUT $FE,POS2, 6 
 Pause 300

 LCDOUT $fe, 1 
 LCDOUT $FE,POS3, 5 
 LCDOUT $FE,POS4, 4 
 Pause 300

 POS1 = POS1 - 3
 POS2 = POS2 - 3
 POS3 = POS3 - 3
 POS4 = POS4 - 3
 
 GOTO RETROCEDE

GOTO inicio 
END

LCD Tanque practica en clases.





PROGRAMA


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 01/03/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       3
Define  LCD_EREG        PORTB
Define  LCD_EBIT        2
POS1 VAR BYTE
POS2 VAR BYTE
POS3 VAR BYTE
POS4 VAR BYTE
POS1 = $C0
POS2 = $C1
POS3 = $C2
POS4 = $C3
PAUSE 500
LCDOUT $FE,$40,$00,$14,$08,$01,$03,$07,$07,$03
LCDOUT $FE,$48,$05,$02,$00,$18,$1F,$1C,$1C,$18
LCDOUT $FE,$50,$00,$0A,$04,$03,$0F,$1F,$1F,$1F
LCDOUT $FE,$58,$05,$02,$00,$10,$1D,$18,$18,$10
LCDOUT $FE,$60,$14,$08,$00,$01,$0F,$07,$07,$03
LCDOUT $FE,$68,$00,$05,$02,$18,$1E,$1F,$1F,$1E
LCDOUT $FE,$70,$14,$08,$00,$03,$1F,$07,$07,$03
LCDOUT $FE,$78,$00,$05,$02,$10,$18,$1C,$1C,$18

INICIO:
LCDOUT $FE,1
LCDOUT $FE,POS1,0
LCDOUT $FE,POS2,1
PAUSE 300
LCDOUT $FE,1
LCDOUT $FE,POS3,2
LCDOUT $FE,POS4,3
PAUSE 300
POS1=POS1+3
POS2=POS2+3
POS3=POS3+3
POS4=POS4+3
IF POS4 > $CF THEN RETRO 
GOTO INICIO

RETRO:
 POS1 = $CF
 POS2 = $CE
 POS3 = $CD
 POS4 = $CC
RETROCEDE:
 LCDOUT $fe, 1 
 LCDOUT $FE,POS1, 7 
 LCDOUT $FE,POS2, 6 
 Pause 300

 LCDOUT $fe, 1 
 LCDOUT $FE,POS3, 5 
 LCDOUT $FE,POS4, 4 
 Pause 300

 POS1 = POS1 - 3
 POS2 = POS2 - 3
 POS3 = POS3 - 3
 POS4 = POS4 - 3
 
 GOTO RETROCEDE

GOTO inicio 
END 

Teclado 4x4 con PIC 16F628A




PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 09/03/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
CMCON=7
TRISA=0
A VAR PORTB.0
B VAR PORTB.1
C VAR PORTB.2
D VAR PORTB.3
UNO VAR PORTB.4
DOS VAR PORTB.5
TRES VAR PORTB.6
CUATRO VAR PORTB.7
BARRIDO:
LOW A
IF UNO=0 THEN PORTA=1
IF DOS=0 THEN PORTA=2
IF TRES=0 THEN PORTA=3
IF CUATRO=0 THEN PORTA=10
HIGH A
LOW B
IF UNO=0 THEN PORTA=4
IF DOS=0 THEN PORTA=5
IF TRES=0 THEN PORTA=6
IF CUATRO=0 THEN PORTA=11
HIGH b
LOW c
IF UNO=0 THEN PORTA=7
IF DOS=0 THEN PORTA=8
IF TRES=0 THEN PORTA=9
IF CUATRO=0 THEN PORTA=12
HIGH c
LOW d
IF UNO=0 THEN PORTA=14
IF DOS=0 THEN PORTA=0
IF TRES=0 THEN PORTA=15
IF CUATRO=0 THEN PORTA=13
HIGH d
PAUSE 10
GOTO BARRIDO
END

Teclado 4x4 con PIC 16F877A

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 11/03/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
TRISB=%01111000
TRISD=000000
LEGOLAS:
CALL TECLADO
PAUSE 50
GOTO LEGOLAS
TECLADO:
PORTB.0=0
PORTB.1=1
PORTB.2=1
PORTB.3=1
IF PORTB.4=0 THEN PORTD=01000;A
IF PORTB.5=0 THEN PORTD=00011;B
IF PORTB.6=0 THEN PORTD=%1000110;C
IF PORTB.7=0 THEN PORTD=%0100001;D
PORTB.0=1
PORTB.1=0
PORTB.2=1
PORTB.3=1
IF PORTB.4=0 THEN PORTD=00110;E
IF PORTB.5=0 THEN PORTD=01110;F
IF PORTB.6=0 THEN PORTD=00010;G
IF PORTB.7=0 THEN PORTD=01001;H
PORTB.0=1
PORTB.1=1
PORTB.2=0
PORTB.3=1
IF PORTB.4=0 THEN PORTD=%1111001;I
IF PORTB.5=0 THEN PORTD=%1100000;J
IF PORTB.6=0 THEN PORTD=%1000111;L
IF PORTB.7=0 THEN PORTD=%0101011;N
PORTB.0=1
PORTB.1=1
PORTB.2=1
PORTB.3=0
IF PORTB.4=0 THEN PORTD=%1000000;O
IF PORTB.5=0 THEN PORTD=01100;P
IF PORTB.6=0 THEN PORTD=11000;Q
IF PORTB.7=0 THEN PORTD=10010;S
RETURN
END

Teclado 4x3 Y LEDS con PIC 16F877A

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 11/03/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
TRISB=%01111000
TRISD=%11111000
LEGOLAS:
CALL TECLADO
pause 50
GOTO LEGOLAS

TECLADO:

PORTB.0 = 0
PORTB.1 = 1
PORTB.2 = 1

IF PORTB.3 = 0 THEN PORTD = 1
IF PORTB.4 = 0 THEN PORTD = 1
IF PORTB.5 = 0 THEN PORTD = 1
IF PORTB.6 = 0 THEN PORTD = 1

PORTB.0 = 1
PORTB.1 = 0
PORTB.2 = 1

IF PORTB.3 = 0 THEN PORTD = %010
IF PORTB.4 = 0 THEN PORTD = %010 
IF PORTB.5 = 0 THEN PORTD = %010 
IF PORTB.6 = 0 THEN PORTD = %010 

PORTB.0 = 1
PORTB.1 = 1
PORTB.2 = 0

IF PORTB.3 = 0 THEN PORTD = %100
IF PORTB.4 = 0 THEN PORTD = %100
IF PORTB.5 = 0 THEN PORTD = %100 
IF PORTB.6 = 0 THEN PORTD = %100 
 
 
return  
 END

TECLADO 4X4 CON PIC 16F877 CERRADURA

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 16/04/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

TRISA=%0
TRISB=%11110000
TRISD=000000

Numero var byte
R var byte

BIP VAR PORTA.0
LED VAR PORTA.1
DOOR VAR PORTA.2

A VAR PORTB.0
B VAR PORTB.1
C VAR PORTB.2
D VAR PORTB.3

UNO VAR PORTB.4
DOS VAR PORTB.5
TRES VAR PORTB.6
CUATRO VAR PORTB.7

INICIANDO: 
HIGH LED:HIGH BIP
PAUSE 500
LOW LED:LOW BIP

GOTO TECLASIETE

BARRIDO:

low a
 
IF UNO =0 THEN numero=1 : portd=01000 : RETURN
IF DOS =0 THEN numero=2 : portd=00000 : RETURN
IF TRES =0 THEN numero=3 : portd=%1000110 : RETURN
IF CUATRO =0 THEN numero=10 : portd=%1000000 : RETURN

high a 
low b

IF UNO =0 THEN NUMERO=4 : portd=00110 : RETURN
IF DOS =0 THEN NUMERO=5 :  portd=01110  : RETURN
IF TRES =0 THEN NUMERO=6  : portd=00010 : RETURN
IF CUATRO =0 THEN NUMERO=11 : portd=01001 : RETURN

high b
low c
IF UNO =0 THEN NUMERO=7 : portd=%1111001 : RETURN
IF DOS =0 THEN NUMERO=8 : portd=%1110001  : RETURN
IF TRES =0 THEN NUMERO=9 : portd=%1000111  : RETURN
IF CUATRO =0 THEN NUMERO=12 : portd=%1000000  : RETURN
high c
low d

IF UNO =0 THEN NUMERO=14 :  portd=01100  : RETURN
IF DOS =0 THEN NUMERO=0 :  portd=10010   : RETURN
IF TRES =0 THEN NUMERO=15 : portd=%1000001   : RETURN
IF CUATRO =0 THEN NUMERO=13 : portd=%0101011  : RETURN

high d

PAUSE 250
GOTO BARRIDO
PTECLA
HIGH LED: HIGH BIP
PAUSE 150
LOW LED: LOW BIP
ESPACIO
IF UNO =0 THEN ESPACIO
IF DOS =0 THEN ESPACIO
IF TRES =0 THEN ESPACIO
IF CUATRO =0 THEN ESPACIO
PAUSE 250
RETURN
TECLASIETE
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=7 AND PORTD=%1111001 THEN TECLAOCHO
GOTO FALSO
TECLAOCHO
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=8 THEN TECLANUEVE
GOTO FALSO1
TECLANUEVE
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=9 THEN TECLADOCE
GOTO FALSO2
TECLADOCE
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=12 THEN OPENGE
GOTO FALSO3
OPENGE:
FOR R= 1 TO 2
PAUSE 150
HIGH LED: HIGH BIP
PAUSE 150
LOW LED: LOW BIP
NEXT

HIGH DOOR
PAUSE 1000
LOW DOOR
GOTO TECLASIETE

FALSO: 
GOSUB BARRIDO: GOSUB PTECLA
FALSO1:
GOSUB BARRIDO: GOSUB PTECLA
FALSO2:
GOSUB BARRIDO: GOSUB PTECLA
FALSO3:
FOR R= 1 TO 3
PAUSE 150
HIGH LED: HIGH BIP
PAUSE 150
LOW LED: LOW BIP
NEXT
GOTO TECLASIETE
END

CERRADURA CON LCD TECLADO 4X4

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 17/04/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       3
Define  LCD_EREG        PORTB
Define  LCD_EBIT        2

PAUSE 200
lcdout,$fe ,1
lcdout,$fe ,$0e, "   WELCOME  "

TRISA=%0
TRISB=000000
TRISD=%11110000

Numero var byte
R var byte

BIP VAR PORTA.0
LED VAR PORTA.1
DOOR VAR PORTA.2

A VAR PORTD.0
B VAR PORTD.1
C VAR PORTD.2
D VAR PORTD.3

UNO VAR PORTD.4
DOS VAR PORTD.5
TRES VAR PORTD.6
CUATRO VAR PORTD.7

INICIANDO: 
HIGH LED:HIGH BIP
PAUSE 500
LOW LED:LOW BIP

GOTO TECLASIETE

BARRIDO:

low a
 
IF UNO =0 THEN numero=1 : LCDOUT $FE,$C0,"A":PAUSE 250:LCDOUT,$FE,$C0,"*" : RETURN
IF DOS =0 THEN numero=2 : LCDOUT $FE,$C1,"B" :PAUSE 250:LCDOUT,$FE,$C1,"*": RETURN
IF TRES =0 THEN numero=3 : LCDOUT $FE,$C2,"C":PAUSE 250 :LCDOUT,$FE,$C2,"*": RETURN
IF CUATRO =0 THEN numero=10 : LCDOUT $FE,$C3,"D":PAUSE 250:LCDOUT,$FE,$C3,"*" : RETURN

high a 
low b

IF UNO =0 THEN NUMERO=4 : LCDOUT $FE,$C0,"E":PAUSE 250:LCDOUT,$FE,$C0,"*" : RETURN
IF DOS =0 THEN NUMERO=5 :  LCDOUT $FE,$C1,"F":PAUSE 250:LCDOUT,$FE,$C1,"*": RETURN
IF TRES =0 THEN NUMERO=6  : LCDOUT $FE,$C2, "G":PAUSE 250:LCDOUT,$FE,$C2,"*" : RETURN
IF CUATRO =0 THEN NUMERO=11 : LCDOUT $FE,$C3, "H":PAUSE 250:LCDOUT,$FE,$C3,"*" : RETURN

high b
low c
IF UNO =0 THEN NUMERO=7 : lcdout $FE,$C0,"I" :PAUSE 250:LCDOUT,$FE,$C0,"*":RETURN
IF DOS =0 THEN NUMERO=8 : LCDOUT $FE,$C1, "J" :PAUSE 250:LCDOUT,$FE,$C1,"*" : RETURN
IF TRES =0 THEN NUMERO=9 : LCDOUT $FE,$C2, "K" :PAUSE 250:LCDOUT,$FE,$C2,"*" : RETURN
IF CUATRO =0 THEN NUMERO=12 : LCDOUT $FE, $C3, "L":PAUSE 250:LCDOUT,$FE,$C3,"*"  : RETURN
high c
low d

IF UNO =0 THEN NUMERO=14 :  LCDOUT $FE,$C0,"M":PAUSE 250:LCDOUT,$FE,$C0,"*"  : RETURN
IF DOS =0 THEN NUMERO=0 :  LCDOUT $FE,$C1,"N":PAUSE 250:LCDOUT,$FE,$C1,"*"   : RETURN
IF TRES =0 THEN NUMERO=15 : LCDOUT $FE,$C2,"O":PAUSE 250:LCDOUT,$FE,$C2,"*"   : RETURN
IF CUATRO =0 THEN NUMERO=13 : LCDOUT $FE,$C3,"P":PAUSE 250:LCDOUT,$FE,$C3,"*"  : RETURN

high d

PAUSE 250
GOTO BARRIDO
PTECLA
HIGH LED: HIGH BIP
PAUSE 150
LOW LED: LOW BIP
ESPACIO
IF UNO =0 THEN ESPACIO
IF DOS =0 THEN ESPACIO
IF TRES =0 THEN ESPACIO
IF CUATRO =0 THEN ESPACIO
PAUSE 250
RETURN
TECLASIETE
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=7  THEN TECLAOCHO
GOTO FALSO
TECLAOCHO
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=8   THEN TECLANUEVE
GOTO FALSO1
TECLANUEVE
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=9   THEN TECLADOCE
GOTO FALSO2
TECLADOCE
GOSUB BARRIDO
GOSUB PTECLA
IF NUMERO=12  THEN OPENGE
GOTO FALSO3
OPENGE:
FOR R= 1 TO 2
PAUSE 150                              
HIGH LED: HIGH BIP :LCDOUT $FE, $0E, "  CORRECTO  "
PAUSE 150
LOW LED: LOW BIP   :LCDOUT $FE, 1
NEXT

HIGH DOOR
PAUSE 1000
LOW DOOR
GOTO TECLASIETE

FALSO: 
GOSUB BARRIDO: GOSUB PTECLA
FALSO1:
GOSUB BARRIDO: GOSUB PTECLA
FALSO2:
GOSUB BARRIDO: GOSUB PTECLA
FALSO3:
FOR R= 1 TO 3
PAUSE 150
HIGH LED: HIGH BIP  :LCDOUT $FE, $0E, " INCORRECTO  "
PAUSE 150
LOW LED: LOW BIP     :LCDOUT $FE, 1
NEXT
GOTO TECLASIETE
END

CERRADURA CON CLAVE EN MEMORIA EEPROM

PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 20/04/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       3
Define  LCD_EREG        PORTB
Define  LCD_EBIT        2

PAUSE 200
lcdout,$fe ,1
lcdout,$fe ,$0e, "  PASSWORD  "

TRISA=%0
TRISB=000000
TRISD=%11110000
         ;Cerrarura electrónica con clave en memoria EEPROM
cmcon=7             ;cambiar a modo digital todo el puerto A
NUMERO VAR BYTE     ;variable numero para almacenar la tecla pulsada
R VAR BYTE          ;variable r para hacer repeticiones

BIP VAR PORTA.0     ;el portA.1  Bip (conectar chicharra activa)
LED VAR PORTA.1     ;el portA.2 se llamará led
DOOR VAR PORTA.2    ;el portA.3 conectar relé para la cerradura
            
A VAR PORTD.0       ;nombres para los pines de las filas
B VAR PORTD.1
C VAR PORTD.2
D VAR PORTD.3

UNO     VAR PORTD.4     ;nombres para los pines de las columnas
DOS     VAR PORTD.5
TRES    VAR PORTD.6
CUATRO  VAR PORTD.7

SETPRIME VAR BYTE      ;variable para almacenar la 1era clave
SETSEGUN VAR BYTE      ;variable para almacenar la 2da clave
SETERCER VAR BYTE      ;variable para almacenar la 3era clave
SETCUART VAR BYTE      ;variable para almacenar la 4ta clave

INICIANDO:          ;programa del led para saber si está funcionando
    FOR R = 1 TO 2  
    HIGH LED : HIGH BIP   
    PAUSE 1000   
    LOW LED  : LOW BIP   
    PAUSE 150   
    NEXT
    
;********************* GUARDA LA CLAVE DE FABRICA *******************
EEPROM 0, [ 1,2,3,4 ]   ;cargar la memoria EEPROM desde la dirección 0
;********************************************************************
RESET:
    FOR R = 1 TO 3
    HIGH LED  : HIGH BIP  
    PAUSE 50   
    LOW LED  : LOW BIP  
    PAUSE 50   
  IF (UNO=0)AND(UNO=0)THEN RESET   ;corresponden a teclas 7 y C
    NEXT 

READ 0,SETPRIME    ;leer el dato de la EEPROM 0 y guardar en setprime
READ 1,SETSEGUN    ;leer el dato de la EEPROM 1 y guardar en setsegun
READ 2,SETERCER    ;leer el dato de la EEPROM 2 y guardar en setercer
READ 3,SETCUART    ;leer el dato de la EEPROM 3 y guardar en setcuart
    
GOTO TECLAUNO       ;ir a comparar claves

GRABAUNO:                       ;programa para cambiar la clave
    GOSUB PTECLA : HIGH LED     ;espera a que suelte las teclas
    GOSUB BARRIDO : GOSUB PTECLA ;ir a barrido y retorna a un antirrebote
    HIGH LED                    ;mantener encendido el LED
    WRITE 0,NUMERO           ;guardar en la EEPROM 0 el valor de numero
GRABADOS:
    GOSUB BARRIDO : GOSUB PTECLA  ;ir a barrido y retorna a un antirrebote
    HIGH LED                       ;mantener encendido el LED
    WRITE 1,NUMERO           ;guardar en la EEPROM 1 el valor de numero
GRABATRES:
    GOSUB BARRIDO : GOSUB PTECLA  ;ir a barrido y retorna a un antirrebote
    HIGH LED                      ;mantener encendido el LED
    WRITE 2,NUMERO           ;guardar en la EEPROM 2 el valor de numero
GRABACUATRO:
    GOSUB BARRIDO : GOSUB PTECLA  ;ir a barrido y retorna a un antirrebote
    HIGH LED                       ;mantener encendido el LED
    WRITE 3,NUMERO           ;guardar en la EEPROM 3 el valor de numero
GOTO RESET      ;ir a reset para cargar el nuevo valor en las variables

BARRIDO:    
        LOW A                               ;sensar la fila A
    IF UNO    = 0 THEN NUMERO =1:LCDOUT $FE,$C0,"1":PAUSE 250:LCDOUT,$FE,$C0,"*" :RETURN   ;tecla pulsada retorne con variable cargada con 1      
    IF DOS    = 0 THEN NUMERO =2:LCDOUT $FE,$C1,"2" :PAUSE 250:LCDOUT,$FE,$C1,"*":RETURN   ;tecla pulsada retorne con variable cargada con 2   
    IF TRES   = 0 THEN NUMERO =3:LCDOUT $FE,$C2,"3":PAUSE 250 :LCDOUT,$FE,$C2,"*":RETURN   ;tecla pulsada retorne con variable cargada con 3  
    IF CUATRO = 0 THEN NUMERO =10:LCDOUT $FE,$C3,"A":PAUSE 250:LCDOUT,$FE,$C3,"*":RETURN   ;tecla pulsada retorne con variable cargada con 10
        HIGH A
        LOW B                               ;sensar la fila B
    IF UNO    = 0 THEN NUMERO =4:LCDOUT $FE,$C0,"4":PAUSE 250:LCDOUT,$FE,$C0,"*":RETURN      
    IF DOS    = 0 THEN NUMERO =5:LCDOUT $FE,$C1,"5":PAUSE 250:LCDOUT,$FE,$C1,"*":RETURN      
    IF TRES   = 0 THEN NUMERO =6:LCDOUT $FE,$C2, "6":PAUSE 250:LCDOUT,$FE,$C2,"*":RETURN     
    IF CUATRO = 0 THEN NUMERO =11:LCDOUT $FE,$C3, "B":PAUSE 250:LCDOUT,$FE,$C3,"*":RETURN   
        HIGH B
        LOW C                               ;sensar la fila C
    IF UNO    = 0 THEN NUMERO =7:lcdout $FE,$C0,"7" :PAUSE 250:LCDOUT,$FE,$C0,"*":RETURN      
    IF DOS    = 0 THEN NUMERO =8:LCDOUT $FE,$C1, "8" :PAUSE 250:LCDOUT,$FE,$C1,"*":RETURN      
    IF TRES   = 0 THEN NUMERO =9:LCDOUT $FE,$C2, "9" :PAUSE 250:LCDOUT,$FE,$C2,"*":RETURN     
    IF CUATRO = 0 THEN NUMERO =12:LCDOUT $FE, $C3, "C":PAUSE 250:LCDOUT,$FE,$C3,"*":RETURN   
        HIGH C
        LOW D                               ;sensar la fila D
    IF UNO    = 0 THEN NUMERO =14:LCDOUT $FE,$C0,"/":PAUSE 250:LCDOUT,$FE,$C0,"*":RETURN    
    IF DOS    = 0 THEN NUMERO =0:LCDOUT $FE,$C1,"0":PAUSE 250:LCDOUT,$FE,$C1,"*":RETURN    
    IF TRES   = 0 THEN NUMERO =15:LCDOUT $FE,$C2,"+":PAUSE 250:LCDOUT,$FE,$C2,"*":RETURN    
    IF CUATRO = 0 THEN NUMERO =13:LCDOUT $FE,$C3,"D":PAUSE 250:LCDOUT,$FE,$C3,"*":RETURN   
        HIGH D
        pause 10
    GOTO BARRIDO
    
; ***************** programa de antirrebote de teclas *************  
PTECLA:                     
    HIGH LED : HIGH BIP     ;genera sonido cada que se pulsa tecla
    PAUSE 100               ;duración 100 milisegundos
    LOW LED : LOW BIP       ;apagar sonido y led
  ESPACIO:                     ;programa de antirrebote de teclas
    IF UNO    = 0 THEN ESPACIO  ;si la tecla sigue pulsada ir espacio  
    IF DOS    = 0 THEN ESPACIO  ;si la tecla sigue pulsada ir espacio
    IF TRES   = 0 THEN ESPACIO  ;si la tecla sigue pulsada ir espacio
    IF CUATRO = 0 THEN ESPACIO  ;si la tecla sigue pulsada ir espacio
    PAUSE 25
    RETURN                     ;retorna si se suelta las teclas

; *****************  comparación de claves ************************

TECLAUNO:
    GOSUB BARRIDO               ;ir a barrido y retornar con un valor
    GOSUB PTECLA        ;envía a un programa antirrebote para soltar tecla
 IF NUMERO = SETPRIME THEN TECLADOS   ;si el número es igual a setprime 
    GOTO FALSO                        ;caso contrario ir a lazo falso
    
TECLADOS:
    GOSUB BARRIDO :GOSUB PTECLA ;ir a barrido y retornar con un valor
 IF NUMERO = SETSEGUN THEN TECLATRES   ;si el número es igual a setsegun
    GOTO FALSO1                        ;caso contrario ir a lazo falso
    
TECLATRES:
    GOSUB BARRIDO :GOSUB PTECLA  ;ir a barrido y retornar con un valor
 IF NUMERO = SETERCER THEN TECLACUATRO  ;si el número es igual a setercer
    GOTO FALSO2                         ;caso contrario ir a lazo falso
   
TECLACUATRO:
    GOSUB BARRIDO :GOSUB PTECLA  ;ir a barrido y retornar con un valor
 IF NUMERO = SETCUART THEN OPENGE   ;si el número es igual a setcuart conectar relé
    GOTO FALSO3                     ;caso contrario ir a lazo falso
    
OPENGE:  
    FOR R = 1 TO 2          ;2 pitos indica clave correcta
    PAUSE 100
    HIGH LED : HIGH BIP :LCDOUT $FE, $0E, "  CORRECTO  "
    PAUSE 100
    LOW LED : LOW BIP   :LCDOUT $FE, 1
    NEXT

    HIGH DOOR :LCDOUT $FE, $0E, "  WELCOME  ":pause 1500:LCDOUT $FE, 1;se conecta el relé(abrir puerta)
    PAUSE 5000                      ;esperar 1 segundo
    LOW DOOR                        ;desconectar relé
HIGH A: HIGH B :HIGH C :LOW D       ;sensar solo la fila D
IF CUATRO = 0 THEN GRABAUNO      ;corresponde a la tecla D para ir a GRABAR
    GOTO TECLAUNO               ;ir nuevamente a comparar las claves
    
 ; ***************** lazos falsos teclas erroneas *****************   
FALSO: 
    GOSUB BARRIDO :GOSUB PTECLA   ;estas teclas no comparan ninguna
FALSO1:                           ;clave solo espera que termine de
    GOSUB BARRIDO :GOSUB PTECLA   ;pulsar las 4 teclas y no hace nada
FALSO2:
    GOSUB BARRIDO :GOSUB PTECLA  
FALSO3:                 
    FOR R = 1 TO 30                 ;30 pitos indica clave incorrecta
    PAUSE 150
    HIGH LED : HIGH BIP     :LCDOUT $FE, $0E, " INCORRECTO  "
    PAUSE 150
    LOW LED : LOW BIP     :LCDOUT $FE, 1
HIGH A: HIGH B :HIGH D :LOW C      ;sensar solo la fila C
IF (UNO=0)AND(UNO=0)THEN RESET   ;corresponden a teclas 7 y C para resetear
    NEXT
    
PANICO:
    HIGH LED
    PAUSE 500
    LOW LED
    PAUSE 500
HIGH A: HIGH B :HIGH D :LOW C       ;sensar solo la fila C
IF (UNO=0)AND(UNO=0)THEN RESET   ;corresponden a teclas 7 y C para resetear
    GOTO PANICO                     ; queda en este lazo para siempre
END

CONECTOR PIC A PIC 



PROGRAMA

TRANSMISOR
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 22/04/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
;programa para enviar datos desde el Pic transmisor
cmcon=7             ;cambiar a modo digital todo el puerto A

TRISB=%01111000
TRISA=000000

INCLUDE "modedefs.bas"      ;incluyen los modos de comunicación

A VAR PORTB.0       ;nombres para los pines de las filas
B VAR PORTB.1
C VAR PORTB.2
D VAR PORTB.3

UNO     VAR PORTB.4     ;nombres para los pines de las columnas
DOS     VAR PORTB.5
TRES    VAR PORTB.6
CUATRO  VAR PORTB.7

transmitir:
PORTB.0=0
PORTB.1=1
PORTB.2=1
PORTB.3=1
IF PORTB.4 =0 THEN ENVIO1 
IF PORTB.5 =0 THEN ENVIO2
IF PORTB.6 =0 THEN ENVIO3
IF PORTB.7=0 THEN ENVIO4
PORTB.0=1
PORTB.1=0
PORTB.2=1
PORTB.3=1
IF PORTB.4=0 THEN ENVIO5
IF PORTB.5=0 THEN ENVIO6
IF PORTB.6=0 THEN ENVIO7
IF PORTB.7=0 THEN ENVIO8
PORTB.0=1
PORTB.1=1
PORTB.2=0
PORTB.3=1 
IF PORTB.4=0 THEN ENVIO9
IF PORTB.5=0 THEN ENVIO10
IF PORTB.6=0 THEN ENVIO11
IF PORTB.7=0 THEN ENVIO12
PORTB.0=1
PORTB.1=1
PORTB.2=1
PORTB.3=0
IF PORTB.4=0 THEN ENVIO13
IF PORTB.5=0 THEN ENVIO14
IF PORTB.6=0 THEN ENVIO15
IF PORTB.7=0 THEN ENVIO16
PORTB.0=1
PORTB.1=1
PORTB.2=1
PORTB.3=1
pause 10
GOTO transmitir

envio1:
SEROUT portA.0,N2400,["1"]      
    
    GOTO transmitir
envio2:
SEROUT portA.0,N2400,["2"]      
    
    GOTO transmitir
envio3:
SEROUT portA.0,N2400,["3"]      
    
    GOTO transmitir  
envio4:
SEROUT portA.0,N2400,["4"]      
    
    GOTO transmitir  
    envio5:
SEROUT portA.0,N2400,["5"]      
    
    GOTO transmitir  
    envio6:
SEROUT portA.0,N2400,["6"]      
    
    GOTO transmitir  
    envio7:
SEROUT portA.0,N2400,["7"]      
    
    GOTO transmitir  
    envio8:
SEROUT portA.0,N2400,["8"]  
  
    GOTO transmitir  
    envio9:
SEROUT portA.0,N2400,["9"]      
  
    GOTO transmitir  
    envio10:
SEROUT portA.0,N2400,["A"]      
    
    GOTO transmitir  
    envio11:
SEROUT portA.0,N2400,["B"]      
   
    GOTO transmitir  
    envio12:
SEROUT portA.0,N2400,["C"]      
  
    GOTO transmitir  
    envio13:
SEROUT portA.0,N2400,["D"]      
   
    GOTO transmitir  
  envio14:
SEROUT portA.0,N2400,["E"]      
    
    GOTO transmitir  
    envio15:
SEROUT portA.0,N2400,["F"]      
    
    GOTO transmitir 
    envio16:
SEROUT portA.0,N2400,["P"]      
    
    GOTO transmitir 
END

RECEPTOR
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 22/04/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
;programa para recibir datos desde el Pic transmisor
cmcon=7             ;cambiar a modo digital todo el puerto A

TRISB=%01111000
TRISA=000000

INCLUDE "modedefs.bas"      ;incluyen los modos de comunicación
                
 ledA VAR portb.0             ;nombre ledr al puerto b.1 
ledB VAR portb.1               
ledC VAR portb.2 
ledD VAR portb.3 
ledE VAR portb.4 
ledF VAR portb.5 
ledG VAR portb.6 
          
datos VAR BYTE              ;variable para almacenar el dato serial

HIGH leda:HIGH ledB:HIGH ledC:HIGH ledD:HIGH ledE:HIGH ledF:HIGH ledG;led para saber si ya arrancó el PIC
PAUSE 150
LOW leda:LOW ledB:LOW ledC:LOW ledD:LOW ledE:LOW ledF:LOW ledG



recibir:
SERIN portA.0 ,N2400,datos    ;recibir dato serial y guardar en datos
IF datos="1" THEN PORTB=01000      ;si es 1 encender ledr
IF datos="2" THEN PORTB=00011 
IF datos="3" THEN PORTB=%1000110 
IF datos="4" THEN PORTB=%0100001 
IF datos="5" THEN PORTB=00110 
IF datos="6" THEN PORTB=01110 
IF datos="7" THEN PORTB=00010 
IF datos="8" THEN PORTB=01001
IF datos="9" THEN PORTB=%1111001
IF datos="A" THEN PORTB=%1100000
IF datos="B" THEN PORTB=%1000111 
IF datos="C" THEN PORTB=%0101011 
IF datos="D" THEN PORTB=%1000000 
IF datos="E" THEN PORTB=01100 
IF datos="F" THEN PORTB=11000 
IF datos="G" THEN PORTB=10010 

PAUSE 10

GOTO recibir

END

PIC A PIC CON LCD


TRANSMISOR

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 13/05/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
cmcon=7             

TRISA=000000
TRISB=%11110000

INCLUDE "modedefs.bas"      

A VAR PORTB.0       
B VAR PORTB.1
C VAR PORTB.2
D VAR PORTB.3

UNO     VAR PORTB.4     
DOS     VAR PORTB.5
TRES    VAR PORTB.6
CUATRO  VAR PORTB.7

transmitir:
PORTB.0=0
PORTB.1=1
PORTB.2=1
PORTB.3=1
IF PORTB.4 =0 THEN ENVIO1 
IF PORTB.5 =0 THEN ENVIO2
IF PORTB.6 =0 THEN ENVIO3
IF PORTB.7 =0 THEN ENVIO4
PORTB.0=1
PORTB.1=0
PORTB.2=1
PORTB.3=1
IF PORTB.4=0 THEN envio5
IF PORTB.5=0 THEN envio6
IF PORTB.6=0 THEN envio7
IF PORTB.7=0 THEN envio8
PORTB.0=1
PORTB.1=1
PORTB.2=0
PORTB.3=1 
IF PORTB.4=0 THEN envio9
IF PORTB.5=0 THEN envio10
IF PORTB.6=0 THEN envio11
IF PORTB.7=0 THEN envio12
PORTB.0=1
PORTB.1=1
PORTB.2=1
PORTB.3=0
IF PORTB.4=0 THEN envio13
IF PORTB.5=0 THEN envio14
IF PORTB.6=0 THEN envio15
IF PORTB.7=0 THEN ENVIO16


pause 10
GOTO transmitir

envio1:
SEROUT portA.0,N2400,["1"]      
    
    GOTO transmitir
envio2:
SEROUT portA.0,N2400,["2"]      
    
    GOTO transmitir
envio3:
SEROUT portA.0,N2400,["3"]      
    
    GOTO transmitir  
envio4:
SEROUT portA.0,N2400,["4"]      
    
    GOTO transmitir  
    envio5:
SEROUT portA.0,N2400,["5"]      
    
    GOTO transmitir  
    envio6:
SEROUT portA.0,N2400,["6"]      
    
    GOTO transmitir  
    envio7:
SEROUT portA.0,N2400,["7"]      
    
    GOTO transmitir  
    envio8:
SEROUT portA.0,N2400,["8"]  
  
    GOTO transmitir  
    envio9:
SEROUT portA.0,N2400,["9"]      
  
    GOTO transmitir  
    envio10:
SEROUT portA.0,N2400,["A"]      
    
    GOTO transmitir  
    envio11:
SEROUT portA.0,N2400,["B"]      
   
    GOTO transmitir  
    envio12:
SEROUT portA.0,N2400,["C"]      
  
    GOTO transmitir  
    envio13:
SEROUT portA.0,N2400,["D"]      
   
    GOTO transmitir  
  envio14:
SEROUT portA.0,N2400,["E"]      
    
    GOTO transmitir  
    envio15:
SEROUT portA.0,N2400,["F"]      
    
    GOTO transmitir 
    envio16:
SEROUT portA.0,N2400,["G"]      
    
    GOTO transmitir 
END

RECEPTOR
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 13/05/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

INCLUDE "modedefs.bas"     
                
Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       3
Define  LCD_EREG        PORTB
Define  LCD_EBIT        2

PAUSE 200
lcdout,$fe ,1
lcdout,$fe ,$0e, "    HOLA    "

         
cmcon=7             
NUMERO VAR BYTE     
R VAR BYTE                    
datos VAR BYTE             

recibir:
SERIN portA.0 ,N2400,datos    

IF datos="1" THEN NUMERO =1:LCDOUT $FE,$C0,"A":PAUSE 250:LCDOUT,$FE,$C0," "
IF datos="2" THEN NUMERO =2:LCDOUT $FE,$C1,"B":PAUSE 250:LCDOUT,$FE,$C1," "
IF datos="3" THEN NUMERO =3:LCDOUT $FE,$C2,"C":PAUSE 250:LCDOUT,$FE,$C2," " 
IF datos="4" THEN NUMERO =10:LCDOUT $FE,$C3,"D":PAUSE 250:LCDOUT,$FE,$C3," "
IF datos="5" THEN NUMERO =4:LCDOUT $FE,$C0,"E":PAUSE 250:LCDOUT,$FE,$C0," "
IF datos="6" THEN NUMERO =5:LCDOUT $FE,$C1,"F":PAUSE 250:LCDOUT,$FE,$C1," "
IF datos="7" THEN NUMERO =6:LCDOUT $FE,$C2,"G":PAUSE 250:LCDOUT,$FE,$C2," "
IF datos="8" THEN NUMERO =11:LCDOUT $FE,$C3,"H":PAUSE 250:LCDOUT,$FE,$C3," "
IF datos="9" THEN NUMERO =7:LCDOUT $FE,$C0,"I":PAUSE 250:LCDOUT,$FE,$C0," "
IF datos="A" THEN NUMERO =8:LCDOUT $FE,$C1,"J":PAUSE 250:LCDOUT,$FE,$C1," "
IF datos="B" THEN NUMERO =9:LCDOUT $FE,$C2,"K":PAUSE 250:LCDOUT,$FE,$C2," "
IF datos="C" THEN NUMERO =12:LCDOUT $FE,$C3,"L":PAUSE 250:LCDOUT,$FE,$C3," "
IF datos="D" THEN NUMERO =14:LCDOUT $FE,$C0,"M":PAUSE 250:LCDOUT,$FE,$C0," "
IF datos="E" THEN NUMERO =0:LCDOUT $FE,$C1,"N":PAUSE 250:LCDOUT,$FE,$C1," "
IF datos="F" THEN NUMERO =15:LCDOUT $FE,$C2,"O":PAUSE 250:LCDOUT,$FE,$C2," "
IF datos="G" THEN NUMERO =13:LCDOUT $FE,$C3,"P":PAUSE 250:LCDOUT,$FE,$C3," "

PAUSE 100

GOTO recibir

END

PIC A PIC SECUENCIA DE LUCES CON PULSADORES


TRANSMISOR

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/05/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
INCLUDE "modedefs.bas"

TRISB=%11111000
cmcon=7

BOTONA VAR PORTB.0
BOTONB VAR PORTB.1
BOTONC VAR PORTB.2
BOTOND VAR PORTB.3

TRANSMITIR:
IF BOTONA=0 THEN ENVIO1
IF BOTONB=0 THEN ENVIO2
IF BOTONC=0 THEN ENVIO3
IF BOTOND=0 THEN ENVIO4
GOTO TRANSMITIR

ENVIO1:
SEROUT PORTA.0,N2400,["A"]
PAUSE 500
GOTO TRANSMITIR
 
ENVIO2:
SEROUT PORTA.0,N2400,["B"]
PAUSE 500
GOTO TRANSMITIR

ENVIO3:
SEROUT PORTA.0,N2400,["C"]
PAUSE 500
GOTO TRANSMITIR

ENVIO4:
SEROUT PORTA.0,N2400,["D"]
PAUSE 500
GOTO TRANSMITIR

END
RECEPTOR
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/05/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
INCLUDE "modedefs.bas"

LEDS VAR PORTB

DATOS VAR BYTE

TRISA=000000
cmcon=7
LEDS=1
TRISB=0


HIGH LEDS
PAUSE 500
LOW LEDS

RECIBIR:
SERIN PORTA.0,N2400, DATOS
IF DATOS="A" THEN  LEDS=LEDS <<1
IF DATOS="B" THEN  LEDS=LEDS >>1
IF DATOS="C" THEN  LEDS=LEDS <<1:PAUSE 1000: LEDS=LEDS >>1
IF DATOS="D" THEN  LEDS=LEDS >>1:PAUSE 1000: LEDS=LEDS <<1

LOW LEDS
GOTO RECIBIR
END

SONIDOS


PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14/05/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************


PROGRAMA:
SOUND PORTB.0,[185,5,123,5,55,5,49,5,34,5,13,5]
GOTO PROGRAMA
END

TEMPORIZADOR



PROGRAMA

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 21/05/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
unid    var byte        
dece    var byte      
cent    var byte       


setunid    var byte     
setdece    var byte    
setcent    var byte     
    

setunid=4      
setdece=2  
setcent=0   
   

led var porta.0     
temporizador var porta.4
contar  var porta.3     
encera  var porta.2     
visual  var porta.1     
activar var bit         

trisb=0                 
cmcon=7                 
    
    high led        
    pause 200          
    
encerar:
    unid=0              
    dece=0              
    cent=0              
                
    low led         
    
display:
    portb= 224+unid     
    pause 5
    portb= 208+dece     
    pause 5
    portb= 176+cent     
    pause 5
   
    gosub teclas        
goto display

teclas:
    if contar=0 then sumar       
    if temporizador=0 then restar
    if encera=0 then encerar     
    if visual=0 then visualizar  
    activar=1         
return
sumar:
    if activar=0 then return  
    activar=0       
    unid=unid+1                 
    if unid<10 then comparar   
    unid=0                      
    dece=dece+1               
    if dece<10 then comparar
    dece=0
    cent=cent+1
    if cent<10 then comparar
    cent=0

return                     
restar:
    if activar=0 then return
    activar=1
    cent=cent-1
    if cent<10 then comparar
    cent=1
    dece=dece-1
    if dece<10 then comparar
    dece=1
    unid=unid-1
    if unid<10 then comparar    
    unid=1 
    
return
visualizar:
    portb= 224+setunid     
    pause 15
    portb= 208+setdece   
    pause 15
    portb= 176+setcent     
    pause 15
   
    if visual=0 then visualizar
    return                 
comparar:
    if unid!=setunid then return   
    if dece!=setdece then return   
    if cent!=setcent then return

    high led       
    return                     
end


links:http://shink.in/3Qjry
links:http://shink.in/3Qjry

 

¿Te gusta esta pagina?

TRADUCTOR