Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
01/02/2015 #2841

Avatar de JoaquinFerrero

Te falta alguna instrucción para que X vuelva a 0.

Algo así:
Código:
IF PORTB.7 = 1 THEN
	IF X = 1 THEN
		LOW PORTB.3	; aquí apagamos
		X = 0
	ELSE
		HIGH PORTB.3	; aquí encendemos
		X = 1
	ENDIF

	PAUSE 120
ENDIF
01/02/2015 #2842
Moderador

Avatar de D@rkbytes

astroloco dijo: Ver Mensaje
Hola a todos. Espero me puedan ayudar, soy novato en PICBasic Pro.

He estado intentando realizar un circuito con el PIC16F628A.
Al presionar un pulsador encender un led en modo estrobo, apagarlo con el mismo pulsador al volver a presionarlo, pero solo he podido lograr encenderlo, y después quiero apagarlo con el mismo pulsador y no se apaga.
Prueba de esta manera:
Código:
; Declaración de varibles.
B0          Var Byte
Flag        Var Bit

; Nombres para los pines.
Symbol LED      = PORTB.4
Symbol Pulsador = PORTB.0


Inicio:
    CMCON = 7               ; Comparadores analógicos OFF
    OPTION_REG = 0          ; Pull-Ups (PORTB) y Falling edge (INT-RB0)
    INTCON = %11010000      ; Habilitar interrupción por RB0
    
    On Interrupt GoTo SDI_RB0
    
    Flag = 1
    Low LED        

Programa:
    Button Pulsador,0,10,255,B0,0,Programa
        While Flag = 0 
            Toggle LED
            Pause 50
        Wend
        Low LED
        Flag = 0
    GoTo Programa

SDI_RB0:
    Disable
    
    If INTCON.1 = 1 Then INTCON.1 = 0   ; Limpiar flag INTF
    
    If Flag = 0 Then Flag = 1
    
    Resume
    Enable
    
    End
Espero que sea lo que quieres hacer.
Si tienes problema con los fuses para la palabra de configuración, no dudes en preguntar.

Suerte.
01/02/2015 #2843


Gracias amigos, una última duda en el caso de querer hacer el led titile o centelle , como seria para hacer que al pulsar el sw titile y al volver a pulsar el mismo sw se apague. Muchas gracias y saludos
02/02/2015 #2844
Moderador

Avatar de D@rkbytes

astroloco dijo: Ver Mensaje
Gracias amigos. Una última duda: En el caso de querer hacer que el led titile o centelle.
¿Cómo sería para hacer que al pulsar el sw titile y al volver a pulsar el mismo sw se apague?
Creo que no probaste el código que puse, ese programa eso es lo que hace.
Mencionaste hacer un estrobo. ¿No?
Con una presión del pulsador se enciende y apaga el LED cada 50ms y con otra se apaga.

Edit:
Mejoras para eliminar rebotes del pulsador...
Código:
; Declaración de variables.
B0          Var Byte
Flag        Var Bit

; Nombres para los pines.
Symbol LED      = PORTB.4
Symbol Pulsador = PORTB.0


Inicio:
;    CMCON = 7               ; Comparadores analógicos OFF
    OPTION_REG = 0          ; Pull-Ups (PORTB) y Falling edge (INT-RB0)
    INTCON = %11010000      ; Habilitar interrupción por RB0
    
    ; Activar el servicio de interrupciones.
    On Interrupt GoTo SDI_RB0
    
    Flag = 1                ; "Flag" en 1 al iniciar.
    Low LED                 ; "LED" en 0 al iniciar.

Programa:
    Button Pulsador,0,127,255,B0,0,Programa
       Pause 50
       
        While Flag = 0      ; Mientras "Flag" es 0... 
            Toggle LED      ; Cambiar de estado "LED"
            Pause 50        ; Hacer un retardo. (Aquí se cambia el tiempo del destello)
        Wend                ; Salir del bucle cuando "Flag" cambie a 1
        
        Low LED             ; "LED" en 0
        
        While Pulsador = 1  ; Mientras "Pulsador" esté en 1...
            Pause 20        ; Hacer un retardo de 20ms.
        Wend                ; Salir cuando "Pulsador" sea 0
        
        Flag = 0            ; Establecer "Flag" en 0
        
    GoTo Programa

; Servicio de interrupción por RB0
SDI_RB0:
    Disable                 ; Desactivar interrupciones.
    
    If INTCON.1 = 1 Then    ; Si es interrupción por RB0, entonces...
        If Flag = 0 Then    ; Si "Flag" está en 0, entonces...
            Flag = 1        ; Establecer "Flag" en 1
        EndIf
        INTCON.1 = 0        ; Limpiar flag INTF
    EndIf
    
    Resume                  ; Retornar al programa (RETFIE)
    Enable                  ; Volver a activar interrupciones.
    
    End
Al pin del pulsador se le tiene que colocar un capacitor de 100nF hacia negativo.
02/02/2015 #2845


Hola Darkbytes , Si lo probé el problema que tuve fue que no me fije con que lógica tenías tú el pulsador en el código que me enviaste, yo lo tenía con lógica Activo-Alto, y por eso no me funciono, la primera vez, hasta que vi tu otro comentario, fue que pensé que algo avía hecho mal ya era justo lo que necesito , me doy cuenta que yo anda muy lejos de encontrar el código apropiado.

Te agradezco mucho tu ayuda,
02/02/2015 #2846
Moderador

Avatar de D@rkbytes

astroloco dijo: Ver Mensaje
Hola Darkbytes. Si lo probé.
El problema que tuve fue que no me fijé con que lógica tenías tú el pulsador en el código que me enviaste.
Yo lo tenía con lógica Activo-Alto, y por eso no me funciono la primera vez.
OK. Para que eso no te vuelva a suceder, debes analizar los parámetros de la instrucción "Button"
Sobre todo el segundo "Down" = Estado del pin cuando se oprime el pulsador (0 o 1)
La ayuda de PBP dijo:
Down State of pin when button is pressed (1..0)
También está la configuración del registro OPTION_REG que en el comentario dice lo siguiente:
"Falling edge (INT-RB0)" O sea, la interrupción ocurrirá por flanco de bajada. (Cuando RB0 pase de 1 a 0)
Notarás que está todo en 0 porque nos interesa tener el bit 7 (RBPU) y el 6 (INTEDG) en 0
Los demás no importa que queden en 0 pues no se van a usar y no afectan al programa si quedan en 0.

En el post anterior puse el código comentado y con unas mejoras para tratar de evitar los rebotes del pulsador.

Suerte.
02/02/2015 #2847


Hola, buenas tardes.
Estoy iniciando con el uso de los LCD y pulsadores tomando como ejemplo el siguiente ejercicio donde se realiza con 2 pulsadores un incremento y decremento de un valor mostrado en el LCD.

¿Quisiera saber como haría para ir de la letra "A" a la letra "Z" o de la letra "Z" a la "A" con este mismo ejemplo de programa?

Gracias.

Código:
DEFINE LCD_DREG PORTB ' Indica que el Bus estará conectado en el Puerto B

DEFINE LCD_DBIT 4      ' Selección del Bit de inicio del puerto en el uC para el
                                ' bus de datos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 3     ' "RS" estará conectado en RB3
DEFINE LCD_EREG PORTB  ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 2      ' "E" estará conectado en RB2
Define Osc 4            ' Define el Oscilador para un Cristal
                             ' de 4 Mhz.
TRISA = $FF            ' Configura el puerto A como entrada.
TRISB = $00            ' Configura el puerto B como salida.
Dato Var Byte          ' Declaración de la Variable "Dato" tipo Byte.
Dato = 25              ' Inicializa la Variable Dato = 25.
Lcdout $fe, 1          ' Limpia la pantalla
Inicio:

Lcdout $fe,2              ' Inicio de la primera línea.
Lcdout "P1 Suma P2 Resta" ' Escribe mensaje en la primera línea.
Lcdout $fe,$C0,"Dato: ",Dec Dato," " ' Escribe el mensaje en la 2da línea
                                     ' seguido del valor cargado en la
                                     ' variable "Dato" en Decimal.
                                     
                                     
                                     
If PORTA.1 = 1 And Dato < 50 Then Call Suma 
                                            ' La siguiente instrucción pregunta si hay un "1" en RA1 y si la variable
                                            ' "Dato" es menor a 50. Si se cumplen estas dos condiciones, hace un salto
                                            ' con retorno a la subrutina "Suma".  
                        
                                            
If PORTA.3 = 1 And Dato > 0 Then Call Resta ' La siguiente instrucción pregunta si hay un "1" en RA3 y si la variable
                                            ' "Dato" es mayor a 0. Si se cumplen estas dos condiciones, hace un salto
                                            ' con retorno a la subrutina "Resta".



GoTo Inicio                ' Salta a la etiqueta "Inicio".
Suma:
Dato = Dato + 1            ' Incrementa en una unidad la variable "Dato".
Pause 350                  ' Realiza una pausa de 350 milisegundos para evitar
                           ' que el incremento de la variable sea muy acelerado
                           ' mientras el pulsador "P1" esté presionado.
Return                     ' Retorna una línea después del llamado "Call Suma".
Resta:
Dato = Dato - 1            ' Decrementa en una unidad la variable "Dato".
Pause 350                  ' Realiza una pausa de 350 milisegundos para evitar
                           ' que el decremento de la variable sea muy acelerado
                           ' mientras el pulsador "P2" esté presionado.
Return                     ' Retorna una línea después del llamado "Call Resta".
End
02/02/2015 #2848

Avatar de papirrin

en la ayuda dice:
If a pound sign (#) precedes an Item, the ASCII representation for each digit is sent to the LCD.
si un signo # antecede a un elemento, la representacion ASCII para cada digito se envia al LCD

asi que prueba asi:
Lcdout $fe,$C0,"Dato: ",#Dato
02/02/2015 #2849

Avatar de JoaquinFerrero

D@rkbytes dijo: Ver Mensaje
Edit:
Mejoras para eliminar rebotes del pulsador...
Hola.

Quiero recordar que el método Button ya tiene un procedimiento antirebote.

De la documentación:

BUTTON
BUTTON Pin,Down,Delay,Rate,BVar,Action,Label
Lee un Pin y, opcionalmente, realiza un antirebote y una autorepetición. Pin se ajusta automáticamente como entrada. Pin puede ser una constante (0-15), o una variable que contenga un número de 0 a 15 (p.e. B0) o el nombre de un patilla (p.e. PORTA.0).

Down Estado de la patilla cuando se pulsa el botón (0,1).
Delay Ciclo de cuenta antes de que comience la autorepetición (0-255). Si es 0, no se realiza ningún antirebote o autorepetición. Si es 255, se realiza un antirebote, y no una autorepetición.
Rate Velocidad de autorepetición (0-255).
BVar Variable de tamaño byte usada internamente para el contador de rebote o repetición. Se debe inicializar a 0 antes de usarla, y no usarla en el resto del programa.
Action Estado del botón para actuar (0 si no debe estar pulsado, 1 si sí debe estar).
Label La ejecución sigue en esta etiqueta si Action es verdadera.

Se puede definir la longitud del antirebote con un DEFINE:

DEFINE BUTTON_PAUSE 50

Más información: http://melabs.com/resources/pbpmanual/5_4-5_6.htm#56
02/02/2015 #2850
Moderador

Avatar de D@rkbytes

JoaquinFerrero dijo: Ver Mensaje
Quiero recordar que el método Button ya tiene un procedimiento antirebote.

De la documentación:

BUTTON
BUTTON Pin,Down,Delay,Rate,BVar,Action,Label
Si, así es, y sobre este tema ya se ha hablado anteriormente unas páginas atrás.

En pruebas físicas no ha resultado suficiente y es por eso que agregué otras rutinas más.
Otro problema es que al interactuar Button con la interrupción por RB0, Delay debe ser menor a 255 para no afectar la interrupción.

Edit:
Simplificación del código anterior sin usar la instrucción Button:
Código PHP:
Declaración de variables.
Flag    Var Bit

Nombres para los pines.
Symbol LED      PORTB.4

Inicio
:
    
OPTION_REG 0          Pull-Ups (PORTBy Falling edge (INT-RB0)
    
INTCON = %11010000      Habilitar interrupción por RB0
    
    
Activar el servicio de interrupciones.
    
On Interrupt GoTo SDI_RB0
    
    Low LED
Flag 0       "LED" "Flag" en 0 al iniciar.

Programa:
    While 
Flag 1          Mientras "Flag" sea 1...
        
Toggle LED          Cambiar de estado "LED"
        
Pause 50            Cambiar el tiempo del destello aquí
    Wend                    
Salir del bucle cuando "Flag" sea 0
        
    Low LED                 
Apagar el LED
        
    
GoTo Programa
    
Servicio de interrupción por RB0
SDI_RB0
:
    
Disable                 Desactivar interrupciones.
    
    If 
INTCON.1 1 Then    Si es interrupción por RB0entonces...        
        If 
Flag 0 Then    Si "Flag" está en 0entonces...
            
Flag 1        Establecer "Flag" en 1
        
Else                ; Caso contrario...
            
Flag 0        Establecer "Flag" en 0    
        
EndIf
        
INTCON.1 0        Limpiar flag INTF
    
EndIf
    
    
Resume                  Retornar al programa (RETFIE)
    
Enable                  Volver a activar interrupciones.
    
    
End 
03/02/2015 #2851


papirrin dijo: Ver Mensaje
en la ayuda dice:


si un signo # antecede a un elemento, la representacion ASCII para cada digito se envia al LCD

asi que prueba asi:
Lcdout $fe,$C0,"Dato: ",#Dato
Hola , Muchas gracias por tu respuesta. lo que quiero es poder controlar con 2 pulsadores la aparición de letra por letra del abecedario en un LCD. Con el primer pulsador empiece de la letra "A" .....hasta la letra "Z", por cada pulso que haga y me pueda detener en culaquier letra y luego con el segundo pulsador empiece a devolver por cada pulso que haga y me pueda detener en culaquier letra o llegar hasta la letra "A" nuevamnete.

Quiero saber como darle un valor a cada letra, para que al pulsar el pulsador1 una vez, aparezca la letra "A" y quede en pantalla, luego al pulsar el pulsador1 otra vez, aparezca la letra "B", luego al pulsar el pulsador1 otra vez, aparezca la letra "C" y asi sucesivamente llegar a cualquier letra o al final con la letra "Z", luego con el pulsador2 devolverme letra por letra por cada pulsada que haga, desde la letra en que quedé a cualquier letra o al final que para el pulsador2 seria la letra "A".

Gracias.
03/02/2015 #2852

Avatar de papirrin

¿quieres saber como se hace o quieres que te lo hagan? es diferente...

al codigo que pusiste en donde dice

Lcdout $fe,$C0,"Dato: ",DEC Dato

le pruebas poniendo:

Lcdout $fe,$C0,"Dato: ",#Dato

que es lo que indique en el mensaje anterior.. y delimitas con la condicion "if" el rango de la A a la Z.
03/02/2015 #2853
Moderador

Avatar de D@rkbytes

papirrin dijo: Ver Mensaje
¿Quieres saber como se hace o quieres que te lo hagan? es diferente...
jesusmolo ya puso el código que hizo, pero ha comentado que no le funciona.
papirrin dijo: Ver Mensaje
Al código que pusiste en donde dice:

Lcdout $fe,$C0,"Dato: ",DEC Dato

Le pruebas poniendo:

Lcdout $fe,$C0,"Dato: ",#Dato

Que es lo que indiqué en el mensaje anterior y delimitas con la condición "if" el rango de la A a la Z.
Al usar los operadores que propones, lo que se obtendrá será un número y no una letra.

Lo que jesusmolo quiere hacer es algo muy sencillo.
Si tomamos como base la Tabla ASCII, veremos que la letra A mayúscula equivale al número 65 y así sucesivamente hasta la Z que equivale al código ASCII 90.

Entonces mostrar cada letra en orden de abajo hacia arriba y viceversa, sería muy sencillo:
Código PHP:
Letra       Var Byte

    LCDOut $FE
,1,"   Abecedario"
    
    
Letra 65

Programa
:
    If 
PORTB.2 0 Then
        Letra 
Letra 1
        
If Letra >90 Then Letra 90
    
EndIf
    
    If 
PORTB.3 0 Then
        Letra 
Letra 1
        
If Letra <65 Then Letra 65
    
EndIf
        
    
LCDOut $FE,$C0,"Letra: ",Letra
    Pause 250
    
    
GoTo    Programa


    End 
Así de fácil.
03/02/2015 #2854

Avatar de papirrin

jesusmolo ya puso el código que hizo, pero ha comentado que no le funciona.
yo entendi diferente, entendi que agarro un codigo que alguien hizo y queria que alguien se lo ajustara a sus necesidades, pero bueno...

Al usar los operadores que propones, lo que se obtendrá será un número y no una letra
la verdad no me acuerdo, pero ahora que mencionas y seguramente lo tienes mas fresco si, con solo mandar el codigo ascii es suficiente..pero por ahi iba XD
03/02/2015 #2855
Moderador

Avatar de D@rkbytes

Pues si, es por eso que se han hecho preguntas acerca de por qué no se muestra el valor en la pantalla, o por qué se ven letras en vez de números.
Si se manda un 49 se verá un 1, pero si se manda como #49 o Dec 49, se verá el número 49

En el programa anterior se manda a la pantalla desde el 65 hasta el 90, letras <A:Z> en ASCII
Y para la minúsculas sería desde el 97 hasta el 122, letras <a:z> en ASCII

Si recorriéramos toda la tabla, desde el 0 hasta el 127, en los primeros 32 números no se vería nada, o se verían cuadros negros.

También se podría hacer con una tabla LookUp y así se podría poner la ñ o Ñ, pero no todas las pantallas la tienen en su CGROM.
03/02/2015 #2856

Avatar de papirrin

si, si te creo dark segun yo si es correcto tu codigo...

para serte honesto me queda la duda del #, o sea que sea lo mismo el # que el DEC, el dec si estoy seguro que no funcionaria.

cuando tenga un poco de tiempo lo checo para ver si es lo mismo o que diferencia hay, si la hay entre esos.

saludos...
04/02/2015 #2857
Moderador

Avatar de D@rkbytes

papirrin dijo: Ver Mensaje
Para serte honesto me queda la duda del #, o sea, que sea lo mismo el # que el DEC, el dec si estoy seguro que no funcionaría.
Para mostrar letras ninguno funcionaría, ambos convierten un número a cadena para poder ser visualizado.

# Se usa más que nada para enviar un número como cadena por RS-232 y terminando el envío con 13,10 (Cr/Lf)
Al terminar de esta forma el envío para pasar a la siguiente línea, ya no existe problema de que la siguiente cadena se sobreponga a la anterior.

Dec también convierte un número a cadena pero con la ventaja de que se puede definir la cantidad de dígitos a mostrar.
Por ejemplo: Dec5 123 nos mostrará, 00123
papirrin dijo: Ver Mensaje
Cuando tenga un poco de tiempo lo checo para ver si es lo mismo o que diferencia hay, si la hay entre esos.
La principal diferencia se notará cuando se escriba en la pantalla LCDOut $FE,$80,#123 y después se escriba LCDOut $FE,$80, #5
Entonces el 5 quedará en el lugar del 1 y la lectura se confundirá.
En cambio con Dec3 1 se enviará el número 1 con dos ceros a la izquierda: 001

De esta forma ya no se mezclarán los números enviados y se mostrará un resultado coherente.
04/02/2015 #2858


D@rkbytes dijo: Ver Mensaje
jesusmolo ya puso el código que hizo, pero ha comentado que no le funciona.

Al usar los operadores que propones, lo que se obtendrá será un número y no una letra.

Lo que jesusmolo quiere hacer es algo muy sencillo.
Si tomamos como base la Tabla ASCII, veremos que la letra A mayúscula equivale al número 65 y así sucesivamente hasta la Z que equivale al código ASCII 90.

Entonces mostrar cada letra en orden de abajo hacia arriba y viceversa, sería muy sencillo:
Código PHP:
Letra       Var Byte

    LCDOut $FE
,1,"   Abecedario"
    
    
Letra 65

Programa
:
    If 
PORTB.2 0 Then
        Letra 
Letra 1
        
If Letra >90 Then Letra 90
    
EndIf
    
    If 
PORTB.3 0 Then
        Letra 
Letra 1
        
If Letra <65 Then Letra 65
    
EndIf
        
    
LCDOut $FE,$C0,"Letra: ",Letra
    Pause 250
    
    
GoTo    Programa


    End 
Así de fácil.



Muy buenos dias. muchas gracias D@rkbytes, era exactamente lo que buscaba, gracias por aclarar esta duda y recordar lo referente al codigo ASCII.
07/02/2015 #2859


¡Hola a todos!
Ya que están con los LCD, quiero hacer una consulta.
Hace un par de meses, construí un pequeño módulo para un LCD 16x2 usando un PIC16F628 que tenía un par de puertos dañados, y pensé que sería útil controlarlo con un solo pin.

Me explico: por ejemplo, usar un 12F629 para alguna aplicación y enviar por medio de un solo pin las instrucciones a otro PIC que se encarga exclusivamente de manejar el LCD.

Adjunto el diagrama de mi circuito.
Lo programé (puse pines para ICSP), y solito tal cual está funciona a las mil maravillas.
Mi problema es que cuando envío una palabra (por ejemplo "hola" ) solo muestra un caracter.
Uso la instrucción SerIn/SerOut de PICBASIC PRO.

Este es el código que uso. Sólo módulo.
Código:
cmcon=7

TRISA=%00000100
TRISB=%00000000

DEFINE LCD_DREG PORTB                             ' Set LCD Data port
DEFINE LCD_DBIT 0                                     ' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_RSREG PORTA                           ' Set LCD Register Select port
DEFINE LCD_RSBIT 4                                   ' Set LCD Register Select bit
DEFINE LCD_EREG PORTA                             ' Set LCD Enable port
DEFINE LCD_EBIT 3                                     ' Set LCD Enable bit
DEFINE LCD_BITS 8                                     ' Set LCD bus size (4 or 8 bits)
'DEFINE LCD_LINES 2                                   ' Set number of lines on LCD
'DEFINE LCD_COMMANDUS 1500                    ' Set command delay time in us
'DEFINE LCD_DATAUS 44                              ' Set data delay time in us

pause 200                                                  'LCD intializing pause

inicio:

lcdout $FE, 1, "Hola"      
lcdout $FE, $C0, "YO SOY GROOT"    
pause 1000

goto inicio
end
Módulo con otro PIC:
Código:
INCLUDE "modedefs.bas"

cmcon=7

TRISA=%00000100
TRISB=%00000000

DEFINE LCD_DREG PORTB                             ' Set LCD Data port
DEFINE LCD_DBIT 0                                     ' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_RSREG PORTA                           ' Set LCD Register Select port
DEFINE LCD_RSBIT 4                                   ' Set LCD Register Select bit
DEFINE LCD_EREG PORTA                             ' Set LCD Enable port
DEFINE LCD_EBIT 3                                     ' Set LCD Enable bit
DEFINE LCD_BITS 8                                     ' Set LCD bus size (4 or 8 bits)
'DEFINE LCD_LINES 2                                   ' Set number of lines on LCD
'DEFINE LCD_COMMANDUS 1500                    ' Set command delay time in us
'DEFINE LCD_DATAUS 44                              ' Set data delay time in us

datos var word

pause 200                                                  'LCD intializing pause

inicio:

serin porta.2, N2400, datos

lcdout $FE, 1, "Hola"      
lcdout $FE, $C0, "YO SOY GROOT"   
pause 1000

lcdout $FE, 1, "palabra"
lcdout $FE, $C0, datos
pause 1000

goto inicio
end
Imágenes Adjuntas
Tipo de Archivo: jpg Modulo LCD by EOTH.jpg (77,5 KB (Kilobytes), 24 visitas)
07/02/2015 #2860
Moderador

Avatar de D@rkbytes

eoth dijo: Ver Mensaje
Hace un par de meses, construí un pequeño módulo para un LCD 16x2 usando un PIC16F628 que tenía un par de puertos dañados, y pensé que sería útil controlarlo con un solo pin.

Me explico: por ejemplo, usar un 12F629 para alguna aplicación y enviar por medio de un solo pin las instrucciones a otro PIC que se encarga exclusivamente de manejar el LCD.
Mira por aquí: 16F628A LCD One Wire con 74HC595
Esto viene del tema: Temporizador para insoladora con 16F628A

Ese programa lo podrás migrar sin ningún problema para que funcione con un PIC12F629.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.