Elige tu idioma
Visitas
visitantes
Calendario Ideas&Tecnologia
| L | M | X | J | V | S | D |
|---|---|---|---|---|---|---|
| « Ene | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
Archivos
Meta
CATEGORIAS
- General (9)
- Ideas&Tecnología (1)
- Presentacion (8)
Entradas recientes
- Manual de Labview
- Manual de Proteus para diseno de PCB’S
- Radiocontrol con el TLP434 y RLP434
- FABRICACION DE UNA PCB POR TRANSFERENCIA TERMICA
- Reloj Ajedrez
Nube de Etiquetas
VIDEO
Ultimos comentarios
- Saludos.Interesante, no he usado este tipo de pape...
- Estimados, se que tienen un circuito de poder para...
- Tengo mucho interés en hacer poryectos con pics y ...
- hola victor como estas , estoy trabanjo sobre un p...
- buenisimo, sigue adelante a ver si te animas a hac...
- I uploaded a YouTube video -- Seguidor de linea I&T http://www.youtube.com/watch?v=ZX1CvsIn_2k&feature=autoshare_twitter
- I subscribed to mbenavidd1986's channel on YouTube http://www.youtube.com/user/mbenavidd1986?feature=autoshare_twitter
- Gracias robo3001!!!!! Un saludo para ti y para todo Peru (YouTube http://www.youtube.com/watch?v=UZMqlDsY9PU&feature=autoshare_twitter)
- I uploaded a YouTube video -- CER2006-Seguidor de linea http://www.youtube.com/watch?v=v0DpzrjGe58&feature=autoshare_twitter
- I uploaded a YouTube video -- Sistema de Seguridad Para un Laboratorio I&T http://bit.ly/Lr1TQ
- I uploaded a YouTube video -- CER2009, CIRAX CAMPEON Categoria Sumo Liviano http://bit.ly/c7miO
Enlaces
Count per Day
- 48Visitors per day:
- 3710Total visitors:
- 1Visitors currently online:
- 19 Noviembre 2009Counter starts on:
Directorios
Manual de Labview
12/01/10
Tutorial de Labview
Por: Ideas&Tecnologia

LabView es un programa para el desarrollo de aplicaciones de propositos generales, en la cual es utilizado por la mayoría de los estudiantes, ingenieros, investigadores, etc. Esto se debe por su amigable interface grafica y su facilidad de realizar grandes proyectos.
Labview abarca varios campos de ingeniería, como: Telecomunicaciones, Automatizacion, Estadistica, Programacion, Robotica, etc.
Instalación de Labview
Para la instalación de labview es realmente sencillo, solo seguir los pasos predeterminados que te indica el instalador y listo.
Lo que hay que tomar en cuenta es el ingreso de las licencias, para esto hay que irse a Programas -> National Instruments -> NI License Manager
Luego irse al menú Options y seleccionar Install License File, bueno aquí se debe buscar el archivo que aparece cuando crackeas, y listo, ya puedes darle uso al Labview.

Para el uso de bloques especiales en labview, como ejemplo: Rf Communications, PID, Filtros, Vision, Bases de Datos, USB, etc;. hace falta instalarlos a parte.
OJO!
Una de la formas de hacer proyectos en labview, bueno a criterio personal, es partiendo de los ejemplos que se encuentran en los archivos de instalación de labview, archivos que aparecen cuando instalas el labview y las librerías adicionales.
Estos archivos están direccionados en:
Archivos de Programas -> National Instruments -> Labview 8.5 -> Examples
Los temas que tratan los ejemplos son los siguientes:

Aquí lo que tienen que hacer es buscar lo que quieren hacer, por ejemplo: RF comunications, filtros, PID, Reconocimientos con visión, identificador de código de barras, etc. Y luego de lo buscado, partir como base para la realización de sus projectos.
Hay una inmensa gama de ejemplos de diferentes areas de ingeniería, algo que de seguro les va servir y de mucho.
Otras forma de buscar ejemplos es desde el mismo labview.

Luego debemos seleccionar la pestaña Search:

Y luego en Enter Keyword(s) poner lo que queremos realizar.
OBSERVACIONES
ü Labview es una herramienta que posee todas las facilidades para realizar diversas aplicaciones, lo ventajoso de trabajar con Labview es la utilización de diversas y diferentes opciones, ya que utiliza: base de datos, adquisición de imágenes, transmisión de datos, etc.
ü La modularización es una ventaja bien grande en LABVIEW, se puede analizar resultado por sub-bloques, dando una ubicación más fácil de donde se encuentra el error o percance en caso de que hubiere.
Hay gran cantidad de recursos de buena calidad en internet en enseñanza basica de labview, es por ese motivo que nos enfocaremos en Vision, ya que es escasa la información que existe.
Labview – Vision
Utilizacion de una Camara Web

Este es el diagrama de bloque para la utilizar la cámara web, ahora vamos a explicar paso a paso la realización de este diagrama de bloque.

Crea una lista de todas ls cámaras usb existentes en la computadora.

Con este matriz Index se selecciona cual cámara se desea utilizar pues poniendo el numero en la que se encuentra la cámara en la lista.
![]()
Crea una sesión IMAQ USB para la cámara especificada y luego realiza la adquisición.
![]()
Crea un memoria temporal para una imagen, en este caso, para la imágenes de la cámara web.

Aquí se obtiene imágenes durante la adquisición, se lo pone dentro de una while para que se mantega activado la visualización de imágenes, si deseamos finalizar solo aplastamos el botón STOP.
![]()
Cerramos la sesión de la cámara usb
![]()
Elimina o vacia la memoria temporal que se utilizo para obtención de imágenes.
![]()
Administra los errores que se pueden presentar.
Una vez explicado, haremos una demostración en el panel Frontal, que lo haremos a continuación:

RECOMENDACIÓN
1. En el manejo de las cámaras web, obligadamente tiene que conmutar una cámara a la vez en forma secuencial, en el caso de no hacerlo, ocasiona que el código en labview presente errores. Para solucionar este problema, debe de darse la inicialización de una cámara y la terminación de la misma, justo en el momento que se utilice la otra cámara, de esta manera se logrará manejar varias cámaras a la vez.
2. Cuando la cámara realiza el enfoque para obtener las imagenes, tratar de controlar la intensidad de luz por que afecta la adquisición de datos.
3. Para tener un margen de error pequeño en la toma de imágenes a través de una cámara web, es recomendable una cámara de alta fidelidad, mientras mayor sea la resolución, menor será el margen de error.
FABRICACION DE UNA PCB EN FORMA
CASERA
POR TRANSFERENCIA TERMICA
Por: Ideas&Tecnologia

DESCRIPCION
Realizar el circuito impreso de forma simple a manera profesional.
Una vez ya realizado el circuito pcb en ARES procedemos a pasar el circuito a la baquelita, con materiales que tenemos a disposición en nuestros hogares.
MATERIALES:
Baquelita
Hoja adhesiva A4
Plancha (las que se usan para planchar la ropa)
Lija fina o lustre para limpiar la película de protección que viene en la baquelita
Broca 1mm
Acido ferrico
Recipiente
MANOS A LA OBRA:
1. Despegamos las dos partes que conforman la hoja adesiva “esto es importante ya que debemos tomar una de las dos para hacer la impresión del circuito” y tomamos la hoja que no tiene el pegamento.
2. Imprimimos el circuito pcb en una impresora ´LASER´ (no se debe usar impresora a tinta) ya que el método a seguir se llama transferencia térmica.

3. Una vez impreso vamos a pasar nuestra imagen del circuito a la baquita.
4. Limpiamos la película de protección de la baquelita con un lustre hasta que quede brilloso.

5. Recortamos la baquelita a una medida un poco mayor a la del circuito impreso.
6. Sobreponemos el papel con la baquelita y sujetamos con cinta transparente.

7. Encendemos la plancha y la ponemos a la máxima temperatura.
8. Procedemos a planchar, en los primeros momentos mantenemos por unos 15 seg la pancha sobre el papel para asegurarnos que no se deslice luego de ello hacemos ligeros movimientos hasta estar seguros de haber cubierto todas las áreas hacemos esto por unos 5 min (el tiempo puede variar de acuerdo al tamaño del circuito).



9. Una vez planchado llevamos la baquelita a una tina de agua y la sumergimos (con esto hacemos que la hoja se empape y quede la impresión sobre la baquelita) esperamos unos minutos y vamos retirando el papel suavemente.

10. Podremos apreciar que la impresión va quedando el la baquelita y limpiamos con un cepillo los restos de papel que estén por ahí.



11. Si en el caso de que se llegue a perder una línea se puede arreglar con un marcador indeleble la falla.
12. Preparamos el acido férrico con agua hasta una medida donde pueda cubrir la baquelita en nuestro recipiente.

13. Sumergimos la baquelita en el acido, en nuestro caso tenemos una maquina que nos ayuda en hacer los movimientos para que el liquido este corriendo por todas partes.

14. Esperamos hasta que el acido se halla comido la parte que no es circuito.


15. Limpiamos, perforamos donde van los elementos y listo ya tienes tu pcb.



16. Con esto concluimos y a disfrutar de tu proyecto.
Reloj Ajedrez
06/01/10
Reloj Ajedrez
Por: Ideas&Tecnologia

Descripción
Este proyecto realizado en codigo assembler consiste en el diseño de un circuito de reloj digital cuya funcion es la de controlar el tiempo de una partida de ajedrez. Para realizar este proyecto utilizamos el PIC16F887 y la
técnica de múltiplexación para ahorrar el uso de pines del microcontrolador y a su vez el consumo de energía debido a que se utiliza 8 display cátodo común, un indicador Led para inicio y final del juego,3 button para el control de Jugador1,2 y Start/Finish.
Funcionamiento
Al energizar el circuito este empezara con el reloj seteado en cero, esperando a que el juez presione el button Start/Finish, al presionar este button el indicador led encenderá indicando que se a iniciado el juego, luego de esto se espera a que un jugador presione el button para dar inicio al arranque del reloj una vez iniciado el juego el juez podrá detenerlo en el momento que deseo y a la vez reanudarlo.
Código en ASM
;**********************************************************************************************
LIST P=16F877A
INCLUDE “P16F877A.INC”
ERRORLEVEL -302
__CONFIG (_CP_OFF & _PWRTE_OFF & _HS_OSC & _WDT_OFF & _LVP_OFF & _BODEN_OFF )
;************Equivalencias ******************************************
DISPDIG1 EQU 0X20 ;COD 7 SEG DE DIGITO 1
DISPDIG2 EQU 0X21 ;COD 7 SEG DE DIGITO 2
DISPDIG3 EQU 0X22 ;COD 7 SEG DE DIGITO 3
DISPDIG4 EQU 0X23 ;COD 7 SEG DE DIGITO 4
DISPDIG5 EQU 0X24 ;COD 7 SEG DE DIGITO 5
DISPDIG6 EQU 0X25 ;COD 7 SEG DE DIGITO 6
DISPDIG7 EQU 0X26 ;COD 7 SEG DE DIGITO 7
DISPDIG8 EQU 0X27 ;COD 7 SEG DE DIGITO 8
SELECT EQU 0X29 ;HABILITADOR PARA DISPLAYS
UNIDAD EQU 0X30
DECENA EQU 0X31
N1 EQU 0X32
N2 EQU 0X33
N3 EQU 0X34
CENTENA EQU 0X35
SEGJUGA1 EQU 0X36
SEGJUGA2 EQU 0X37
MINJUGA1 EQU 0X38
MINJUGA2 EQU 0X39
; CARGA_TMR0 SE USA PARA PROGRAMAR EL TMR0
CARGA_TMR0 EQU d’217′ ;217=>2ms
;*********************************************************************
ORG 0
GOTO INICIO
ORG 4 ;Int cada 5ms
GOTO INTERRUPTION
;#####################################################################
; PROGRAMA PRINCIPAL
INICIO
BSF STATUS,5 ; Seleccion del banco 1
CLRF TRISD
MOVLW 07H
MOVWF TRISC
CLRF TRISB
CLRF TRISE
MOVLW b’10000111′
MOVWF OPTION_REG ; PRE-ESCALER=256
MOVLW b’10100000′ ; Interrupci¢n por timer0
MOVWF INTCON
bcf STATUS,5 ; Seleccion banco 0
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF DISPDIG1
CLRF DISPDIG2
CLRF DISPDIG3
CLRF DISPDIG4
CLRF DISPDIG5
CLRF DISPDIG6
CLRF DISPDIG7
CLRF DISPDIG8
CLRF SELECT
CLRF UNIDAD
CLRF DECENA
CLRF CENTENA
CLRF SEGJUGA1
CLRF SEGJUGA2
CLRF MINJUGA1
CLRF MINJUGA2
CLRF N1
CLRF N2
CLRF N3
CLRWDT
MOVLW 0×01 ;Interrupción por timer0
MOVWF SELECT
MOVLW CARGA_TMR0 ;Valor a cargar en el Timer:
MOVWF TMR0
STARTPRESS
BCF PORTC,3
BTFSC PORTC,2 ;SI BIT=0 EJECUTA SIG INSTRUCCION
GOTO STARTSOLTAR
GOTO STARTPRESS
STARTSOLTAR BTFSC PORTC,2 ;SI BIT=0 EJECUTA SIG INSTRUCCION
GOTO STARTSOLTAR
BSF PORTC,3
PRESS BTFSC PORTC,0 ;SI BIT=0 EJECUTA SIG INSTRUCCION
GOTO SOLTARJUGADOR1
BTFSC PORTC,1
GOTO SOLTARJUGADOR2
GOTO PRESS
SOLTARJUGADOR1 BTFSC PORTC,0
GOTO SOLTARJUGADOR1
GOTO JUGADOR1
SOLTARJUGADOR2 BTFSC PORTC,1
GOTO SOLTARJUGADOR2
GOTO JUGADOR2
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
JUGADOR1
INCF SEGJUGA1,F
MOVF SEGJUGA1,W
SUBLW .60
BTFSC STATUS,2
GOTO MINUTOSJ1
GOTO SEGUNDOSJ1
MINUTOSJ1 CLRF SEGJUGA1
INCF MINJUGA1,F
BCF STATUS,2
CLRW
SEGUNDOSJ1
BTFSC PORTC,1
GOTO JUGADOR2
CALL TIMEJUGADOR1
CALL DELAY
BTFSC PORTC,2
GOTO STOP
GOTO JUGADOR1
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
JUGADOR2
INCF SEGJUGA2,F
MOVF SEGJUGA2,W
SUBLW .60
BTFSC STATUS,2
GOTO MINUTOSJ2
GOTO SEGUNDOSJ2
MINUTOSJ2 CLRF SEGJUGA2
INCF MINJUGA2,F
BCF STATUS,2
CLRW
SEGUNDOSJ2
BTFSC PORTC,0
GOTO JUGADOR1
CALL TIMEJUGADOR2
CALL DELAY
BTFSC PORTC,2
GOTO STOP
GOTO JUGADOR2
STOP BTFSC PORTC,2
GOTO STOP
GOTO STARTPRESS
;************************************************************************
TIMEJUGADOR1
MOVF SEGJUGA1,W
CALL BINBCD
MOVF UNIDAD,W
MOVWF DISPDIG4
MOVF DECENA,W
MOVWF DISPDIG3
MOVF MINJUGA1,W
CALL BINBCD
MOVF UNIDAD,W
MOVWF DISPDIG2
MOVF DECENA,W
MOVWF DISPDIG1
RETURN
;************************************************************************
TIMEJUGADOR2
MOVF SEGJUGA2,W
CALL BINBCD
MOVF UNIDAD,W
MOVWF DISPDIG8
MOVF DECENA,W
MOVWF DISPDIG7
MOVF MINJUGA2,W
CALL BINBCD
MOVF UNIDAD,W
MOVWF DISPDIG6
MOVF DECENA,W
MOVWF DISPDIG5
RETURN
;************************************************************************
;**********************************************************************
; SUBRUTINA INTERRUPT
INTERRUPTION
MOVLW b’10100000′ ;Limpiar bandera de TMR0
MOVWF INTCON
MOVLW CARGA_TMR0 ;Valor a cargar en el Timer:
MOVWF TMR0
CLRWDT
BCF ´ STATUS,C
BTFSC SELECT,0 ;SI BIT CODIGO_G0.0=1 EJECUTA SIG INSTRUCCION
GOTO DIG1
BTFSC SELECT,1 ;SI BIT CODIGO_G0.1=1 EJECUTA SIG INSTRUCCION
GOTO DIG2
BTFSC ´ SELECT,2 ;SI BIT CODIGO_G0.2=1 EJECUTA SIG INSTRUCCION
GOTO DIG3
BTFSC SELECT,3 ;SI BIT CODIGO_G0.3=1 EJECUTA SIG INSTRUCCION
GOTO DIG4
BTFSC SELECT,4 ;SI BIT CODIGO_G0.3=1 EJECUTA SIG INSTRUCCION
GOTO DIG5
BTFSC SELECT,5 ;SI BIT CODIGO_G0.3=1 EJECUTA SIG INSTRUCCION
GOTO DIG6
BTFSC SELECT,6 ;SI BIT CODIGO_G0.3=1 EJECUTA SIG INSTRUCCION
GOTO DIG7
BTFSC SELECT,7 ;SI BIT CODIGO_G0.3=1 EJECUTA SIG INSTRUCCION
GOTO DIG8
DIG1
CLRF PORTD
MOVF DISPDIG1,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×02
MOVWF SELECT
RETFIE
DIG2
CLRF PORTD
MOVF DISPDIG2,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×04
MOVWF SELECT
RETFIE
DIG3
CLRF PORTD
MOVF DISPDIG3,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×08
MOVWF SELECT
RETFIE
DIG4
CLRF PORTD
MOVF DISPDIG4,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×10
MOVWF SELECT
RETFIE
DIG5
CLRF PORTD
MOVF DISPDIG5,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×20
MOVWF SELECT
RETFIE
DIG6
CLRF PORTD
MOVF DISPDIG6,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×40
MOVWF SELECT
RETFIE
DIG7
CLRF PORTD
MOVF DISPDIG7,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×80
MOVWF SELECT
RETFIE
DIG8
CLRF PORTD
MOVF DISPDIG8,W
CALL TABLA
MOVWF PORTB ;Dato al display
MOVF SELECT,W
MOVWF PORTD
NOP
MOVLW 0×01
MOVWF SELECT
RETFIE
;***********************************************************
;SUBRUTINA DELAY=N1×20.556 MSEG.
;CON N1=25 SE TIENE UN RETARDO DE 0.5 SEG
;CON N1=50 SE TIENE UN RETARDO DE 1 SEG.
;CON N1=100 SE TIENE UN RETARDO DE 2 SEG.
DELAY MOVLW .50
MOVWF N1
LAZO1 MOVLW .67
MOVWF N2
NOP
LAZO2 MOVLW .255
MOVWF N3
LAZO3 NOP
NOP
NOP
DECFSZ N3,F
GOTO LAZO3
DECFSZ N2,F
GOTO LAZO2
DECFSZ N1,F
GOTO LAZO1
RETURN
;***********************************************************
;Tabla de códigos de 7 segmentos para un display de CATODO COMUN. Los leds
;se encienden con un cero
TABLA
addwf PCL,F
retlw 0×3F ;0
retlw 0×06 ;1
retlw 0×5B ;2
retlw 0X4F ;3
retlw 0X66 ;4
retlw 0X6D ;5
retlw 0X7D ;6
retlw 0X07 ;7
retlw 0X7F ;8
retlw 0X6F ;9
;************************************************************************
;SUBRUTINA BINARIO/BCD
BINBCD NOP
MOVWF UNIDAD;NUMERO A CONVERTIR
CLRF DECENA
CLRF CENTENA
RESTA10 MOVLW .10
SUBWF UNIDAD,W
BTFSS STATUS,C;SALTA SI W >=10, C=1
GOTO BINBCDFIN
MOVWF UNIDAD;ACTUALIZA UNIDAD
INCF DECENA,F
MOVLW .10
SUBWF DECENA,W
BTFSS STATUS,C;SALTA SI W>=10, C=1
GOTO RESTA10
CLRF DECENA
INCF CENTENA,F
GOTO RESTA10
BINBCDFIN RETURN
;************************************************************************
END
Diseño de PCB



Contador up/down de 3 dígitosc
05/01/10
Contador up/down de 3 dígitos
Por: Ideas&Tecnologia

Descripción
Este proyecto consiste en diseñar un circuito contador de 3digitos mediante el PIC16F887, esto se mostrara en Formato Decimal y Binario. Para aquello se emplea 3 display Cátodo Común y 16 Led, donde el bit LSB es el pin RB0 y el MSB pin RC7, el modo de conteo se controla mediante el button (up/down)
Para realizar este proyecto utilizamos la técnica de múltiplexación para ahorrar el uso de pines del microcontrolador y a su vez el consumo de energía.
Funcionamiento
Al energizar el circuito este mostrara el numero ‘000’, para iniciar el conteo se presionara el button ‘up/down’ y de esta manera se iniciara el conteo up, si se desea cambiar el modo de conteo se deberá presionar el button up/down para cambiar al modo opuesto es decir al modo down.
Este circuito llegara hasta el valor máximo de ‘999’ una vez llegado a este valor se detendrá el conteo y esperara que el usuario vuelva a presionar el button ‘up/down’ lo mismo ocurrirá la llegar al valor ‘000’.
Código en MicroBasic
program CodigoMicro
dim DIG1 as WORD
dim DIG2 as WORD
dim DIG3 as WORD
dim Cont as Byte
dim Cont2 as Byte
dim numero as Word
dim Sentido as Byte
dim Tiempo as Byte
dim numeroLSB as WORD
dim numeroMSB as WORD
dim Tecla as Byte
dim salto as byte
sub procedure ButtonA()
if PORTA.0=1 then
while(PORTA.0=1) wend
Tecla=1
if Sentido=0 then
Sentido=1
else
Sentido=0
END IF
end if
end sub
sub function CODIG7SEG(dim num as Word) as BYTE
select case num
case 0 result = $3F
case 1 result = $06
case 2 result = $5B
case 3 result = $4F
case 4 result = $66
case 5 result = $6D
case 6 result = $7D
case 7 result = $07
case 8 result = $7F
case 9 result = $6F
end select ‘case end
end sub
sub procedure interrupt ‘ Interrupt service routine
INTCON = $00 ’ Set T0IE, clear T0IF
Inc(CONT)
Inc(Cont2)
IF Cont=1 THEN
PORTE.2=0
PORTE.1=0
PORTE.0=1
DELAY_US(5)
PORTD=CODIG7SEG(DIG1)
END IF
IF Cont=2 THEN
PORTE.0=0
PORTE.2=0
PORTE.1=1
DELAY_US(5)
PORTD=CODIG7SEG(DIG2)
END IF
IF Cont=3 THEN
PORTE.0=0
PORTE.1=0
PORTE.2=1
DELAY_US(5)
PORTD=CODIG7SEG(DIG3)
Cont=0
END IF
If Cont2=100 then
Tiempo=1
Cont2=0
End If
‘ Increment value of cnt on every interrupt
TMR0 = 245
INTCON = $A0 ‘ Set T0IE, clear T0IF
end sub
main:
OPTION_REG = $07 ‘ Assign prescaler to TMR0
ANSEL = 0 ‘ Configure AN pins as digital I/O
ANSELH = 0
TRISB = 0 ‘ PORTB is output
TRISA=$01
TRISC = 0
TRISD = 0
TRISE=0
WPUB=$FF
TMR0 = 245 ‘ Timer0 initial value
INTCON = $A0 ‘ Enable TMRO interrupt
Cont=0
Cont2=0
DIG1=0
DIG2=0
DIG3=0
portA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0
numero=0
numeroLSB=0
numeroMSB=0
Sentido=0
Tiempo=0
Tecla=0
Salto=0
while(1) ‘ While there is no interrupt, program runs in endless loop:
INICIO:
ButtonA()
if Tecla=0 THEN
goto INICIO
END IF
REVISAR:
IF Tecla=1 THEN
IF ((Sentido=0 ) AND (Tecla=1) )then
goto Decrementa
END IF
IF ((Sentido=1 ) AND (Tecla=1) )then
goto Incrementa
end if
else if salto=0 then
goto incrementa
else goto decrementa
end if
end if
Incrementa:
salto=0
Tecla=0
if Tiempo=1 then
if numero <999 then
Inc(numero)
end if
numeroLSB= lo(numero)
portB=numeroLSB
numeroMSB=Hi(numero)
portC=numeroMSB
DIG1= (numero / 100 )
DIG2= (numero / 10) mod 10
DIG3= numero mod 10
Tiempo=0
End If
ButtonA()
GOTO REVISAR
Decrementa:
salto=1
Tecla=0
if Tiempo=1 then
if numero>0 then
Dec(numero)
end if
numeroLSB= lo(numero)
portB=numeroLSB
numeroMSB=Hi(numero)
portC=numeroMSB
DIG1= (numero / 100 )
DIG2= (numero / 10) mod 10
DIG3= numero mod 10
Tiempo=0
End If
ButtonA()
GOTO REVISAR
wend
end.
Diseño de PCB










