Autor Tema: programa de mas de 2k en mplab con pic16f887  (Leído 2604 veces)

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

Desconectado chekrockk

  • PIC10
  • *
  • Mensajes: 11
programa de mas de 2k en mplab con pic16f887
« en: 26 de Julio de 2011, 16:39:17 »
ke tal amigos estoy realizando un programa de una matrix de leds. el problema es ke el programa sobrepasa los 2k la primera pagina. y cuando intento cambierr la otra pagina. no me lo hace. se regresa al principio y cuando lo simulo sucede lo mismo. aqui dejo una parte de programa.solo tengo una rutina de tiempo ke es la ke utilizo para todo.
  __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' 
           MOVWF     PORTD
           MOVLW     b'0000001'     
           MOVWF     PORTC
           CALL      RETA2
           CALL      RETA2

T1      MOVLW     b'11111110'
        MOVWF     PORTD
        MOVLW     b'0000001' 
        MOVWF     PORTC
        CALL      RETARDO
        MOVLW     b'11111101' 
        MOVWF     PORTD
        MOVLW     b'0000001' 
        MOVWF     PORTC
       CALL      RETARDO
        DECFSZ    VUELTA1,F
        GOTO      T1
        MOVLW     0X1F
        MOVWF     VUELTA1

T2   MOVLW     b'11111110' 
    MOVWF     PORTD
    MOVLW     b'0000001'   
    MOVWF     PORTC
    CALL      RETARDO
     MOVLW     b'11111101' 
      MOVWF     PORTD
      MOVLW     b'0000001'   
      MOVWF     PORTC
      CALL      RETARDO
    MOVLW     b'11111011' 
    MOVWF     PORTD
    MOVLW     b'0000001'   
    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 =. :shock:
gracias

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: programa de mas de 2k en mplab con pic16f887
« Respuesta #1 en: 26 de Julio de 2011, 17:15:07 »
Hola amigo, lo mejor en estos casos es trabajar por subrutinas y si te pasas de los 2K debes definir la página y realizar el cambio por medio del pclath

ejemplo

bsf pclath,3
call subrutina
bcf pclath,3


               org 800

subrutina  xxxxxxx               
               xxxxxxx               
               xxxxxxx               
               xxxxxxx
               return

Saludos

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506

Desconectado chekrockk

  • PIC10
  • *
  • Mensajes: 11
Re: programa de mas de 2k en mplab con pic16f887
« Respuesta #3 en: 27 de Julio de 2011, 17:46:29 »
e intendo de la forma que se a dicho como esta en el programa el problema es que ala ora de simular no toma lo demas, esta razon es por el programa pero no encuentro el problema, ya que e estado intentantolo de la forma que dicen en varias paguinas.

gracias.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: programa de mas de 2k en mplab con pic16f887
« Respuesta #4 en: 28 de Julio de 2011, 09:30:25 »
La unica manera es, si quieres, poner el programa completo, y que con tiempo alguien lo simule y te diga si ve algun error.

Deberias intentar expresarte un poco mejor, entre faltas de ortografia y que eres poco claro, resulta dificil entenderte, no lo tomes a mal es simplemente que muchos leemos el mensaje y no damos entendido muy bien que quieres decir.


 

anything