microcontroladores

hola a todos, bueno tengo un problema!!!, tengo un grabador para el 16f84a de la familia de microchip bueno tengo un simple programa de rotazion que quiero que funcione en circuito montado, yo uso el progama icprog para grabar cargo el archivo hex y programo normal BUENO ESO DICE EL ICPROG "VERIFICACION CORRECTA" mi PROBLEMA es que al montarlo en el circuito no FUNCIONAAA solo se quedan prendidos todos los leds y no hace nada, no se en que me estoy equivocando por favor si alguien pudiera ayudarme...... gracias.... mauricio.......BOLIVIA
 
si estas seguro que tu programa en cuestión funciona, entonces podría ser en el icprog debes indicar la base de tiempo (oscilador reloj) que usas para tu pic
si es RC(resistencia capacitor) o XT(cristal)

y si estas bien otra podría ser que no se este cargando el programa como debería de ser , es decir, aveces porque a mi paso lo comento el programa no cargaba bien y aunque aparecía como verificación satisfactoria o correcta.
verifica entonces con el icprog la memoria del pic en read memory , y verifica en los messajes del programa que no exista error

pudiera aparecer un msj como Blank check ....Error. entonces el pic no esta bien.



suerT
 
gracias por responder!!!, bueno el programa que tengo es una simple rotazion de leds que quiero hacer la prueba, en el simulador del mplab funciona normal pero al poner montado en circuito no funciona se quedan prendidos todos los leds, PERO con un programa que hize meter un dato por el PA0 y lo muestre por el puerto PB0 funciona normal al montarlo en circuito estoy con este problema ya hace bastante tiempo....................... :cry:
 
:D :D
Hola..........., Que tal Colega, tambien soy de Bolivia y lo mejor estoy en la Paz,
Los pic 16f 84a supongo que has inicializado los puertos Como salidas, estas utilizano el crastal adecuado, y el programa corre de lo lindo, si todo esta ok (a menos que te haya faltado configurar algo), quisa el que esta mal es el pic...

te mando un programa que esta probado y simulado y funciona una marabilla.

Si tienes el PROTEUS, pudes verificar su funcionamiento antes de grabarlo al micro.

El programa es un contador bunario de 8 bits y las salidas son por el PORTB.
 

Adjuntos

  • ej_2_596.rar
    28.9 KB · Visitas: 41
gracias por las respuestas q las estoy tomando muy en cuenta!!!!
bueno tcuento qdescargue el archivo qmandaste el Ej_2 y cargue
el archivo HEX al pic y solamente parpadea el PB0, y lo simule con
el mplab y no esiste cambios en el PB en ninguna de sus salidas..... :( :(

ahora el programa de rotazion que tengo no es tan complejo y
en el simulador existen cambios en el PB y NO ENTIENDO que al
montarlo todos los leds se quedan prendidos

list P=16F84A
include<p16f84a.inc>
errorlevel -302
org 0x00
goto config
org 0x05
config
bsf STATUS,RP0
movlw b'00000000'
movwf TRISB
bcf STATUS,RP0
clrf PORTB
inicio
movlw b'0001001'
movwf PORTB
rotar
rlf PORTB,1
goto rotar
end

NO SE QUE ESTOY HACIENDO MAL PORFA help!!!
 
tambien tengo un programa contador q en simulador funciona bien
o estoy ensamblando el archivo HEX mal o hay algo en circuito mal

list P=16F84A
include<p16f84a.inc>
errorlevel -302
org 0x00
goto INICIALIZA
INICIALIZA
BSF STATUS,RP0
CLRF TRISB
BCF STATUS,RP0
CLRF PORTB
BUCLE
INCF PORTB,F
CALL delay
GOTO BUCLE
delay
MOVLW D'1'
MOVWF 20H
MOVLW D'1'
MOVWF 22H
RETAR
DECFSZ 20H,1
GOTO RETAR
DECFSZ 22H,1
GOTO RETAR
RETURN
END
:( :( :( :( :( :(
 
Esa etiqueta (config) no es necesaria, mplab la confundira con las opciones, debe ser :

Código:
 list P=16F84A
 	include <p16f84.inc>
	__config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
 errorlevel -302

 J	equ	H'4F'	; J = address hex 4F
 K	equ	H'4E'	; K = address hex 4E


 org 0x00
 bsf STATUS,RP0
 movlw b'00000000'
 movwf TRISB
 bcf STATUS,RP0
 clrf PORTB
inicio
 movlw b'0001001'
 movwf PORTB
rotar
 rlf PORTB,1
  movlw 255h
  goto retardo

 goto rotar


retardo:
       movlw  D'100' 
       movwf J
loop1
	movlw	D'255'		; w = 50 decimal
	movwf	K		; K = w
loop2:
	decfsz	K,f		; K = K - 1 , skip next if zero
	goto loop2
        decfsz	J,f		; J= J - 1 , skip next if zero
        goto loop1
	return
 end

MPLAB lo simulo bien, quiza tengas que camb iar los valores de J y K

pd : como dice pic-man, necesitas un retardo mayor para poder visualizar
 
hola que tal, Saludos desde Mexico D.F.
Tienen razon en que te falta un retardo, parece que el programa si rota pero lo hace tan rapido que no lo alcanzas a distinguir, agrega el retardo antes del salto a rotar y pruebalo, seguimos en contacto para ayudranos, espero que con eso te funcione.
 
y en el programa del contador , delay es muy pequeño, solo debe tardar como 10 ciclos, aumenta el valor de las variables que decrementas, utilizando un cristal de 4 MHZ debe ser un retardo como de 10 micros aprox. (no es exacto mi dato), checalo y publicas tu resultado.
 
Mauricio soy toño, de la EIS , acerca de tu programa le falta un pequeño retardito, entre tu rotacion de rlf, talvez simularolo en el MPLAB sea un tanto abstracto pero puedes hacer tu simulacion en el PROTEUS, le cargas tu punto hex y le puedes conectar leds, motores, osciloscopio, para ver mejor tus tiempos, es mucho mas practico, ademas que te los simula en tiempo real Por otro lado deberias cambiar tu chip PIC16f84A por un pic16f628A o un pic16f88 que tienen la misma ubicaion de las alimentacion, reset y puertos, pero com mayor memorio, no notaras es cambio solo hay que hacer una intrucion en la comfiguracion de puertos (CMCON=0x07) y ya esta, espero lo consideres.

Escribe para contar como te fue.
 
Hola a todos
Soy nuevo en este foro y quisiera saber si alguien me puede ayudar con un proyecto.
Quiero construir una bascula electronica con sensores de presion alguien me puede decir copmo mido el peso indirectamente conociendo la presion?
saludos
 
holas el foro esta muy bueno y ayuda a solucionar problemas que tenemos entre todos los que estamos en este mundo de la electronica........ :D :D .....bueno les cuento qrealize un programa para enviar datos por el PB para hacer funcionar un motor paso apaso usando retardos:
--------RETARDO QUE UTILIZE---------
retardo decfsz cont1
goto retardo
decfsz cont2 ;***
goto retardo
decfsz cont3 ;***
goto retardo
movlw 8
movwf cont3
return

end
-------------------------------
este es uno que lo baje en este foro gracias a SAINT..........

lo que hace mi programa es mandar datos por el PB y utilizar RETARDO con bucle para que me repita la secuencia y que creeeen me funcionooooooo :D :) :(

PERO les cuento que primero salia el dato binario 00110011 por el PB y despues de 50 segundos recien se cambiaba al otro dato y despues de 1 segundo salia el otro dato y luego de otro segundo salia el otro dato...........
OSEA cuando se le energizaba pasaba esto no se que pasa, pero cuando lo reseteo al programa funciona normal, el problema es cuando lo energizo alcircuito es donde tarda 50 seg.................................

pd.- viva la EIS (Bolivia)... :D :D
 
Aver mi estimado canedomauri que es lo que quieres hacer? explicamelo detalladamente yyaque por lo que veo estas haciendo corrimientos por PB con un retardo y creo que tu problema es con el bit de acarreo si me lo esxplicas bien te podre ayudar mejor y si me mndas tu correo de hotmal para estar en contacto con msn messenger mejor.
Saludos mi estimado
 
hola...
canedomauri, no te preocupes, la subrutina de terardo que utilisaste funciona asi por defecto, el problema es que cunado se inicia las variables cont1, cont2 y cont3, no tienen un valor definido (00h), si deseas un retardo que no tenga ese problema puedes utilizar este:
**********************************
Retardo movlw 02h ;**1
movwf 40h

movlw 02h ;**2
movwf 41h

movlw 0ffh ;**3
movwf 42h

movlw 0ffh ;**4
movwf 43h
seguir_0 decfsz 40h,1
goto seguir_1
goto salir
seguir_1 decfsz 41h,1
goto seguir_2
goto seguir_0
seguir_2 decfsz 42h,1
goto seguir_3
goto seguir_1
seguir_3 decfsz 43h,1
goto seguir_3
goto seguir_2
salir nop
return
*************************************
este es de apros 0.2s con un cristal de 4MHz, si decesas variar el tiempo de retardo, solo tienes que camviar los vaores que estan con los asteriscos (;**), en realidad si quieres un tiempo de retardo mayor aumenta los valores de (;**2)inicalmente, si quieres mas tiempo de retardo aumenta tecien el (;**1)......
Espero que estos aportes ayuden a tu camino por los microcontroladores...

PD: Soy de la Fac Tec. UMSA. LA PAZ BOLIVIA..........
 
hola amigos del foro...!, les cuento q sigo con el problema de los retardos!!!!!, quisiera entender un poco mas sobre cada linea de comando de los retardos....... gracias...............
 
Atrás
Arriba