Autor Tema: Cambio de paguina del pic16f887.  (Leído 2059 veces)

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

Desconectado chekrockk

  • PIC10
  • *
  • Mensajes: 11
Cambio de paguina del pic16f887.
« en: 15 de Julio de 2011, 19:35:53 »
ke tal amigos soy nuevo en el foro........................................

y eske tengo un problema con un programa que estoy realizando en el pic16f887,,,, esl cual es para una matriz de leds...el problema es que el programa sobrepasa los 2k de memoria osea la paguina 0.......e intentado de varias formas cambiar ala siguiente paguina y cuando lo hago no me marca error ni nada. el problema es cuando lo simulo en proteus isis. el cual solo me toma el codigo hasta la pagina 0 o los 2k de memoria, no me simula lo de la otra paguina....no se si me programa este mal por el cual no tome lo de la paguina 1. e intentado y sigue =. :(

esero me puedan auxiliar con este problema gracias de antemano.
« Última modificación: 15 de Julio de 2011, 19:38:05 por chekrockk »

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Cambio de paguina del pic16f887.
« Respuesta #1 en: 16 de Julio de 2011, 06:31:25 »
holas, deberias subir el programa para echarle un ojo. de todas formas por ej si tienes una rutina en la direccion 
org 0x900 por ej MENSAJE
y el pc se encuentra en otra página, pones:
pagesel MENSAJE
call MENSAJE

para lectura de tablas con saltos de pagina tienes ejemplos en el foro

un saludo

Desconectado chekrockk

  • PIC10
  • *
  • Mensajes: 11
Re: Cambio de paguina del pic16f887.
« Respuesta #2 en: 17 de Julio de 2011, 14:39:43 »
holas, deberias subir el programa para echarle un ojo. de todas formas por ej si tienes una rutina en la direccion 
org 0x900 por ej MENSAJE
y el pc se encuentra en otra página, pones:
pagesel MENSAJE
call MENSAJE

para lectura de tablas con saltos de pagina tienes ejemplos en el foro

un saludo

que tal amigo gracias por contestar. si de esa forma lo estoy haciendo pero sigo teniendo los mismos problemas.
parte de inico del programa de essta forma comienza y asi gui sucesivamente.
   LIST P=16F887
    INCLUDE <P16F887.INC>
   
    __CONFIG _CONFIG1, _INTOSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOR_OFF & _IESO_ON & _FCMEN_ON & _LVP_ON
   __CONFIG _CONFIG2, _WRT_OFF & _BOR40V   

   ;ERRORLEVEL -306 ; esto te elimina todos los warnings generados del tipo 306
   ERRORLEVEL -302 ;

TRISC       equ   0x87
TRISD       equ   0x88
PORTC       equ   0x07
PORTD       equ   0x08
STATUS      equ   0x03
PCLATH      equ   0x0A
F           equ       1
W           equ       0
CONT1       equ       0x21
CONT2       equ       0x22
CUENTA1     equ       0x23
CUENTA2     equ       0x24
VUELTA1     equ       0x25
CUENTA11     equ       0x26
CUENTA22     equ       0x27


 
            ORG       0x00
            GOTO      INICIO
            ORG       0x05


RETARDO     MOVLW   0xDF
            MOVWF   CUENTA1
ACA1        MOVLW   0x03
              MOVWF   CUENTA2
ACA           DECFSZ  CUENTA2,F
            GOTO    ACA
            DECFSZ  CUENTA1,F
            GOTO    ACA1
            RETURN   

RETA2       MOVLW   0xFF
            MOVWF   CONT1
AJA1        MOVLW   0xFF
            MOVWF   CONT2
AJA         DECFSZ  CONT2,F
            GOTO    AJA
            DECFSZ  CONT1,F
            GOTO    AJA1
            RETURN   


INICIO     BSF       STATUS,5
           CLRF      TRISD
           CLRF      TRISC
           BCF       STATUS,5
           MOVLW     0x1F
           MOVWF     VUELTA1 

INICIO2    CLRF      PORTC       
           CLRF      PORTD
           CALL      RETA2
           CALL      RETA2
           MOVLW     b'11111110'  ;PONER TIERRA EN ULTIMA COLUMNA...prende primer punto
           MOVWF     PORTD
           MOVLW     b'0000001'      ;prende la primera fila de arriba hacia abajo
           MOVWF     PORTC
           CALL      RETA2
           CALL      RETA2

T1      MOVLW     b'11111110'
        MOVWF     PORTD
        MOVLW     b'0000001'  ; PRIMER punto
        MOVWF     PORTC
        CALL      RETARDO
        MOVLW     b'11111101'  ; ACTIVAR LA COLUMna 2
        MOVWF     PORTD
        MOVLW     b'0000001'  ;  PRENDE EL segundo punto
        MOVWF     PORTC
       CALL      RETARDO 
        DECFSZ    VUELTA1,F
        GOTO      T1
        MOVLW     0X1F
        MOVWF     VUELTA1

T2   MOVLW     b'11111110'  ; PONER TIERRA A ULTIMA COLUMNA PARA PRENder el primer punto
    MOVWF     PORTD
    MOVLW     b'0000001'   ;PRENDE el primer punto
    MOVWF     PORTC
    CALL      RETARDO
     MOVLW     b'11111101'  ; VOLVER A PRENDER la segunda columna
      MOVWF     PORTD
      MOVLW     b'0000001'    ;PRENDE El segundo punto
      MOVWF     PORTC
      CALL      RETARDO
    MOVLW     b'11111011'  ; ACTIVA la tercer columna
    MOVWF     PORTD
    MOVLW     b'0000001'   ;activa el tercer punto
    MOVWF     PORTC
     CALL      RETARDO
           DECFSZ    VUELTA1,F
           GOTO      T2
           MOVLW     0X1F
           MOVWF     VUELTA1
parte donde ya salta a la segunda pagina o pagina1
R2   MOVLW     b'10111111'  ; ACTIVA EL PALO DE R
    MOVWF     PORTD
    MOVLW    b'1111111'  ;LO ACTIVA
   MOVWF     PORTC
   PAGESEL RETARDO
   CALL   RETARDO
   MOVLW     b'11011111'  ; ACTIVA DOS PUNTOS DE R
    MOVWF     PORTD
    MOVLW    b'0001001'  ;LOS ACTIVA
   MOVWF     PORTC
   PAGESEL RETARDO
   CALL   RETARDO
   MOVLW     b'11101111'  ; ACTIVA OTROS DOS PUNTOS DE R
    MOVWF     PORTD
      MOVLW     b'0011001'    ;LOS ACTIVA
   MOVWF     PORTC
   PAGESEL RETARDO
   CALL   RETARDO
   MOVLW     b'11110111'  ; ACTIVA TRES PUNTOS DE LA R
    MOVWF     PORTD
    MOVLW     b'0100110'    ;LOS ACTIVA
   MOVWF     PORTC
   PAGESEL RETARDO
   CALL   RETARDO
   MOVLW     b'11111011'  ; ACTIVA EL ULTIMO PUNTO DE LA R
    MOVWF     PORTD
    MOVLW     b'1000000'    ;LOS ACTIVA
   MOVWF     PORTC
   PAGESEL RETARDO
   CALL   RETARDO
   MOVLW     b'11111110'  ; ACTIVA EL PALO DE LA SEGUNDA E
    MOVWF     PORTD
    MOVLW     b'1111110'    ;LOS ACTIVA
   MOVWF     PORTC
   PAGESEL RETARDO
   CALL   RETARDO
     DECFSZ    VUELTA1,F
     GOTO      R2
     MOVLW     0X1F
     MOVWF     VUELTA

de esta forma lo estoy haciendo pero sigue =.
gracias