Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
20/10/2012 #2281


cesarim dijo: Ver Mensaje
Amigo ricbevi te agrdesco mucho tu ayuda me descargue otro microcode studio y me funciona de maravillas tu codigo ya no me bota error en esos dos comandos muchas gracias estoy estudiando tu codigo para poder entender su losgica como tu me dices gracias por corregirme y enseñarme
Si el problema era el Repeat...Until( aunque este esta soportado desde hace rato) acá te paso sin el pero haciendo exactamente lo mismo...los comando mas complejos solo se resuelven con comando mas "básicos" y algunas lineas de código mas.

Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 19/10/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16f628A, INTRC_OSC_NOCLKOUT 'Reloj interno solo.-
@ DEVICE pic16f628A, WDT_OFF ' Watchdog Timer desconectado.-
@ DEVICE pic16f628A, PWRT_ON ' Power-On Timer conectado.-
@ DEVICE pic16f628A, BOD_ON ' Brown-Out Detect conectado.-
@ DEVICE pic16f628A, MCLR_ON ' Master Clear Externo conectado;desconectado.-
@ DEVICE pic16f628A, LVP_OFF ' Low-Voltage Programming desconectado.-
@ DEVICE pic16f628A, CPD_OFF ' Data Memory Code Protect desconectado.-
cmcon=7
DEFINE OSC 4            
TRISB = $FC
TRISA = $FF
PORTB = 0
PORTA = 0
I var byte

Foco0 var PORTB.0
Boton0 var PORTA.0

Main:    ' Principal
         if boton0 then
Espera:  ' Anti-revote  sin repeat ... until 
            i = i + 1
            pause 10
            if i  = 255 then i = 254 ' limito por si tiende a desbordarse el acumulador i
            if boton0 then goto Espera ' si sigue apretado boton0 voy a Espera
            if i =< 20 then  ' 200ms 
            goto Time1
            else
            goto Time0
            endif
        endif
        pause 10
  
goto Main

'---------------------
Time0:
      i = 0
      toggle foco0
      pause 10
goto main
'----------------------
Time1:
     
      for i = 1 to 6
      high foco0
      pause 50
      low foco0
      pause 50
      next i
      i = 0
goto main
END
Ric.
22/10/2012 #2282

Avatar de Nano24

La verdad tengo una duda tambien e empezado a programar PIC para el control de servos y no entiendo por que no me funciona, gira a un lado el servo y no regresa, se queda pegado, y eso que me guio con el ejemplo que aparece en este video:

El microservo que tengo es:http://www.todomodel.es/img/p/413-1437-large.jpg

Según leí en una información dice que tiene un angulo de rotación de 180 grados, pero no comprendo pues al usar un ciclo FOR le digo:
Código:
DEFINE OSC 4
TRISC = 0
PORTC = 0
X VAR BYTE

INICIO:
FOR X = 50 TO 150 STEP 1
PULSOUT PORTC.0,X
PAUSE 10
NEXT

FOR X = 150 TO 50 STEP -1
PULSOUT PORTC.0,X
PAUSE 10
NEXT
GOTO INICIO
END
Con esto el servo debería de girar de lado y lado, pero no lo hace.

---------- Actualizado después de 6 minutos ----------

Ya solucione el problema, lo he modificado en donde dice: medida = ((medida*10)/58) con esa formula quedo mas preciso a cortas distancias.
Código:
define OSC 4
TRISB = 0
TRISC = %00000010
DISPARO VAR PORTC.0         'PIN USADO PARA EL PULSO DE DISPARO
ECO VAR PORTC.1             'PIN USADO PARA EL ECO
MEDIDA VAR Word             'VARIABLE de 16 bits PARA ALMACENAR LA MEDIDA
Define   LCD_DREG   PORTB  'bit de datos del LCD empezando
Define   LCD_DBIT   4      'por B.0 ,B.1, B.2 y B.3
Define   LCD_RSREG  PORTB  'bit de registro del LCD conectar
Define   LCD_RSBIT  3      'en el puerto B.5
Define   LCD_EREG   PORTB  'bit de Enable conectar en el
Define   LCD_EBIT   2      '"puerto B.4 
PAUSE 500
LCDOUT $FE,1
;*******************************************************************************
PROCESO:
pause 40
disparo = 0          'Inicializa el valor de DISPARO
PulsOut DISPARO,10    'Manda un pùlso de disparo para empezar a medir
GoSub LEER_ECO       'Llamada a funcion para leer el ancho del eco recibido
GoTo proceso         'Vuelve e iniciar cuando se ha leido el eco
;*******************************************************************************
LEER_ECO:  
Select Case eco                 'si hay eco no manda pulso de disparo
;******************************************************************************
Case 1                      'Si no nay eco
GoTo LEER_ECO          'Vuelve a iniciar el proceso 
;******************************************************************************
Case 0                      'Si hay eco                 'Funcion de leer el eco
PulsIn ECO,1,MEDIDA          'Lee el acho del pulso de eco y lo guarda en medida
medida = ((medida*10)/58)                           'para convertir en cm
Lcdout $fe, 1, "DISTANCIA:", #medida, " cm" 'Muestra el valor medido en el LCD
;******************************************************************************
If medida <10 Then 
lcdout $FE, $C0                                              
Lcdout "Cuidado"                            'Aviso
EndIf
;******************************************************************************
GoTo proceso            'Vuelve a lanzar el proceso
 End Select
End
22/10/2012 #2283


Nano24...si quieres hacer un programa para controlar algo( y no que ese algo te controle ) primero debes informarte acerca del funcionamiento de dicho dispositivo y después con todo los datos hacer el programa para controlarlo.
Ese programa esta echo para ese servo pero como imaginaras cada uno de los fabricantes utiliza distintos parámetros según le convenga.
Los servos no trabajan con la misma frecuencia de PWM y no tienen todos el mismo ancho de pulso mínimo/máximo así que empieza por averiguar todo los datos del servo que tienes y después trata de hacer el programa una vez que comprendas como funcionan.
Saludos.

Ric.
22/10/2012 #2284

Avatar de Nano24

ricbevi dijo: Ver Mensaje
Nano24...si quieres hacer un programa para controlar algo( y no que ese algo te controle ) primero debes informarte acerca del funcionamiento de dicho dispositivo y después con todo los datos hacer el programa para controlarlo.
Ese programa esta echo para ese servo pero como imaginaras cada uno de los fabricantes utiliza distintos parámetros según le convenga.
Los servos no trabajan con la misma frecuencia de PWM y no tienen todos el mismo ancho de pulso mínimo/máximo así que empieza por averiguar todo los datos del servo que tienes y después trata de hacer el programa una vez que comprendas como funcionan.
Saludos.

Ric.
Muchas gracias por tu respuesta y por tu consejo, he estado tratando de buscar datos referentes a este servo pero solo consigo cosas basicas como el voltaje maximo y minimo que trabaja, el torque y angulo de rotacion pero no me dicen mas nada, solo dice aungulo de 180 grados:

Towerpro SG90 9G Micro Servo

Features: Coreless Motor, All Nylon Gears, Connector Wire Length 150mm, Universal plug for just about ALL radio systems!

SG90 Specs:

* Dimensions: 22 X 11.5 X 22mm
* Operating Speed (4.8V no load): 0.12sec/60 degrees
* Stall Torque (4.8V): 17.5oz/in (1 kg/cm)
* Temperature Range: -30 to +60
* Degree CDead Band Width: 7usec
* Operating Voltage: 3.0-7.2 Volts
* Each servo comes with 3 different servo horns and fittings as seen.


Please Note: 6 volts really does mean 6 volts not 7+ as is likely with 5 fully charged 2nd generation NMH cells
23/10/2012 #2285


D@rkbytes una pregunta en la funcion button la penultima variable que se coloca es ACTION, esta variable para que funciona cuando esa variable se pone a uno y cuando esa variable se pone a cero
23/10/2012 #2286
Moderador

Avatar de D@rkbytes

Alever89 dijo: Ver Mensaje
D@rkbytes una pregunta en la funcion button la penultima variable que se coloca es ACTION, esta variable para que funciona cuando esa variable se pone a uno y cuando esa variable se pone a cero
Esta es la descripción de la instrucción BUTTON

BUTTON , Pin , Down , Delay , Rate , Bvar , Action , Label

Lee Pin y opcionalmente ejecuta anti rebote y auto repetición.
Pin automáticamente se toma como entrada.
Pin debe ser una constante, 0 - 15, ó una variable que contenga un número 0 - 15 (P.Ej. B0)
ó un número de pin (P.Ej. PORTA.0)

Down
Estado del pin cuando se oprime el pulsador (0-1)
Delay
Contador de ciclos antes de que comience la auto-repetición (0...255).
Si es 0, no se efectúa anti rebote ni auto repetición.
Si es 255 se eliminan rebotes, pero no auto repetición.
Rate
Valor de auto repetición (0...255)
Bvar
Variable con tamaño de byte usada internamente para conteo de demoras y repeticiones.
Debe ser inicializada a 0 antes de ser usada, y no ser usada en cualquier lugar del programa.
Action
Estado del pulsador al ser actuado.
Label
La ejecución comienza en esta etiqueta si es cierto Action

Notas:
Esta documentación se encuentra en el manual de PICBasic Pro en español.
Y también se obtiene presionando la tecla F1 cuando se pone el cursor sobre alguna instrucción.

Saludos.
23/10/2012 #2287


el action se debe poner a cero, si es que mi circuito va a realizar una acción cuando mi pulsador lo mando a cero
Y debe ponerse uno, si es que mi circuito va a realizar una acción cuando mi pulsador lo mando a 5v
¿así es como debo poner el action o estoy equivocado?
24/10/2012 #2288


Hola a todos, es mi primera pregunta en este foro que sigo hace algún tiempo y me parece fenomenal por los aportes que hacen ustedes, desde ya muchas gracias, mi pregunta es la siguiente, como o que tengo que hacer pera que el siguiente proyecto que es muy básico después de hacer su su salto a la correspondiente función y mediante una pulsación en gpio.3 mas larga se apague el led.

Nota: soy muy novato
Código:
define osc 4
 @ DEVICE  PIC12F629,INTRC_OSC_NOCLKOUT'' si usas el oscilador interno.
 @ DEVICE pwrt_off,bod_on,protect_off,cpd_off,mclr_off

 cmcon = 7

 trisio = %00001000  'gpio.3 entrada,0,1,2,4,5 son salidas
 gpio = %00000000
 cnt var byte
 boton var gpio.3  ;pulsador pin 4 gpio.3
 led var gpio.0    ;led pin 7 gpio.0
 cnt =0
 
chequeo: if boton = 0 then tick          
         goto chequeo 
                  
                        
tick:    pause 100 

         cnt = cnt + 1                                             
         if cnt =1 then luz1       
         if cnt =2 then luz2       
         if cnt =3 then luz3
         if cnt =4 then led_on         
         if cnt =>5 then led_off
        
luz1:    pwm led,25,100                                                                      
         if boton =0 then tick                                 
         goto luz1

Aqui por ejemplo: si presiono el pulsador por mas tiempo digamos (x) que se apague el led y si hago solamente un toke que siga saltando a su rutina. Y asi con las demas funciones.  
                                                    
luz2:    pwm led,50,100                                                            
         if boton =0 then tick                           
         goto luz2 
                                             
luz3:    pwm led,75,100                                         
         if boton =0 then tick                           
         goto luz3
         
led_on:  HIGH LED
         pause 200               
         if boton =0 then tick  
         goto led_on         
                           
led_off:  low led                              
          pause 250                   
          cnt =0               
          goto chequeo                    
          end
Muchas gracias
24/10/2012 #2289


Una consulta D@rkbytes. Lo único que no entiendo de la función button es la parte de action, no-se cuando action se le debe poner uno o cuando a action se le debe poner cero.
Agradecería mucho tu respuesta.
25/10/2012 #2290


Saludos a todos,

Estoy diseñando una interface para una cnc casera versión Esteca55 pero utilizando un pic16f628 para evitar recalentamientos de los motores, el caso es que no he podido hacer funcionar la interrupción básica por el puerto b (b4-b7), francamente no sé cuál es el detalle, yo les agradecería mucho si pudieran echarme una mano con dicha interrupción.

Sé que hay que configurar el Intcon.3 y borrar la bandera Intcon.0 pero no sé que mas hacer.
Código:
' Programa en Pic Basic Pro
Define Osc 4 ' Define el Oscilador para un Cristal
' de 4 Mhz.
TRISA = %00000000 ' Configura el puerto A como salida.
TRISB = %11110000 ' Configura los 4 bits más significativos como
' entrada.
I VAR Byte ' Declaración de la variable "I" tipo Byte
Symbol LED1 = PORTA.0 ' Alias para el pin RA0
Symbol LED2 = PORTA.1 ' Alias para el pin RA1
On Interrupt GoTo Interrup ' Define el vector de interrupción
INTCON = %10001000 ' habilita la interrupción RB4-RB7
Inicio:
LED1 = 1 ' Enciende el Led 1
Pause 1000 ' Pausa de 1 segundo
LED1 = 0 ' Apaga el Led 1
Pause 1000 ' Pausa de 1 segundo
GoTo Inicio ' Salta a la etiqueta "Inicio"
Interrup:
Disable
For I = 1 To 6
LED2 = 1 ' Enciende el Led 2
Pause 1000 ' Pausa de 1 segundo
LED2 = 0 ' Apaga el Led 2
Pause 1000 ' Pausa de 1 segundo
Next I
INTCON = %10001000 ' habilita las interrupciones (GIE=1)
' habilita la interrupción RB4-RB7 (RBIE=1)
' Inicializa la interrupción (RBIF=0)
Resume
Enable
End
25/10/2012 #2291


DEPREDADORX1 dijo: Ver Mensaje
Saludos a todos,

Estoy diseñando una interface para una cnc casera versión Esteca55 pero utilizando un pic16f628 para evitar recalentamientos de los motores, el caso es que no he podido hacer funcionar la interrupción básica por el puerto b (b4-b7), francamente no sé cuál es el detalle, yo les agradecería mucho si pudieran echarme una mano con dicha interrupción.

Sé que hay que configurar el Intcon.3 y borrar la bandera Intcon.0 pero no sé que mas hacer.
Código:
' Programa en Pic Basic Pro
Define Osc 4 ' Define el Oscilador para un Cristal
' de 4 Mhz.
TRISA = %00000000 ' Configura el puerto A como salida.
TRISB = %11110000 ' Configura los 4 bits más significativos como
' entrada.
I VAR Byte ' Declaración de la variable "I" tipo Byte
Symbol LED1 = PORTA.0 ' Alias para el pin RA0
Symbol LED2 = PORTA.1 ' Alias para el pin RA1
On Interrupt GoTo Interrup ' Define el vector de interrupción
INTCON = %10001000 ' habilita la interrupción RB4-RB7
Inicio:
LED1 = 1 ' Enciende el Led 1
Pause 1000 ' Pausa de 1 segundo
LED1 = 0 ' Apaga el Led 1
Pause 1000 ' Pausa de 1 segundo
GoTo Inicio ' Salta a la etiqueta "Inicio"
Interrup:
Disable
For I = 1 To 6
LED2 = 1 ' Enciende el Led 2
Pause 1000 ' Pausa de 1 segundo
LED2 = 0 ' Apaga el Led 2
Pause 1000 ' Pausa de 1 segundo
Next I
INTCON = %10001000 ' habilita las interrupciones (GIE=1)
' habilita la interrupción RB4-RB7 (RBIE=1)
' Inicializa la interrupción (RBIF=0)
Resume
Enable
End
Hola...Prueba así a ver si te funciona bien como a mi solo tuve que achicar los tiempos de encendido/apagado de el led2 y colocar las definiciones en la cabecera.
Código:
' Programa en Pic Basic Pro
            Device = 16F628A   ' micro usado
        All_Digital= true  ' todas las entradas son digitales
    Config INTRC_OSC_NOCLKOUT, WDT_ON, LVP_OFF, BODEN_OFF, CP_ON, CPD_OFF, PWRTE_OFF, MCLRE_OFF
     Declare Xtal = 4  ' Define el Oscilador para un Cristal de 4 Mhz.
TRISA = %00000000 ' Configura el puerto A como salida.
TRISB = %11110000 ' Configura los 4 bits más significativos como
' entrada.
I VAR Byte ' Declaración de la variable "I" tipo Byte
Symbol LED1 = PORTA.0 ' Alias para el pin RA0
Symbol LED2 = PORTA.1 ' Alias para el pin RA1
PORTB=0 ' limpio puerto B
On Interrupt GoTo Interrup ' Define el vector de interrupción
INTCON = %10001000 ' habilita la interrupción RB4-RB7
Inicio:
LED1 = 1 ' Enciende el Led 1
DelayMS 1000 ' Pausa de 1 segundo
LED1 = 0 ' Apaga el Led 1
DelayMS 1000 ' Pausa de 1 segundo
GoTo Inicio ' Salta a la etiqueta "Inicio"
Interrup:
Disable
For I = 1 To 6
LED2 = 1 ' Enciende el Led 2
DelayMS 100'0 ' Pausa de 100 Mili segundo
LED2 = 0 ' Apaga el Led 2
DelayMS 100 '0 Pausa de 100 Mili segundo
Next I

INTCON = %10001000 ' habilita las interrupciones (GIE=1)
' habilita la interrupción RB4-RB7 (RBIE=1)
' Inicializa la interrupción (RBIF=0)
Resume
Enable
End
Saludos.

Ric.
25/10/2012 #2292
Moderador

Avatar de D@rkbytes

Alever89 dijo: Ver Mensaje
Una consulta D@rkbytes. Lo único que no entiendo de la función button es la parte de action, no-se cuando action se le debe poner uno o cuando a action se le debe poner cero.
Agradecería mucho tu respuesta.
Saludos.
Action toma el siguiente valor cuando es presionado el pulsador...
0 si no se presiona, 1 cuando se presiona.
Así que todo depende de que valor quieres que tome el pulsador cuando es presionado.
Por lo regular Action conviene ponerlo en 0, ya que 0 es considerado como OFF en los Push Buttons N/A

Para que tengas más conocimiento de como actúa Action al presionar el pulsador,
crea algún proyecto sencillo con un LED y juega con el valor de Action para que veas el resultado.

Suerte.
25/10/2012 #2293


Hola ricbevi,

Gracias por responder, pues realmente no sé que pueda estar pasándome, compilo y sigo teniendo problemas, parpadea el led para el ciclo normal y el de la interrupción igual una vez se ha activado. Adjunto la simulación pues este pequeño detalle me tiene dudando de mi lucidez mental je,je,je... a ver si, en definitiva, logro encausar mi proyecto. Lo probé con Proton y también presenta el error...
Archivos Adjuntos
Tipo de Archivo: rar interrupciones.rar (41,0 KB (Kilobytes), 81 visitas)
25/10/2012 #2294
Moderador

Avatar de D@rkbytes

ricbevi dijo: Ver Mensaje
solo tuve que achicar los tiempos de encendido/apagado de el led2 y colocar las definiciones en la cabecera.
Hola ricbevi.
Solo como comentario...
La palabra de configuración que colocaste en el código es para Proton, no para PICBasic Pro.
Y si el amigo DEPREDADORX1 compila con MicroCode Studio le va a producir errores.
Hay que cambiar la palabra de configuración con la sintaxis para MCS.
Algo así como esto...
Código:
@ DEVICE PIC16F628A    ; Microcontrolador utilizado
; Palabra de configuración
@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,CPD_OFF,WDT_OFF,MCLR_ON,PWRT_ON,BOD_OFF,LVP_OFF
Y tener en consideración si se requiere tener activo el WDT que en tu configuración esta activo.

Saludos.
25/10/2012 #2295


Gracias tambien a D@rkbytes por la aclaración, igual lo probé en Proton y funciona mal, espero de verdad encontrarle cuál es la falla, es muy curioso porque el código es estraído fielmente de algunos textos. Hasta ahora, buscando y buscando, no he podido encontrar un ejemplo funcional, ni siquiera el foro de Proton o pic basic, quizás algo relacionado con los teclados keypad, pero son ejemplos extensos que solo me han confundido más. Agradezco cuaquier otro comentario al que puedan hacer al respecto.
25/10/2012 #2296


D@rkbytes dijo: Ver Mensaje
Hola ricbevi.
Solo como comentario...
La palabra de configuración que colocaste en el código es para Proton, no para PICBasic Pro.
Y si el amigo DEPREDADORX1 compila con MicroCode Studio le va a producir errores.
Hay que cambiar la palabra de configuración con la sintaxis para MCS.
Algo así como esto...
Código:
@ DEVICE PIC16F628A    ; Microcontrolador utilizado
; Palabra de configuración
@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,CPD_OFF,WDT_OFF,MCLR_ON,PWRT_ON,BOD_OFF,LVP_OFF
Y tener en consideración si se requiere tener activo el WDT que en tu configuración esta activo.

Saludos.
Si efectivamente esta en el formato del Proton las disculpas del caso y también entendido al WDT activado que posiblemente por eso parecía que funcionaba ....se me chispotio Saludos.
Ric.
26/10/2012 #2297


Hola foreros,

Al parecer no siempre las cosas son como parecen, uno se guía por un texto porque cree que está bien y sucede que no. Checando el foro de los amigos de todopic encontré una posible respuesta al error de la interrupción por el puerto b, aquí lo que encontré:

primero: leer o escribir el puertoB;
Hacer PORTB = PORTB puede servir.

Luego, limpiar el flag correspondiente.

al salir y reactivar INTCON,GIE deberias poder salir de la interr, excepto los valores de las entradas en RB4-RB7 hayan vuelto a cambiar durante ese período de tiempo.

Al parecer le funcionó esto:
dim button_pressed as byte
dim tempbyte as byte

sub procedure interrupt

'Lo que quieras poner para que se ejecute la interrupcion ej: IF portb.7 = 1 then......
tempbyte = PORTB ' Lee el PORTB en una variable de bytes para eliminar condición desajuste
INTCON.RBIE = 0 ' Desavilita otras interrupciones
INTCON.RBIF = 0 ' Apaga la bandera de interrupción "Turn off the interrupt flag"
button_pressed = true
end sub

main
SetBit(INTCON,GIE) ' habilita interrupciones globales.
"tu programa"
INTCON.RBIE = 1
26/10/2012 #2298


gracias D@rkbytes ya lo probe y al fin pude entenderlo
26/10/2012 #2299


hola como declaras que pic vas a usar, lo pongo como esta en los tutoriales y da error

---------- Actualizado después de 35 minutos ----------

este programa me anda en la simulacion(en proteus 7.9) pero en la practica no me funciona


Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 24/10/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

DEFINE OSC 4 
portb=0
n var byte
p1 var porta.0
p2 var porta.1
ldr var porta.4
ldr1 var porta.4
led var portb.4
led1 var portb.5
buzzer var portb.6
servo var portb.0


inicio:
if p1=1 then encender
PAUSE 200
if p2=1 then apagar
PAUSE 200
if ldr=1 then encender2
pause 200
if ldr1=0 then apagar2
goto inicio

encender:
for n=1 to 10 step 1
pulsout portb.0,175
pause 10
low portb.5
high portb.4
high portb.6
next
if p2=1 then apagar
goto encender

apagar:
for n=1 to 10 step 1
pulsout portb.0,150
pause 10
next
low portb.4
high portb.5
low portb.6
goto inicio

encender2:
for n=1 to 10 step 1
pulsout portb.0,175
pause 10
next
low portb.5
high portb.4
high portb.6
goto inicio

apagar2:
for n=1 to 10 step 1
pulsout portb.0,150
pause 10
low portb.4
high portb.5
low portb.6
next

goto inicio



end
---------- Actualizado después de 23 minutos ----------

ricbevi dijo: Ver Mensaje
Si efectivamente esta en el formato del Proton las disculpas del caso y también entendido al WDT activado que posiblemente por eso parecía que funcionaba ....se me chispotio Saludos.
Ric.
no me funciona declarar el pic utilizado como lo pusiste
28/10/2012 #2300


Vangeluz dijo: Ver Mensaje
Disculpen a ver si alguien me podria ayudar ya que soy nuevo en lo que es PICs.
Encontré un código asm PIC 16f84A de un contador simple ascendente con un 7 segmentos y un pulsador, lo unico es que modifiqué es que tenga otro pulsador para conteo descendente, PERO !!!! cuando desciende a 0 se bloquéa a ver si alguien me puede decir que hice mal.

Físicamente configuré (RB0 a RB6 a,b,c,d,e,f,g Respectivamente del 7 Segmentos Cátodo común) RB7 1K a 0v y Pulsador a 5v
Luego agregué RA2 con el otro pulsador igual para descender y como les contaba, llega a 0 y se bloquéa, ( al ascender anda super pasa el 0 y vuelve a contar ) solo es al descender el problema, Desde yá muchas gracias .... ATTE. Victor Angel
Hola amigo lo que tu propones es mas sencillo hacerlo en pic basic.
Tengo lo que necesitas, te envió los archivos del programa y la simulación.

Amigo en el archivo esta lo que deseas espero que te sirva de ayuda.
¿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.