Autor Tema: Me estoy volviendo loco, AYUDA!!!!!  (Leído 3109 veces)

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

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
Me estoy volviendo loco, AYUDA!!!!!
« en: 20 de Febrero de 2004, 14:17:00 »
Buenas a todos, estoy haciendo un proyecto que mas o menos es como un modem, la cuestión es que en el emisor tengo dos pic 16f876 los cuales tengo que comunicar via serie, pero bueno mi problema no es ese por ahora, si no que ya no se que poner en la cabecera del programa, osea en la configuración de los registros para que me haga caso a las instrucciones que le pongo pq hace lo que quiere, los goto se los salta y le da igual cuando le meto algo por los puertos para que haga una cosa u otra, en fin yo pensé que este pic iba a ser igual que el 16f84 el cual veo que es mucho mas estable que este, pero tuve que coger el 876 pq necesitaba mas patillas para poder controlar un teclado de 49 teclas y un display alfanumerico.

Aqui pongo el inicio de mi programa:

Mi programa consta de un teclado el cual tiene 49 teclas y le tengo por filas y columnas asi pues uno siete patillas del puerto B con las 7 filas y 7 patillas del puerto C con las 7 columnas, entonces al pulsar una tecla se activa una patilla de cada puerto detectando asi la tecla pulsada

list p=16f876
#include "p16f876.inc"

puertob         equ 0x30
puertoc         equ 0x31
puertoc2         equ 0x32
resultado         equ 0x40

org 0x10

bsf STATUS,RP0
movlw 0x00
movwf ADCON0
movlw 0x07      
movwf ADCON1
movlw 0x00      ;puerto A como salida
movwf TRISA   
movlw b"01111111"                 ;puerto B todos como entrada - el 7
movwf TRISB
movlw b"01111111"                 ;puerto C todos como entrada - el 7
movwf TRISC
movlw 0x07
movwf OPTION_REG
bcf STATUS,RP0

inicio
movlw 0x00
movwf PORTA
movwf puertob
movwf puertoc
movwf resultado
movwf numero_a_mandar

movf PORTB,0                  ;muevo lo de B a la variable
movwf puertob
movf PORTC,0                  ;muevo lo de C a la variable
movwf puertoc
movwf puertoc2
;esto lo hago para conseguir un numero para luego buscar en una
;tabla
swapf puertoc,1              
movf puertob,0
addwf puertoc,0
movwf resultado
;los datos que recojo en los dos puertos los sumo y almaceno el
;resultado en la variable resultado
movlw 0x00
xorwf resultado,0
;hago la xor entre resultado y W asi pues si es cero es que no he
;mandado nada a los puertos por lo tanto tiene que seguir
;leyendolos y si no que continue con el programa
btfsc STATUS,2  
goto inicio
;ahora para comprobar que no se salta todo esto asta que no le
meta información por los puertos enciendo las 2 ultimas patillas de los puertos B y C

bsf PORTB,7
bsf PORTC,7
end

Bueno pues despues de todo esto lo único que consigo el que al enchufarle sin meter nada por los puertos B y C se encienden las patillas antes indicadas, y tocando el registro del INTCON he conseguido que no encienda esas dos patillas, lo que me hace suponer que esta todo el rato leyendo los puertos pero entonces al meter datos por los puertos pues no salta.


Espero haber explicado bien el problema y que no halla aburrido a nadie con este testamento pero es que llevo dos semanas haciendo pruebas y no he conseguido nada y el tiempo se me hecha encima.

Gracias a todos. Saludos!!!!

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Me estoy volviendo loco, AYUDA!!!!!
« Respuesta #1 en: 20 de Febrero de 2004, 20:08:00 »
movlw 0x00
xorwf resultado,0
;hago la xor entre resultado y W asi pues si es cero es que no he
;mandado nada a los puertos por lo tanto tiene que seguir
;leyendolos y si no que continue con el programa
btfsc STATUS,2
goto inicio
;ahora para comprobar que no se salta todo esto asta que no le
meta información por los puertos enciendo las 2 ultimas patillas de los puertos B y C


aquiesta el problema!!!

btfsc STATUS,2

tu estas preguntando

Bit Test File  Skip (salte si es cero), y justamente, se pone en uno el bit Z cuando el xor=0

es decir, al realizar una comparacion, si es igual, el bit ZA se coloca en 1
tendrias que escribir

btfss Status,z





Suerte!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
RE: Me estoy volviendo loco, AYUDA!!!!!
« Respuesta #2 en: 21 de Febrero de 2004, 08:00:00 »
Mil gracias por haber leido mi problema pero nada he probado lo que me as dicho y na de na sigue igual ya no se que hacer ni que poner!!!

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
RE: Me estoy volviendo loco, AYUDA!!!!!
« Respuesta #3 en: 21 de Febrero de 2004, 08:16:00 »
Ya se lo que puede pasar!!! puede ser que dos pic no funcionen bien con un solo oscilador?, es que por ahorrar he diseñado la placa y he puesto a los dos pic con un solo cristal puede ser eso?

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Me estoy volviendo loco, AYUDA!!!!!
« Respuesta #4 en: 21 de Febrero de 2004, 08:18:00 »
Como los conectaste??
 Si estan ambos en paralelo por supuesto que no andan !!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
RE: Me estoy volviendo loco, AYUDA!!!!!
« Respuesta #5 en: 22 de Febrero de 2004, 07:55:00 »
Si estan en pararelo conectados y como es que conectados algunas instrucciones de las que le pongo como por ejemplo las del final si las hace?no se todo esto es muy raro, de todas formas ayer modifique la placa y le puse un oscilador a cada uno y nada de nada la cosa sigue igual ya no se como programarle pa que haga lo que le pongo en el programa.

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Me estoy volviendo loco, AYUDA!!!!!
« Respuesta #6 en: 22 de Febrero de 2004, 08:52:00 »
Ademas al resetear  , el  micro buscará en Org 0x0 las ins , y tu las empiezas en  org 0x10


ORG 0x0
goto micodigo

ORG 0x10
micodigo