Autor Tema: puerta b de un 16f88  (Leído 3500 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
puerta b de un 16f88
« en: 24 de Octubre de 2007, 08:17:07 »
hola que tal
quiero hacer una rutina para leer los datos en serie de un registro de desplazamiento, un 74165 uso pb6 como entrada de datos y pb7 para mandarle la señal de clock y que se desplace el registro, he configurado el trisb como pb6 entrada pb7salida pero no hace ningun cambio el puerto.
esta es la rutina que he hecho para leer un nº de registros
Código: [Seleccionar]
RECIBE
                        MOVLW 0X50
MOVWF FSR
RETURN
                        MOVLW .0                              ;POR QUE SOLO USO UNO PERO SI HAY MAS HAY QUE PONERLOS
MOVWF N_REGISTROS
RETURN
RECEP_SPI ;CADA VEZ QUE SE LE LLAMA GUARDA EN EL REGISTRO W 8 BITS
BCF STATUS,RP0 ;PAGE 0
BCF PORTA,7 ;BAJA PULSO PARA ESPERAR DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP
MOVLW .9 ;Nº DE BITS A DAR LA VUELTA
MOVWF N_BITS
DESCONT DECFSZ N_BITS ;DECREMENTA N BITS
GOTO GUARDA ;VA A GUARDA
BSF PORTA,7 ;SI LLEGO A CERO UN BYTE MENOS
NOP ;SUBE PULSO PARA NUEVO DATO
NOP ;ESPERA ESTABILIZA
BTFSS PORTB,6 ;SI ES CERO...
GOTO RECIBE_CERO ;...NO HAY SALTO ESTABA A CERO
RECIBE_UNO
NOP
NOP ;SI ESTABA ALTO
BSF STATUS,C ;SALTA PONE A UNO EL CARRY
RRF REG_REC_SPI,F ;Y ROTA EL REGISTRO INTRODUCIENDO EL VALOR DEL CARRY
BCF PORTA,7 ;BAJA EL PULSO PARA ESPERAR NUEVO DATO AL SUBIR
NOP ;ESTABILIZA
NOP
GOTO DESCONT ;VUELTA ATRAS HASTA QUE SE ACABEN LOS BITS
RECIBE_CERO
NOP
NOP
BCF STATUS,C ;SI FUE CERO BAJA EL CARRY (ARROZ??)
RRF REG_REC_SPI,F ;Y ROTA EL REGISTRO INTRODUCIENDO EL VALOR DEL CARRY
BCF PORTA,7 ;BAJA EL PULSO PARA ESPERAR NUEVO DATO AL SUBIR
NOP ;ESTABILIZA
NOP
GOTO DESCONT ;VUELTA ATRAS HASTA QUE SE ACABEN LOS BITS

la rutina guarda empezando por la primera posicion de memoria indicada en FSR el byte recogido hasta el nº de ellos indicado en N_REGISTROS
El problema esta en que el portb7 no pone a uno o cero la salida y no se mueve el registro de desplazamiento  :? portb7 en un 16f88 ademas de i/o digital es entrada analogica , la he configurado como digital, tambien pb6, en el registro ANSEL y el timer 1 desctivado pues tambien son terminales TICKI y T1OSI no se me ocurre como configurar el puerto b para usar la rutina
Sabriais decirme como configurar la puerta b para domesticarlo  :? utilizo la puerta A para manejar 19 registros 74595 con tres salidas y no tengo ningun problema. pero me esta dando problemas la puertecita

un saludo y gracias
« Última modificación: 24 de Octubre de 2007, 08:37:33 por alogic.on »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: puerta b de un 16f88
« Respuesta #1 en: 25 de Octubre de 2007, 08:30:56 »
Tu post me confunde, por un lado hablas de PORTB7 pero tu código usa PORTA7.  ¿será ese el problema?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: puerta b de un 16f88
« Respuesta #2 en: 25 de Octubre de 2007, 08:43:03 »
 :shock:
"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.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: puerta b de un 16f88
« Respuesta #3 en: 25 de Octubre de 2007, 15:44:49 »
perdona estaba escribiendo el post mientras modificaba la rutina, y se me fue
Código: [Seleccionar]
CONFIG_REG_REC_SPI
MOVLW 0X50
MOVWF FSR
MOVLW .1
MOVWF N_REGISTROS

RECEP_SPI ;CADA VEZ QUE SE LE LLAMA GUARDA EN EL REGISTRO W 8 BITS
BCF STATUS,RP0 ;PAGE 0
BCF PORTB,7 ;BAJA PULSO PARA ESPERAR DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP
MOVLW .9 ;Nº DE BITS A DAR LA VUELTA
MOVWF N_BITS
DESCONT DECFSZ N_BITS ;DECREMENTA N BITS
GOTO GUARDA ;VA A GUARDA
BSF PORTB,7 ;SI LLEGO A CERO UN BYTE MENOS
NOP ;SUBE PULSO PARA NUEVO DATO
NOP ;ESPERA ESTABILIZA
BTFSS PORTB,6 ;SI ES CERO...
GOTO RECIBE_CERO ;...NO HAY SALTO ESTABA A CERO
RECIBE_UNO
NOP
NOP ;SI ESTABA ALTO
BSF STATUS,C ;SALTA PONE A UNO EL CARRY
RRF REG_REC_SPI,F ;Y ROTA EL REGISTRO INTRODUCIENDO EL VALOR DEL CARRY
BCF PORTB,7 ;BAJA EL PULSO PARA ESPERAR NUEVO DATO AL SUBIR
NOP ;ESTABILIZA
NOP
GOTO DESCONT ;VUELTA ATRAS HASTA QUE SE ACABEN LOS BITS
RECIBE_CERO
NOP
NOP
BCF STATUS,C ;SI FUE CERO BAJA EL CARRY (ARROZ??)
RRF REG_REC_SPI,F ;Y ROTA EL REGISTRO INTRODUCIENDO EL VALOR DEL CARRY
BCF PORTB,7 ;BAJA EL PULSO PARA ESPERAR NUEVO DATO AL SUBIR
NOP ;ESTABILIZA
NOP
GOTO DESCONT ;VUELTA ATRAS HASTA QUE SE ACABEN LOS BITS

GUARDA MOVF REG_REC_SPI,W ;GUARDA EN W
INCF FSR ;INCREMNTA FSR
MOVWF INDF ;1ª MEMORIA LIBRE?? 0X50
DECFSZ N_REGISTROS ;REPITE X VECES SEGUN EL NUMERO DE REGISTROS
GOTO RECEP_SPI
RETURN ;VUELVE DONDE ESTABA

 probando que funcionase en portA pero no consigo hacerlo en portB, y es donde lo necesitaba  :?

gracias y un saludo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: puerta b de un 16f88
« Respuesta #4 en: 25 de Octubre de 2007, 17:53:45 »
A ver, si quieres vayamos solucionando el problema por partes.

El TRISB está bien configurado?

¿Porqué no haces un programa simple que haga un TOGGLE del RB7 o bien que lo deje siempre ON ?

Digo esto pensando en que si tu rutina dices que anda bien en el PUERTO A, no veo porqué no lo haría en el puerto B salvo que te esté molestando LA ENTRADA y que el que envía tsea colector abierto o similar y no ponga el pin bien a masa con lo cual si tienes el weak pull-up habilitado del PORTB siempre lo estaras Leyendo como un alto.


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: puerta b de un 16f88
« Respuesta #5 en: 26 de Octubre de 2007, 02:47:53 »
ya lo intente, si por eso era la pregunta, al no funcionar la rutina en portB la use en portA, como iba lo que intente fue poner rb7 en alto, y por ahí no sale na  :? probe que si utilizo una patita de portA para el clock, y leo en portb si funciona
ya no se que mas configurar aparte de trisb, el cad y tmr1 para usar rb7 como salida digital en un 16f88

un saludo y gracias

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: puerta b de un 16f88
« Respuesta #6 en: 26 de Octubre de 2007, 10:04:41 »
Porque no haces un programa super bien simple que solo haga eso? Porqué no desactivas las weak-pullup del puerto b? Probaste con otro pic?

saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: puerta b de un 16f88
« Respuesta #7 en: 27 de Octubre de 2007, 10:57:13 »
en ello estoy simplificandolo al maximo, y en pequeño parece funcionar. Os dejo el programa que me ha salido probando por si a alguien le sirve. lo que hace es basicamente leer el estado de la entrada de los 74165 conectados en serie hasta 256 y sacar los datos por los 74595 si mirais en el programa hay dos registros a modificar con el nº de shifts a la entrada y la salida. la usart esta configurada para que almacene los datos recibidos en los registros a mostrar tambien se puede elegir el nº de registros a rescribir. aun siendo las mismas rutinas y estar configurado de la misma forma en mi prgrama no funciona , tendre que buscar que es en las partes que no estan a base de añadirlas una a una para saber que interfiere

un saludo y gracias

Código: [Seleccionar]
LIST         p=16f88
#include <P16F88.INC>
N_REGISTROS EQU 0X25
N_BITS EQU 0X26
REG_REC_SPI EQU 0X27
N_DIGITOS EQU 0X28
REG_ENV_SPI EQU 0X29
CENT EQU 0X2A
MSD EQU 0X2B
LSD EQU 0X2C
REG_ENV_USART EQU 0X2D
REG_RETARDO EQU 0X2E
W_TEMP EQU 0X2F
STATUS_TEMP EQU 0X30
PCLATH_TEMP EQU 0X31
FSR_TEMP EQU 0X32
REG_REC_USART EQU 0X33
N_LLEGADAS EQU 0X34
N_PUESTOS EQU 0X35
;-----------------------------------
org 0
goto PROGRAMA
org 4
goto INTERRUPT
org 5

;------------------------------------
INTERRUPT
BCF STATUS,RP0 ;PAGE 0
MOVWF W_TEMP
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_TEMP
MOVF PCLATH,W
MOVWF PCLATH_TEMP
CLRF PCLATH
MOVF FSR,W
MOVWF FSR_TEMP
;---------------------------------------------
BTFSC PIR1,TMR1IF
CALL INT_TMR1
BTFSC PIR1,RCIF
CALL INT_RX_USART
GOTO FIN_INT
;---------------------------------------------
INT_TMR1
RETURN
;--------------------------------------------------------
INT_RX_USART
BCF STATUS,RP0
MOVF RCREG,W ;MUEVE EL BYTE RECIBIDO A W
MOVWF REG_ENV_USART
CALL ENVIAR_USART

DECFSZ N_LLEGADAS ;PARA INICIAR LA PANTALLA ENVIAR UN Nº DEL 1 AL 9 HARA QUE SALTE LA PRIMERA VEZ Y EMPIEZE
GOTO RECEP_TECLA
GOTO RELLENA
RECEP_TECLA ;AÑADE PUESTO EN EL BANCO DE MEMORIA
INCF N_PUESTOS ;N_PUESTOS = 0X50-0X70
BORRA ;NO AÑADE PUESTO EN EL BANCO DE MEMORIA POR LO QUE SUSTITUYE UNA POSICION POR OTRA 
MOVF N_PUESTOS,W ;POSICION DE MEMORIA DECLARADA PARA GUARDAR LA POSICION DE MEMORIA DONDE SE ALOJA EL DEST DE FSR
MOVWF FSR
MOVF REG_REC_USART,W
MOVWF INDF
RETURN
;---------------------------------------------------------
RELLENA MOVLW 0X49 ;DIRECCION -1 DE MEMORIA DONDE EMPIEZA
MOVWF N_PUESTOS
MOVLW .1 ;Nº DE REGISTROS CONECTADOS A LA SALIDA
MOVWF N_LLEGADAS
RETURN
;---------------------------------------------------------
;---------------------------------------------
FIN_INT
CALL ENVIA_TEXTO
CALL CONFIG_INTERRUPTS
MOVF FSR_TEMP,W
MOVWF FSR
MOVF PCLATH_TEMP,W
MOVWF PCLATH
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
;---------------------------------------------
CONFIG_TRISB
BSF STATUS,5
MOVLW B'01100100'
MOVWF TRISB
RETURN
CONFIG_TRISA ;111011
BSF STATUS,RP0 ;PAGE 1
BCF TRISA,0
BCF TRISA,1
BSF TRISA,2
BSF TRISA,3
BSF TRISA,4
BSF TRISA,5
BSF TRISA,6
BCF TRISA,7
RETURN
;---------------------------------------------
CONFIG_RS232

BANKSEL SPBRG
MOVLW .9
MOVWF SPBRG ;BAUD RATE A 31250

BANKSEL TXSTA
BCF TXSTA,CSRC ;SELECCIONA RELOJ (ASINCRONO NO IMPORTA)
BCF TXSTA,TX9 ;DATOS DE 8 BITS
BSF TXSTA,TXEN ;NO ENVIA DATOS POR AHORA
BCF TXSTA,SYNC ;MODO ASINCRONO
BCF TXSTA,3 ;NO IMPLEMENTADO
BCF TXSTA,BRGH ;BAJA VELOCIDAD DE TRANSMISION
BCF TXSTA,TRMT ;ESTADO DEL REGISTRO DE DESPLAZAMIENTO (VACIO)
BCF TXSTA,TX9D ;NOVENO BIT A TRANSMITIR

BANKSEL RCSTA
BSF RCSTA,SPEN ;HABILITA PUERTO SERIE
BCF RCSTA,RX9 ;BITS A RECIVIR 8
BCF RCSTA,SREN ;HABILITA RECEPCION UNICA (ASINCRONO NO IMPORTA)
BSF RCSTA,CREN ;HABILITA RECEPCION CONTINUA
BCF RCSTA,3
BCF RCSTA,FERR ;NO HAY ERROR DE EMPAQUETAMIENTO
BCF RCSTA,OERR ;NO HAY ERROR DE DESBORDAMIENTO
BCF RCSTA,RX9D ;NOVENO BIT DE RECIVIDO

BANKSEL PIE1
BCF PIE1,TXIE ;DESHABILITA INTERRUPCION DE TRANSMISION
BSF PIE1,RCIE ;HABILITA INTERRUPCION DE RECEPCION

BANKSEL PIR1
BCF PIR1,TXIF ;APAGA BANDERA DE INTERRUPCION POR TRANSMISION
BCF PIR1,RCIF ;APAGA BANDERA DE INTERRUPCION POR RECEPCION

BCF STATUS,RP0 ;CAMBIA AL BANCO 0
BCF STATUS,RP1
RETURN
;---------------------------------------------
CONFIG_ANSEL
BSF STATUS,RP0
MOVLW B'00011100'
MOVWf ANSEL
RETURN

CONFIG_ADCON0
BCF STATUS,RP0
MOVLW B'00000100'
MOVWF ADCON0
RETURN
CONFIG_ADCON1 ; 00000110
BSF STATUS,RP0 ;PAGE 1
MOVLW B'00000000'
MOVWF ADCON1
RETURN
;---------------------------------------------
CONFIG_TMR1 ;00000111
BCF STATUS,RP0 ;PAGE 0
BCF T1CON,T1CKPS1 ;SELECCION DEL PREESCALER DEL TMR0
BCF T1CON,T1CKPS0 ;SELECCION DEL PREESCALER DEL TMR0
BCF T1CON,T1OSCEN ;ACTIVACION OSCILADOR POR CRISTAL 
BSF T1CON,T1INSYNC ;CONTROL SINC EXTERNO
BSF T1CON,TMR1CS ;SELECCION DE RELOJ  INT-  EXT
BSF T1CON,TMR1ON ;1-ACTIVADO 0-DESACT. TIMER0
RETURN
;---------------------------------------------
CONFIG_INTERRUPTS
BSF STATUS,RP0
MOVLW B'11000000'
MOVWF INTCON
MOVLW B'00100001'
MOVWF PIE1
BCF STATUS,RP0
CLRF PIR1
RETURN
;---------------------------------------------
ENVIAR_USART
MOVF REG_ENV_USART,W
MOVWF TXREG
BANKSEL TXSTA ;DEJA EL REGISTRO COMO ESTABA
BSF TXSTA,TXEN ;HABILITA EL ENVIO
BANKSEL PIR1 ;LIMPIA LA BANDERA
ESPERA_TX ;ESPERA A QUE HAYA TERMINADO
BTFSS PIR1,TXIF
GOTO ESPERA_TX
BCF STATUS,RP0 ;PAGE 0
BCF STATUS,RP1
MOVLW .128
MOVWF REG_RETARDO
RETARDO DECFSZ REG_RETARDO ;TIENE PUESTA UN RETARDO DE 128 CICLOS, ES PARA DARLE TIEMPO AL ESCLAVO PARA QUE PROCESE LA INFO
GOTO RETARDO ;QUE RECIBE, ES UNA PREGUNTA QUE DEBO HACER A ALGUIEN QUE ENTIENDA
RETURN ;¿CUÁTNO TIEMPO NECESITA UN ESCLAVO PARA PROCESAR UN DATO MIDI?

;-----------------------------------
PROGRAMA
CALL CONFIG_TRISA
CALL CONFIG_TRISB
BCF STATUS,RP0
CALL RELLENA

CALL CONFIG_ANSEL
CALL CONFIG_ADCON0
CALL CONFIG_ADCON1

CALL CONFIG_TMR1

CALL CONFIG_RS232

CALL CONFIG_INTERRUPTS
BUCLE

CALL CONFIG_REG_REC_SPI
CALL ENVIA_TEXTO
GOTO BUCLE

;-----------------------------------
CONFIG_REG_REC_SPI
BCF STATUS,RP0 ;PAGE 0
MOVLW 0X50
MOVWF FSR
MOVLW .1
MOVWF N_REGISTROS

RECEP_SPI ;CADA VEZ QUE SE LE LLAMA GUARDA EN EL REGISTRO W 8 BITS
BCF STATUS,RP0 ;PAGE 0
BCF PORTB,7 ;BAJA PULSO PARA ESPERAR DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP
MOVLW .9 ;Nº DE BITS A DAR LA VUELTA
MOVWF N_BITS
DESCONT DECFSZ N_BITS ;DECREMENTA N BITS
GOTO ENUMERA
GOTO GUARDA ;VA A GUARDA
ENUMERA BSF PORTB,7 ;SI LLEGO A CERO UN BYTE MENOS
NOP ;SUBE PULSO PARA NUEVO DATO
NOP ;ESPERA ESTABILIZA
BTFSC PORTB,6 ;SI ES CERO...
GOTO RECIBE_UNO ;...NO HAY SALTO ESTABA A CERO
RECIBE_CERO
NOP
NOP
BCF STATUS,C ;SI FUE CERO BAJA EL CARRY (ARROZ??)
RRF REG_REC_SPI,F ;Y ROTA EL REGISTRO INTRODUCIENDO EL VALOR DEL CARRY
BCF PORTB,7 ;BAJA EL PULSO PARA ESPERAR NUEVO DATO AL SUBIR
NOP ;ESTABILIZA
NOP
GOTO DESCONT ;VUELTA ATRAS HASTA QUE SE ACABEN LOS BITS
RECIBE_UNO
NOP
NOP ;SI ESTABA ALTO
BSF STATUS,C ;SALTA PONE A UNO EL CARRY
RRF REG_REC_SPI,F ;Y ROTA EL REGISTRO INTRODUCIENDO EL VALOR DEL CARRY
BCF PORTB,7 ;BAJA EL PULSO PARA ESPERAR NUEVO DATO AL SUBIR
NOP ;ESTABILIZA
NOP
GOTO DESCONT ;VUELTA ATRAS HASTA QUE SE ACABEN LOS BITS

GUARDA MOVF REG_REC_SPI,W ;GUARDA EN W
INCF FSR ;INCREMNTA FSR
MOVWF INDF ;1ª MEMORIA LIBRE?? 0X50
DECFSZ N_REGISTROS ;REPITE X VECES SEGUN EL NUMERO DE REGISTROS
GOTO RECEP_SPI
RETURN
;-------------------------------------------------------------
ENVIA_TEXTO
BCF STATUS,RP0 ;PAGE 0
MOVLW .1 ;Nº DE REGISTROS A LA SALIDA
MOVWF N_DIGITOS
MOVLW 0X50
MOVWF FSR

ENVIAR_SPI
MOVF INDF,W
MOVWF REG_ENV_SPI ;DE W A REG_ENV_SPI
MOVLW .9 ;Nº DE BITS DEL REGISTRO A W
MOVWF N_BITS ;DE W A N_BITS
REMONT
DECFSZ N_BITS ;DECREMENTA Nº DE BITS 8-0
GOTO ENVIA_BIT ;SALTA A ENVIA_BIT
    GOTO COMPLETA ;RETORNA, NO QUEDAN MAS BITS A ENVIAR

ENVIA_BIT
RLF REG_ENV_SPI,F ;ROTA A LA IZQUIERDA Y EL BIT DE MAS PESO VA AL CARRY, A LA SIGUIENTE
;ESTE VUELVE A ENTRAR POR EL CARRY;Y CUANDO PASAN 8 BITS VUELVE A DEJAR EL QUE ESTABA
BTFSC STATUS,C ;TESTEA SI ES CERO O UNO
GOTO ENVIA_UNO ;SI FUE CERO NO SALTA Y VA A ENVIA _UNO
;--------------ENVIA CERO Y ESPERA NUEVO BIT------------------------------------
ENVIA_CERO ;SI FUE CERO SALTA PARA ENVIAR CERO POR EL SPI
BCF PORTA,0 ;PONE A CERO RA0
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
BSF PORTA,1 ;CLOCK EN ALTO RA1 PARA ENVIAR DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
BCF PORTA,0 ;PONE A CERO RA0
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
BCF PORTA,1 ;PONE A CERO CLOCK PARA ESPERAR NUEVO DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
GOTO REMONT ;RETORNA PARA ENVIAR NUEVO BIT
;--------------ENVIA UNO Y ESPERA NUEVO BIT-----------------------------------
ENVIA_UNO ;SI EL CARRY ESTABA A UNO, NO SALTÓ
BSF PORTA,0 ;1 EN DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
BSF PORTA,1 ;CLOCK A UNO PARA ENVIAR DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
BCF PORTA,0 ;PONE A CERO PARA ESPERAR NUEVO DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
BCF PORTA,1 ;PONE A CERO PARA ESPERAR NUEVO DATO
NOP ;ESPERA PARA ESTABILIZAR
NOP ;ESPERA PARA ESTABILIZAR
GOTO REMONT ;RETORNA PARA ENVIAR NUEVO BIT
COMPLETA
DECFSZ N_DIGITOS
GOTO OTRO_MAS
GOTO LATCH
OTRO_MAS
INCF FSR
GOTO ENVIAR_SPI

LATCH BSF PORTB,1
NOP
NOP
BCF PORTB,1
NOP
NOP
RETURN
B2_BCD
  CLRF CENT       ;CENTENAS
  clrf MSD        ;DECENAS
  movwf LSD       ;UNIDADES
gtenth
movlw .10
  subwf LSD,W
  BTFSS STATUS,C
  goto OVERHAUL
  movwf LSD
  incf MSD, F
  goto gtenth
OVERHAUL
  MOVLW .10
  SUBWF MSD,W
  BTFSS STATUS,C
  GOTO OVER
  MOVWF MSD
  INCF CENT,F
  GOTO OVERHAUL
OVER
  RETLW 0

S_SEGMENT
ADDWF PCL
RETLW 0X3F ;------------0
RETLW 0X06
RETLW 0X5B
RETLW 0X4F
RETLW 0X66
RETLW 0X6D
RETLW 0X7D
RETLW 0X07
RETLW 0X7F
RETLW 0X6F


END

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: puerta b de un 16f88
« Respuesta #8 en: 31 de Octubre de 2007, 11:50:17 »
en ello estoy simplificandolo al maximo, y en pequeño parece funcionar.

Lo que te proponía era que vayas descartando si es software o hardware, para ello debieras hacer un programa pequeño que solo encienda un led o algo así en el puerto que tu deseas y de esa forma comprobar  si el pic está andando o no.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: puerta b de un 16f88
« Respuesta #9 en: 31 de Octubre de 2007, 15:24:02 »
hola
eso es lo que intente, configurar los puertos de la misma forma que en el otro programa, vamos copiar pegar, y hacer rutinas para encender y apagar unos leds , hap y funcinaba, y en ese prog. terminaron las pruebecillas  :mrgreen:  , pero en el otro aun sin tocar la configuracion de los puertos para nada durante el bucle principal y las interuupciones, no funciona el caso es que es solo con las patillas PB6 y PB7 las otras del mismo puerto van a placer, por eso le echaba la culpa a la configuracion de los peifericos al no poder usar solo estas, sigo buscando la causa cuando la encuentre la voy a coger por los.........HEXA2 y le.... jeje ui cuando la pille
a tambien corre con el hard del programa que estaba haciendo, por descartarlo 

un saludo y gracias   

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: puerta b de un 16f88
« Respuesta #10 en: 01 de Noviembre de 2007, 07:54:05 »
Ok, no me había quedado claro que habías comprobado que el pic funcionaba bien.  :)

Bueno, a seguir con las pruebas entonces!! 
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything