Autor Tema: SUMA CON SW NO FUNCIONA EN 16F84A  (Leído 2335 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado oicer_electronics

  • PIC10
  • *
  • Mensajes: 6
SUMA CON SW NO FUNCIONA EN 16F84A
« en: 13 de Noviembre de 2007, 00:37:16 »
hola mis colegas
este programa lo hice cuando estaba haciendo mi curso de microcontroladores en INFOTEP Republica Dominicana
y al principio estaba hecho para ke funcione kon el 16f84 y funciona perfectamente pero cuando kieor kambiarle el include para ke funcione kon el 16f84a no kiere funcionar y me kompila bine y todo pero cuando el pic esta corriendo en el entrenador no hace nada y no veo la razon por la cual no funciona
el codigo es este

list p=16f84A
include "p16f84A.inc"

portA  equ 0x05
trisA   equ 0x85
portB  equ 0x06
trisB   equ 0x86
status equ 0x03
suma  equ 0x35
pcl     equ 0x02
   
org 0

bsf status,RP0
clrf trisB
bcf status,RP0
clrf  portB
inicio movlw b'00000001'


 movf portA,w

addlw 0x01
movwf portB
goto inicio

tabla
   addwf pcl,f
   retlw 0x3f
   retlw 0x06
   retlw 0x5b
   retlw 0x4f
   retlw 0x66
   retlw 0x6d
   retlw 0x7d
   retlw 0x07
   retlw 0x7f
   retlw 0x67
   retlw 0X77   
   retlw 0X7C
   retlw 0X39
   retlw 0X5E
   retlw 0X79
   retlw 0X71
end

y haci tambien kon muchos otros programas ke hice para el 16f84 no kieren funcionar kon el 16f84A me pueden decir porke
gracias
¡¡¡Nestros Sueños Solo Los Podremos Lograr Si estamos Despiertos!!!
OICER ELECTRONICS S.A. (Rep. Dom)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: SUMA CON SW NO FUNCIONA EN 16F84A
« Respuesta #1 en: 13 de Noviembre de 2007, 12:16:12 »
Hola oicer_electronics, fíjate si este programa funciona, si es así verás que tiene varias reformas

Código: ASM
  1. LIST    P = 16F84A
  2.         INCLUDE <P16F84A.INC>
  3.  
  4. ;...........................................
  5.  
  6.         org     .0
  7.         bcf     STATUS,RP0
  8.         bcf     STATUS,RP1
  9.         goto    START
  10.  
  11.         org     .4
  12.         bcf     INTCON,GIE
  13.         return
  14.  
  15. ;...........................................
  16. TABLA
  17.         addwf   PCL,F
  18.         retlw   0x3f
  19.         retlw   0x06
  20.         retlw   0x5b
  21.         retlw   0x4f
  22.         retlw   0x66
  23.         retlw   0x6d
  24.         retlw   0x7d
  25.         retlw   0x07
  26.         retlw   0x7f
  27.         retlw   0x67
  28.         retlw   0X77  
  29.         retlw   0X7C
  30.         retlw   0X39
  31.         retlw   0X5E
  32.         retlw   0X79
  33.         retlw   0X71
  34.  
  35. ;...........................................
  36. START
  37.         clrf    PORTB
  38.         clrf    INTCON
  39.  
  40.         bsf     STATUS,RP0
  41.         movlw   B'11111111'
  42.         movwf   TRISA
  43.         clrf    TRISB
  44.         bcf     STATUS,RP0
  45.  
  46. INICIO
  47.         movf    PORTA,W
  48.         addlw   .1
  49.         call    TABLA
  50.         movwf   PORTB
  51.         goto    INICIO
  52.  
  53. ;...........................................
  54.         END

1)   En el vector de inicio solo selecciono el banco 0 y salto la la dirección de inicio START
2)   Veras que defino la dirección de la interrupción, la desactivo y retorno, (esto es por seguridad de funcionamiento)
3)   Las tablas (tal como te las enseñaron) deben ir en las primeras 256 direccines de memoria de programa, por lo que el
      programa principal va despues de estas
4)   Seteo los dos puertos y no solo uno, también por seguridad de funcionamiento
5)   En la rutina inicio sobrava una instrucción y faltaba la llamada a la tablacon el "call TABLA"

Espero te sea de ayuda, un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado picNIC

  • PIC16
  • ***
  • Mensajes: 140
Re: SUMA CON SW NO FUNCIONA EN 16F84A
« Respuesta #2 en: 13 de Noviembre de 2007, 12:24:52 »
Hola y bienvenido al foro…
Sin ánimos de ofender te sugiero que repases los apuntes del curso o que veas los hilos de este foro para comenzar, y si lo necesitas tengo varios apuntes que te puedo pasar.
Que es lo que intentas hacer con el programa? Porque o esta incompleto o tiene cosas de mas, como ser la tabla que no accedes a ella.
Tampoco no hace falta que declares los registros propios del PIC...

portA  equ 0x05
trisA   equ 0x85
portB  equ 0x06
trisB   equ 0x86
status equ 0x03

Estos ya están declarados en el archivo 16f84A.inc, no así el registro suma.

Buena suerte y estamos para ayudarnos… :-/ :-/ :-/

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: SUMA CON SW NO FUNCIONA EN 16F84A
« Respuesta #3 en: 13 de Noviembre de 2007, 18:48:26 »
INICIO
   movf   PORTA,W
   addlw   .1
   call   TABLA
   movwf   PORTB
   goto   INICIO

El addlw .1 está de mas. Eso produce que nunca se  pueda acceder al primer elemento de la tabla .
El PCL se incrementa igual, por lo que para acceder al primer elemento de esa tabla hace falta ingresar con W=0 y NO W=1.

Por otra parte, el codigo que expuso charly no contempla casos para los cuales el PORTA tenga valores mayores a 15. Por lo que tenes que forzar el pin RA4 a valer 0 siempre, caso contrario el programa tendra comportamientos indeseados.

Saludos

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.