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






































