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 ENDTeclado 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 ENDTECLADO 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 ENDCERRADURA 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 ENDCERRADURA 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/3Qjrylinks:http://shink.in/3Qjry