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

Temas similares

24/09/2015 #1


No me funciona PIC16F873A
Buen día. He tenido un problema con mi PIC16F873A.

Desarrollé un programa muy simple en MPLAB y a la hora de simularlo en proteus funciona perfectamente.
Cuando lo grabo lo hace perfectamente, pero en protoboard no funciona.

Las tensiones que llegan a VDD y MCLR son perfectas, pero las salidas están constantemente apagadas.

Probé con otro PIC completamente igual para probar que el mío no esté quemado y el problema persiste.
De hardware creo que no hay problema. Me queda que tenga un problema de software.

Lo adjunto a continuación.

Desde ya, muchísimas gracias.
Código PHP:
org 0x000 processor reset vector
movlw 
b'00010000'
movwf porta
clrf portb
clrf portc
bsf status
,5
movlw 
b'00000000'
movwf trisa
movlw 
b'00000000'
movwf trisb
movlw 
b'00000000'
movwf trisc
movlw 
b'00000110'
movwf adcon1
bcf status
,5

;***** arranco el programa *****
again movlw b'11111111'
movwf porta
call timer
clrf porta
movlw 
b'11111111'
movwf portb
call timer
clrf portb
movlw 
b'11111111'
movwf portc
call timer
clrf portc
goto again 

timer
movlw h
'30' seteo de prescaler a 8
movwf t1con
bcf pir1
,0
movlw h
'dc' ;valor a usar
movwf tmr1l 
movlw h
'0b' ;valor a usar
movwf tmr1h
bsf t1con
,0
otra 
btfss pir1
,0
goto otra
bcf t1con
,0
bcf pir1
,
return 

end directive 'end of program' 
24/09/2015 #2


nachonb dijo: Ver Mensaje
Buen dia! He tenido un problema con mi pic 16f873a

desarrolle un programa muy simple en mplab. A la hora de simularlo en proteus funciona perfectamente! Cuando lo grabo lo hace perfectamente! Pero en proto no funciona.

Las tensiones que llegan a vdd y mrcl son perfectas! Pero las salidas estan constantemente apagadas!

Probe con otro pic completamente igual para probar que el mio no este quemado y el problema persiste... De hardware creo que no hay problema. Me queda que tenga un problema de software.!

Lo adjunto a continuacion.

Desde ya, muchisimas gracias.


org 0x000 ; processor reset vector
movlw b\\\'00010000\\\'
movwf porta
clrf portb
clrf portc
bsf status,5
movlw b\\\'00000000\\\'
movwf trisa
movlw b\\\'00000000\\\'
movwf trisb
movlw b\\\'00000000\\\'
movwf trisc
movlw b\\\'00000110\\\'
movwf adcon1
bcf status,5

;***** arranco el programa *****
again movlw b\\\'11111111\\\'
movwf porta
call timer
clrf porta
movlw b\\\'11111111\\\'
movwf portb
call timer
clrf portb
movlw b\\\'11111111\\\'
movwf portc
call timer
clrf portc
goto again

timer
movlw h\\\'30\\\' ; seteo de prescaler a 8
movwf t1con
bcf pir1,0
movlw h\\\'dc\\\' ;valor a usar
movwf tmr1l
movlw h\\\'0b\\\' ;valor a usar
movwf tmr1h
bsf t1con,0
otra
btfss pir1,0
goto otra
bcf t1con,0
bcf pir1,0
return

end ; directive \\\'end of program\\\' ...

Las \\\ no están escritas en el programa, fue un error de tipeo cuando desarrolle la pregunta.
Hola...¿configuraste los fusibles del micro-controlador al compilar o grabar informándole el tipo de oscilador que usas, la frecuencia del mismo, etc? Pregunto por que ni lo mencionas, ni esta en el programa que adjuntaste. El simulador pone por defecto cierta configuración.
Saludos.

Ric.
24/09/2015 #3


list p=16f873A ; list directive to define processor
#include <p16f873A.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _RC_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF


esto es lo que antecede al programa... Sin dudas que no he declardo el tipo de oscilador y la f. Es un Crystal de 4MHz... Como debería quedar mi programa..? desde ya muchisimas gracias!

Saludos!
24/09/2015 #4
Moderador

Avatar de D@rkbytes

Esa configuración es para usar un oscilador RC y necesitas usar oscilador a cristal.

También tienes mal la configuración de ADCON1 para que los pines análogos sean digital I/O

Prueba de esta manera con los cambios que realicé a tu programa y ya debe funcionar físicamente:
Código PHP:
    list     p=16f873a
    
include    p16f873a.inc
    
    __config    _XT_OSC 
_PWRTE_ON _WDTE_OFF _LVP_OFF
    

    org 0x000 
processor reset vector

    movlw    
b'00010000'
    
movwf    PORTA
    clrf    PORTB
    clrf    PORTC
    bsf        STATUS
,RP0
    movlw    
b'00000000'
    
movwf    TRISA
    movlw    
b'00000000'
    
movwf    TRISB
    movlw    
b'00000000'
    
movwf    TRISC
    movlw    
b'00000111'
    
movwf    ADCON1
    bcf        STATUS
,RP0

;***** arranco el programa *****
again
    movlw    
b'11111111'
    
movwf    PORTA
    call    timer
    clrf    PORTA
    movlw    
b'11111111'
    
movwf    PORTB
    call    timer
    clrf    PORTB
    movlw    
b'11111111'
    
movwf    PORTC
    call    timer
    clrf    PORTC
    
goto    again 

timer
    movlw    h
'30' seteo de prescaler a 8
    movwf    T1CON
    bcf        PIR1
,0
    movlw    h
'dc' ;valor a usar
    movwf    TMR1L
    movlw    h
'0b' ;valor a usar
    movwf    TMR1H
    bsf        T1CON
,0
otra 
    btfss    PIR1
,0
    
goto    otra
    bcf        T1CON
,0
    bcf        PIR1
,
    
return 

    
end directive 'end of program' 
Respuesta
¿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 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.