Autor Tema: tablas gigantes  (Leído 3250 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
tablas gigantes
« en: 23 de Julio de 2010, 21:45:06 »
hola.he visto por aqui que hay gente con problemas al realizar una tabla que pase de los 255bytes.incluso mas pequeñas si la llamada a la tabla se realiza en medio del sector de alguna pagina de la eeprom.

por eso me he entretenido intentando buscar una solucion.y aunque puede que el tema este solucionado en el foro,he decidido realizar este programa para de paso aprender yo tambien.

en este programa he puesto una tabla de unos 1000 Bytes.sin problemas de que se desborde el contador de programa.ya que he usado un 12F675,pues he
usado toda la memoria eeprom de programa de que dispone este chip.

solo lo he probado con el MPLAB SIM y solo me ha dado dos problemas.

uno de ellos es que he tenido de disponer en la tabla un ORG 300.en el principio de la direccion 0x300.no se porque el simulador no me ha puesto peros en
las direcciones 0x100  o en la 0x200.como es una directiva del ensamblador,no nos va a ocupar ninguna posicion de memoria en la eeprom.
pero si que nos va a entorpecer a la hora de compilar nuestro programa.ya que vamos a tener que estar atentos a disponer en la tabla un org 300.
en el sitio adecuado para no desperdiciar espacio.y para que no nos de error al compilar.

otra cosa que me ha ocurrido.y que no se que puede ser,es que no puedo meter ningun dato en la direccion 1024 de la memoria de programa.
supongo que estara ocupada para algo interno del pic.

y abajo pongo el codigo.espero les sea de utilidad. :P

Código: [Seleccionar]
;*************************************************www.ingeniopic.com*******************************************************
; PROGRAMA : TABLAS
; Funcion :  LECTURA DE TABLAS DE MAS DE 255 Bytes
;           
;   
;  Revision : 1.0        24/07/2010            Programa para : PIC12F675
; CPU Clock : 4 MHz                     Reloj instruccion :
;       WDT : Deshabilitado                  Tipo de reloj : IntRC
; Code Prot : OFF           
;*****************************************************www.ingeniopic.com***************************************************
;FUNCIONAMIENTO DEL CIRCUITO:
;Para encender o apagar la luz se realizara una pulsacion breve sobre el pulsador.
;Si queremos entrar en el modo de regulacion,realizaremos una pulsacion larga (siempre que la luz este encendida)



      LIST   P=12F675   ;Se indica el modo de procesador
     
      RADIX   HEX      ;Sistema de numeracion hexadecimal

      INCLUDE   "P12F675.inc"   
     
               ;registros internos
      __CONFIG   _INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _MCLRE_OFF

ERRORLEVEL      -302


CBLOCK    0x20 ;comienza el bloque de ram en la direccion 0x08
INDICE ;registro de direccionamiento de la tabla
TEMP_PCLATH ;temporal del PCLATH
TEMP_PCL ;temporal del PCL
ENDC ;fin del bloque de ram


BANK0      MACRO
          BCF   STATUS,RP0
          ENDM

BANK1      MACRO
          BSF   STATUS,RP0
          ENDM





;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
          ORG    0x00      ;Inicio en el Vector de Reset
      goto   INICIO      ;ir a la primera instruccion del programa


;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>
ORG 0X05
INICIO    BANK0 ;selecciona banco 0
clrf GPIO ;inicializar GPIO
movlw 07h ;pines como E/S digitales
movwf CMCON ;aplica anterior instruccion
BANK1 ;selecciona banco 1
clrf ANSEL ;Digital I/O
clrf TRISIO ;pines de GPIO como salidas
BANK0 ;selecciona banco 0
clrf INTCON ;anula interrupciones

;<<<<<<<------------------------------------------------PROGRAMA PRINCIPAL---------------------------------------->>>>>>>>>>>>>>
PRINCIPAL movlw 0x00 ;sector donde esta la tabla ubicada(muy importante)
movwf PCLATH
sigue call TABLA ;salto a TABLA

movwf GPIO ;carga valor recivido de la tabla en puerto de salida
incf INDICE,F ;incrementa indice de tabla
goto sigue ;lee siguiente valor

TABLA movlw 0XFF ;valor final de sector
movwf TEMP_PCL ;temporal del PCL
movfw PCL ;carga en el acumulador direccion PC actual
subwf TEMP_PCL,F ;sumala al registro temporal del PCL
movlw D'8' ;sumale el valor 8
subwf TEMP_PCL,F ;al registro temporal PCL
movfw TEMP_PCL ;carga en W el contenido del registro temporal del PCL
xorwf INDICE,W ;compara si es igual al indice
btfsc STATUS,Z ;si es asi.(valor final del sector)
incf PCLATH,F ;incrementa PCLATH (para leer datos del siguiente sector)
movfw   INDICE ;en caso contrario carga el contenido de INDICE en w
addwf   PCL,f ;direcciona el valor a leer de la tabla.
    retlw   d'0'     
    retlw   d'1'
    retlw   d'2'
    retlw   d'3'
    retlw   d'4'     
    retlw   d'5'
    retlw   d'6'
    retlw   d'7'
    retlw   d'8'
    retlw   d'9'
    retlw   d'10'     
    retlw   d'11'
    retlw   d'12'
    retlw   d'13'
    retlw   d'14'     
    retlw   d'15'
    retlw   d'16'
    retlw   d'17'
    retlw   d'18'
    retlw   d'19'
retlw   d'20'     
    retlw   d'21'
    retlw   d'22'
    retlw   d'23'
    retlw   d'24'     
    retlw   d'25'
    retlw   d'26'
    retlw   d'27'
    retlw   d'28'
    retlw   d'29'
    retlw   d'30'     
    retlw   d'31'
    retlw   d'32'
    retlw   d'33'
    retlw   d'34'     
    retlw   d'35'
    retlw   d'36'
    retlw   d'37'
    retlw   d'38'
    retlw   d'39'
retlw   d'40'     
    retlw   d'41'
    retlw   d'42'
    retlw   d'43'
    retlw   d'44'     
    retlw   d'45'
    retlw   d'46'
    retlw   d'47'
    retlw   d'48'
    retlw   d'49'
    retlw   d'50'     
    retlw   d'51'
    retlw   d'52'
    retlw   d'53'
    retlw   d'54'     
    retlw   d'55'
    retlw   d'56'
    retlw   d'57'
    retlw   d'58'
    retlw   d'59'
retlw   d'60'     
    retlw   d'61'
    retlw   d'62'
    retlw   d'64'
    retlw   d'64'     
    retlw   d'65'
    retlw   d'66'
    retlw   d'67'
    retlw   d'68'
    retlw   d'69'
    retlw   d'70'     
    retlw   d'71'
    retlw   d'72'
    retlw   d'73'
    retlw   d'74'     
    retlw   d'75'
    retlw   d'76'
    retlw   d'77'
    retlw   d'78'
    retlw   d'79'
retlw   d'80'     
    retlw   d'81'
    retlw   d'82'
    retlw   d'83'
    retlw   d'84'     
    retlw   d'85'
    retlw   d'86'
    retlw   d'87'
    retlw   d'88'
    retlw   d'89'
    retlw   d'90'     
    retlw   d'91'
    retlw   d'92'
    retlw   d'93'
    retlw   d'94'     
    retlw   d'95'
    retlw   d'96'
    retlw   d'97'
    retlw   d'98'
    retlw   d'99'
retlw   d'100'     
    retlw   d'101'
    retlw   d'102'
    retlw   d'103'
    retlw   d'104'     
    retlw   d'105'
    retlw   d'106'
    retlw   d'107'
    retlw   d'108'
    retlw   d'109'
    retlw   d'110'     
    retlw   d'111'
    retlw   d'112'
    retlw   d'113'
    retlw   d'114'     
    retlw   d'115'
    retlw   d'116'
    retlw   d'117'
    retlw   d'118'
    retlw   d'119'
retlw   d'120'     
    retlw   d'121'
    retlw   d'122'
    retlw   d'123'
    retlw   d'124'     
    retlw   d'125'
    retlw   d'126'
    retlw   d'127'
    retlw   d'128'
    retlw   d'129'
    retlw   d'130'     
    retlw   d'131'
    retlw   d'132'
    retlw   d'133'
    retlw   d'134'     
    retlw   d'135'
    retlw   d'136'
    retlw   d'137'
    retlw   d'138'
    retlw   d'139'
retlw   d'140'     
    retlw   d'141'
    retlw   d'142'
    retlw   d'143'
    retlw   d'144'     
    retlw   d'145'
    retlw   d'146'
    retlw   d'147'
    retlw   d'148'
    retlw   d'149'
    retlw   d'150'     
    retlw   d'151'
    retlw   d'152'
    retlw   d'153'
    retlw   d'154'     
    retlw   d'155'
    retlw   d'156'
    retlw   d'157'
    retlw   d'158'
    retlw   d'159'
retlw   d'160'     
    retlw   d'161'
    retlw   d'162'
    retlw   d'164'
    retlw   d'164'     
    retlw   d'165'
    retlw   d'166'
    retlw   d'167'
    retlw   d'168'
    retlw   d'169'
    retlw   d'170'     
    retlw   d'171'
    retlw   d'172'
    retlw   d'173'
    retlw   d'174'     
    retlw   d'175'
    retlw   d'176'
    retlw   d'177'
    retlw   d'178'
    retlw   d'179'
retlw   d'180'     
    retlw   d'181'
    retlw   d'182'
    retlw   d'183'
    retlw   d'184'     
    retlw   d'185'
    retlw   d'186'
    retlw   d'187'
    retlw   d'188'
    retlw   d'189'
    retlw   d'190'     
    retlw   d'191'
    retlw   d'192'
    retlw   d'193'
    retlw   d'194'     
    retlw   d'195'
    retlw   d'196'
    retlw   d'197'
    retlw   d'198'
    retlw   d'199'
retlw   d'200'
retlw   d'201'
    retlw   d'202'
    retlw   d'203'
    retlw   d'204'     
    retlw   d'205'
    retlw   d'206'
    retlw   d'207'
    retlw   d'208'
    retlw   d'209'
    retlw   d'210'     
    retlw   d'211'
    retlw   d'212'
    retlw   d'213'
    retlw   d'214'     
    retlw   d'215'
    retlw   d'216'
    retlw   d'217'
    retlw   d'218'
    retlw   d'219'
retlw   d'220'     
    retlw   d'221'
    retlw   d'222'
    retlw   d'223'
    retlw   d'224'     
    retlw   d'225'
    retlw   d'226'
    retlw   d'227'
    retlw   d'228'
    retlw   d'229'
    retlw   d'230'     
    retlw   d'231'
    retlw   d'232'
    retlw   d'233'
    retlw   d'234'     
    retlw   d'235'
    retlw   d'236'
    retlw   d'237'
    retlw   d'238'
    retlw   d'239'
retlw   d'240'     
    retlw   d'241'
    retlw   d'242'
    retlw   d'243'
    retlw   d'244'     
    retlw   d'245'
    retlw   d'246'
    retlw   d'247'
    retlw   d'248'
    retlw   d'249'
    retlw   d'250'     
    retlw   d'251'
    retlw   d'252'
    retlw   d'253'
    retlw   d'254'     
    retlw   d'255'   
retlw   d'0'     
    retlw   d'1'
    retlw   d'2'
    retlw   d'3'
    retlw   d'4'     
    retlw   d'5'
    retlw   d'6'
    retlw   d'7'
    retlw   d'8'
    retlw   d'9'
    retlw   d'10'     
    retlw   d'11'
    retlw   d'12'
    retlw   d'13'
    retlw   d'14'     
    retlw   d'15'
    retlw   d'16'
    retlw   d'17'
    retlw   d'18'
    retlw   d'19'
retlw   d'20'     
    retlw   d'21'
    retlw   d'22'
    retlw   d'23'
    retlw   d'24'     
    retlw   d'25'
    retlw   d'26'
    retlw   d'27'
    retlw   d'28'
    retlw   d'29'
    retlw   d'30'     
    retlw   d'31'
    retlw   d'32'
    retlw   d'33'
    retlw   d'34'     
    retlw   d'35'
    retlw   d'36'
    retlw   d'37'
    retlw   d'38'
    retlw   d'39'
retlw   d'40'     
    retlw   d'41'
    retlw   d'42'
    retlw   d'43'
    retlw   d'44'     
    retlw   d'45'
    retlw   d'46'
    retlw   d'47'
    retlw   d'48'
    retlw   d'49'
    retlw   d'50'     
    retlw   d'51'
    retlw   d'52'
    retlw   d'53'
    retlw   d'54'     
    retlw   d'55'
    retlw   d'56'
    retlw   d'57'
    retlw   d'58'
    retlw   d'59'
retlw   d'60'     
    retlw   d'61'
    retlw   d'62'
    retlw   d'64'
    retlw   d'64'     
    retlw   d'65'
    retlw   d'66'
    retlw   d'67'
    retlw   d'68'
    retlw   d'69'
    retlw   d'70'     
    retlw   d'71'
    retlw   d'72'
    retlw   d'73'
    retlw   d'74'     
    retlw   d'75'
    retlw   d'76'
    retlw   d'77'
    retlw   d'78'
    retlw   d'79'
retlw   d'80'     
    retlw   d'81'
    retlw   d'82'
    retlw   d'83'
    retlw   d'84'     
    retlw   d'85'
    retlw   d'86'
    retlw   d'87'
    retlw   d'88'
    retlw   d'89'
    retlw   d'90'     
    retlw   d'91'
    retlw   d'92'
    retlw   d'93'
    retlw   d'94'     
    retlw   d'95'
    retlw   d'96'
    retlw   d'97'
    retlw   d'98'
    retlw   d'99'
retlw   d'100'     
    retlw   d'101'
    retlw   d'102'
    retlw   d'103'
    retlw   d'104'     
    retlw   d'105'
    retlw   d'106'
    retlw   d'107'
    retlw   d'108'
    retlw   d'109'
    retlw   d'110'     
    retlw   d'111'
    retlw   d'112'
    retlw   d'113'
    retlw   d'114'     
    retlw   d'115'
    retlw   d'116'
    retlw   d'117'
    retlw   d'118'
    retlw   d'119'
retlw   d'120'     
    retlw   d'121'
    retlw   d'122'
    retlw   d'123'
    retlw   d'124'     
    retlw   d'125'
    retlw   d'126'
    retlw   d'127'
    retlw   d'128'
    retlw   d'129'
    retlw   d'130'     
    retlw   d'131'
    retlw   d'132'
    retlw   d'133'
    retlw   d'134'     
    retlw   d'135'
    retlw   d'136'
    retlw   d'137'
    retlw   d'138'
    retlw   d'139'
retlw   d'140'     
    retlw   d'141'
    retlw   d'142'
    retlw   d'143'
    retlw   d'144'     
    retlw   d'145'
    retlw   d'146'
    retlw   d'147'
    retlw   d'148'
    retlw   d'149'
    retlw   d'150'     
    retlw   d'151'
    retlw   d'152'
    retlw   d'153'
    retlw   d'154'     
    retlw   d'155'
    retlw   d'156'
    retlw   d'157'
    retlw   d'158'
    retlw   d'159'
retlw   d'160'     
    retlw   d'161'
    retlw   d'162'
    retlw   d'164'
    retlw   d'164'     
    retlw   d'165'
    retlw   d'166'
    retlw   d'167'
    retlw   d'168'
    retlw   d'169'
    retlw   d'170'     
    retlw   d'171'
    retlw   d'172'
    retlw   d'173'
    retlw   d'174'     
    retlw   d'175'
    retlw   d'176'
    retlw   d'177'
    retlw   d'178'
    retlw   d'179'
retlw   d'180'     
    retlw   d'181'
    retlw   d'182'
    retlw   d'183'
    retlw   d'184'     
    retlw   d'185'
    retlw   d'186'
    retlw   d'187'
    retlw   d'188'
    retlw   d'189'
    retlw   d'190'     
    retlw   d'191'
    retlw   d'192'
    retlw   d'193'
    retlw   d'194'     
    retlw   d'195'
    retlw   d'196'
    retlw   d'197'
    retlw   d'198'
    retlw   d'199'
retlw   d'200'
retlw   d'201'
    retlw   d'202'
    retlw   d'203'
    retlw   d'204'     
    retlw   d'205'
    retlw   d'206'
    retlw   d'207'
    retlw   d'208'
    retlw   d'209'
    retlw   d'210'     
    retlw   d'211'
    retlw   d'212'
    retlw   d'213'
    retlw   d'214'     
    retlw   d'215'
    retlw   d'216'
    retlw   d'217'
    retlw   d'218'
    retlw   d'219'
retlw   d'220'     
    retlw   d'221'
    retlw   d'222'
    retlw   d'223'
    retlw   d'224'     
    retlw   d'225'
    retlw   d'226'
    retlw   d'227'
    retlw   d'228'
    retlw   d'229'
    retlw   d'230'     
    retlw   d'231'
    retlw   d'232'
    retlw   d'233'
    retlw   d'234'     
    retlw   d'235'
    retlw   d'236'
    retlw   d'237'
    retlw   d'238'
    retlw   d'239'
retlw   d'240'     
    retlw   d'241'
    retlw   d'242'
    retlw   d'243'
    retlw   d'244'     
    retlw   d'245'
    retlw   d'246'
    retlw   d'247'
    retlw   d'248'
    retlw   d'249'
    retlw   d'250'     
    retlw   d'251'
    retlw   d'252'
    retlw   d'253'
    retlw   d'254'     
    retlw   d'255'
retlw   d'0'     
    retlw   d'1'
    retlw   d'2'
    retlw   d'3'
    retlw   d'4'     
    retlw   d'5'
    retlw   d'6'
    retlw   d'7'
    retlw   d'8'
    retlw   d'9'
    retlw   d'10'     
    retlw   d'11'
    retlw   d'12'
    retlw   d'13'
    retlw   d'14'     
    retlw   d'15'
    retlw   d'16'
    retlw   d'17'
    retlw   d'18'
    retlw   d'19'
retlw   d'20'     
    retlw   d'21'
    retlw   d'22'
    retlw   d'23'
    retlw   d'24'     
    retlw   d'25'
    retlw   d'26'
    retlw   d'27'
    retlw   d'28'
    retlw   d'29'
    retlw   d'30'     
    retlw   d'31'
    retlw   d'32'
    retlw   d'33'
    retlw   d'34'     
    retlw   d'35'
    retlw   d'36'
    retlw   d'37'
    retlw   d'38'
    retlw   d'39'
retlw   d'40'     
    retlw   d'41'
    retlw   d'42'
    retlw   d'43'
    retlw   d'44'     
    retlw   d'45'
    retlw   d'46'
    retlw   d'47'
    retlw   d'48'
    retlw   d'49'
    retlw   d'50'     
    retlw   d'51'
    retlw   d'52'
    retlw   d'53'
    retlw   d'54'     
    retlw   d'55'
    retlw   d'56'
    retlw   d'57'
    retlw   d'58'
    retlw   d'59'
retlw   d'60'     
    retlw   d'61'
    retlw   d'62'
    retlw   d'64'
    retlw   d'64'     
    retlw   d'65'
    retlw   d'66'
    retlw   d'67'
    retlw   d'68'
    retlw   d'69'
    retlw   d'70'     
    retlw   d'71'
    retlw   d'72'
    retlw   d'73'
    retlw   d'74'     
    retlw   d'75'
    retlw   d'76'
    retlw   d'77'
    retlw   d'78'
    retlw   d'79'
retlw   d'80'     
    retlw   d'81'
    retlw   d'82'
    retlw   d'83'
    retlw   d'84'     
    retlw   d'85'
    retlw   d'86'
    retlw   d'87'
    retlw   d'88'
    retlw   d'89'
    retlw   d'90'     
    retlw   d'91'
    retlw   d'92'
    retlw   d'93'
    retlw   d'94'     
    retlw   d'95'
    retlw   d'96'
    retlw   d'97'
    retlw   d'98'
    retlw   d'99'
retlw   d'100'     
    retlw   d'101'
    retlw   d'102'
    retlw   d'103'
    retlw   d'104'     
    retlw   d'105'
    retlw   d'106'
    retlw   d'107'
    retlw   d'108'
    retlw   d'109'
    retlw   d'110'     
    retlw   d'111'
    retlw   d'112'
    retlw   d'113'
    retlw   d'114'     
    retlw   d'115'
    retlw   d'116'
    retlw   d'117'
    retlw   d'118'
    retlw   d'119'
retlw   d'120'     
    retlw   d'121'
    retlw   d'122'
    retlw   d'123'
    retlw   d'124'     
    retlw   d'125'
    retlw   d'126'
    retlw   d'127'
    retlw   d'128'
    retlw   d'129'
    retlw   d'130'     
    retlw   d'131'
    retlw   d'132'
    retlw   d'133'
    retlw   d'134'     
    retlw   d'135'
    retlw   d'136'
    retlw   d'137'
    retlw   d'138'
    retlw   d'139'
retlw   d'140'     
    retlw   d'141'
    retlw   d'142'
    retlw   d'143'
    retlw   d'144'     
    retlw   d'145'
    retlw   d'146'
    retlw   d'147'
    retlw   d'148'
    retlw   d'149'
    retlw   d'150'     
    retlw   d'151'
    retlw   d'152'
    retlw   d'153'
    retlw   d'154'     
    retlw   d'155'
    retlw   d'156'
    retlw   d'157'
    retlw   d'158'
    retlw   d'159'
retlw   d'160'     
    retlw   d'161'
    retlw   d'162'
    retlw   d'164'
    retlw   d'164'     
    retlw   d'165'
    retlw   d'166'
    retlw   d'167'
    retlw   d'168'
    retlw   d'169'
    retlw   d'170'     
    retlw   d'171'
    retlw   d'172'
    retlw   d'173'
    retlw   d'174'     
    retlw   d'175'
    retlw   d'176'
    retlw   d'177'
    retlw   d'178'
    retlw   d'179'
retlw   d'180'     
    retlw   d'181'
    retlw   d'182'
    retlw   d'183'
    retlw   d'184'     
    retlw   d'185'
    retlw   d'186'
    retlw   d'187'
    retlw   d'188'
    retlw   d'189'
    retlw   d'190'     
    retlw   d'191'
    retlw   d'192'
    retlw   d'193'
    retlw   d'194'     
    retlw   d'195'
    retlw   d'196'
    retlw   d'197'
    retlw   d'198'
    retlw   d'199'
retlw   d'200'
retlw   d'201'
    retlw   d'202'
    retlw   d'203'
    retlw   d'204'     
    retlw   d'205'
    retlw   d'206'
    retlw   d'207'
    retlw   d'208'
    retlw   d'209'
    retlw   d'210'     
    retlw   d'211'
    retlw   d'212'
    retlw   d'213'
    retlw   d'214'     
    retlw   d'215'
    retlw   d'216'
    retlw   d'217'
    retlw   d'218'
    retlw   d'219'
retlw   d'220'
retlw d'221'
retlw   d'222'
    retlw   d'223'
ORG 300
    retlw   d'224'     
    retlw   d'225'
    retlw   d'226'
    retlw   d'227'
    retlw   d'228'
    retlw   d'229'
    retlw   d'230'     
    retlw   d'231'
    retlw   d'232'
    retlw   d'233'
    retlw   d'234'     
    retlw   d'235'
    retlw   d'236'
    retlw   d'237'
    retlw   d'238'
    retlw   d'239'
retlw   d'240'     
    retlw   d'241'
    retlw   d'242'
    retlw   d'243'
    retlw   d'244'     
    retlw   d'245'
    retlw   d'246'
    retlw   d'247'
    retlw   d'248'
    retlw   d'249'
    retlw   d'250'     
    retlw   d'251'
    retlw   d'252'
    retlw   d'253'
    retlw   d'254'     
    retlw   d'255'
    retlw   d'0'     
    retlw   d'1'
    retlw   d'2'
    retlw   d'3'
    retlw   d'4'     
    retlw   d'5'
    retlw   d'6'
    retlw   d'7'
    retlw   d'8'
    retlw   d'9'
    retlw   d'10'     
    retlw   d'11'
    retlw   d'12'
    retlw   d'13'
    retlw   d'14'     
    retlw   d'15'
    retlw   d'16'
    retlw   d'17'
    retlw   d'18'
    retlw   d'19'
retlw   d'20'     
    retlw   d'21'
    retlw   d'22'
    retlw   d'23'
    retlw   d'24'     
    retlw   d'25'
    retlw   d'26'
    retlw   d'27'
    retlw   d'28'
    retlw   d'29'
    retlw   d'30'     
    retlw   d'31'
    retlw   d'32'
    retlw   d'33'
    retlw   d'34'     
    retlw   d'35'
    retlw   d'36'
    retlw   d'37'
    retlw   d'38'
    retlw   d'39'
retlw   d'40'     
    retlw   d'41'
    retlw   d'42'
    retlw   d'43'
    retlw   d'44'     
    retlw   d'45'
    retlw   d'46'
    retlw   d'47'
    retlw   d'48'
    retlw   d'49'
    retlw   d'50'     
    retlw   d'51'
    retlw   d'52'
    retlw   d'53'
    retlw   d'54'     
    retlw   d'55'
    retlw   d'56'
    retlw   d'57'
    retlw   d'58'
    retlw   d'59'
retlw   d'60'     
    retlw   d'61'
    retlw   d'62'
    retlw   d'64'
    retlw   d'64'     
    retlw   d'65'
    retlw   d'66'
    retlw   d'67'
    retlw   d'68'
    retlw   d'69'
    retlw   d'70'     
    retlw   d'71'
    retlw   d'72'
    retlw   d'73'
    retlw   d'74'     
    retlw   d'75'
    retlw   d'76'
    retlw   d'77'
    retlw   d'78'
    retlw   d'79'
retlw   d'80'     
    retlw   d'81'
    retlw   d'82'
    retlw   d'83'
    retlw   d'84'     
    retlw   d'85'
    retlw   d'86'
    retlw   d'87'
    retlw   d'88'
    retlw   d'89'
    retlw   d'90'     
    retlw   d'91'
    retlw   d'92'
    retlw   d'93'
    retlw   d'94'     
    retlw   d'95'
    retlw   d'96'
    retlw   d'97'
    retlw   d'98'
    retlw   d'99'
retlw   d'100'     
    retlw   d'101'
    retlw   d'102'
    retlw   d'103'
    retlw   d'104'     
    retlw   d'105'
    retlw   d'106'
    retlw   d'107'
    retlw   d'108'
    retlw   d'109'
    retlw   d'110'     
    retlw   d'111'
    retlw   d'112'
    retlw   d'113'
    retlw   d'114'     
    retlw   d'115'
    retlw   d'116'
    retlw   d'117'
    retlw   d'118'
    retlw   d'119'
retlw   d'120'     
    retlw   d'121'
    retlw   d'122'
    retlw   d'123'
    retlw   d'124'     
    retlw   d'125'
    retlw   d'126'
    retlw   d'127'
    retlw   d'128'
    retlw   d'129'
    retlw   d'130'     
    retlw   d'131'
    retlw   d'132'
    retlw   d'133'
    retlw   d'134'     
    retlw   d'135'
    retlw   d'136'
    retlw   d'137'
    retlw   d'138'
    retlw   d'139'
retlw   d'140'     
    retlw   d'141'
    retlw   d'142'
    retlw   d'143'
    retlw   d'144'     
    retlw   d'145'
    retlw   d'146'
    retlw   d'147'
    retlw   d'148'
    retlw   d'149'
    retlw   d'150'     
    retlw   d'151'
    retlw   d'152'
    retlw   d'153'
    retlw   d'154'     
    retlw   d'155'
    retlw   d'156'
    retlw   d'157'
    retlw   d'158'
    retlw   d'159'
retlw   d'160'     
    retlw   d'161'
    retlw   d'162'
    retlw   d'164'
    retlw   d'164'     
    retlw   d'165'
    retlw   d'166'
    retlw   d'167'
    retlw   d'168'
    retlw   d'169'
    retlw   d'170'     
    retlw   d'171'
    retlw   d'172'
    retlw   d'173'
    retlw   d'174'     
    retlw   d'175'
    retlw   d'176'
    retlw   d'177'
    retlw   d'178'
    retlw   d'179'
retlw   d'180'     
    retlw   d'181'
    retlw   d'182'
    retlw   d'183'
    retlw   d'184'     
    retlw   d'185'
    retlw   d'186'
    retlw   d'187'
    retlw   d'188'
    retlw   d'189'
    retlw   d'190'     
    retlw   d'191'
    retlw   d'192'
    retlw   d'193'
    retlw   d'194'     
    retlw   d'195'
    retlw   d'196'
    retlw   d'197'
    retlw   d'198'
    retlw   d'199'
retlw   d'200'
retlw   d'201'
    retlw   d'202'
    retlw   d'203'
    retlw   d'204'     
    retlw   d'205'
    retlw   d'206'
    retlw   d'207'
    retlw   d'208'
    retlw   d'209'
    retlw   d'210'     
    retlw   d'211'
    retlw   d'212'
    retlw   d'213'
    retlw   d'214'     
    retlw   d'215'
    retlw   d'216'
    retlw   d'217'
    retlw   d'218'
    retlw   d'219'
retlw   d'220'
retlw d'221'
retlw   d'222'


END
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: tablas gigantes
« Respuesta #1 en: 23 de Julio de 2010, 22:46:14 »
Hola groundman. Gracias por el aporte.

El metodo que aplicaste, libre de errores y publicado hace mucho tiempo por Maunix esta acá: http://www.todopic.com.ar/foros/index.php?topic=12918.0

Yo hice una expansión del mísmo(y está en ese mísmo hilo) para acceder a una tabla dentro de otra tabla basandome en el mísmo método(al que arribé de manera empírica, supongo que al igual que lo has hecho tu acá).

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.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: tablas gigantes
« Respuesta #2 en: 24 de Julio de 2010, 00:25:26 »
Excelente groundman! Es fascinante cuando uno logra su objetivo después de tanto esfuerzo, y muchas gracias por compartirlo  :-/



Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: tablas gigantes
« Respuesta #3 en: 24 de Julio de 2010, 09:34:17 »
Que grande groundman. Gracias por compartirlo.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: tablas gigantes
« Respuesta #4 en: 24 de Julio de 2010, 13:29:51 »
muchas gracias por los elogios.y por el enlace.
no lo encontre cuando buscaba.hay tantas respuestas que aveces es dificil buscar algo especifico.
me va a resultar muy util las directivas del ensamblador:

MENSAJE1:   dt   "HOLA"

te ahorras mucho tiempo en escribir codigo.

ya hace tiempo use el metodo de conmutar el registro PCLATH.pero solo lo hacia al principio de las tablas y en el principio de los bancos.
nunca se me ocurrio hacer la conmutacion automaticamente al pasar de un sector a otro.

aqui se consigue crear tablas larguisimas.como hemos visto en el codigo.

la unica precaucion que se debe tener,es cargar el valor del sector donde esta hubicada la tabla.esto hay que hacerlo antes de realizar la llamada a la tabla.
tal y como indico en las siguientes lineas del programa:

PRINCIPAL      movlw   0x00         ;sector donde esta la tabla ubicada(muy importante)
            movwf   PCLATH
sigue         call   TABLA         ;salto a TABLA


Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: tablas gigantes
« Respuesta #5 en: 24 de Julio de 2010, 13:48:38 »
Hola groundman. Yo en su momento creo que hice algo así. Revisando me di cuenta que los ejemplos del link que te pasé son para tablas de hasta 256 elementos. Acá hago la ampliación mencionada. No está probado, pero es fácil de entender creo, y no tiene restricciones más allá de las impuestas por el hard físico.

Código: ASM
  1. cblock 0x20
  2.                  INDICEL, INDICEH
  3.               endc
  4.  
  5. INICIO
  6.               ...
  7.               clrf         INDICEH
  8.               clrf         INDICEL
  9.  
  10. PROX_ELE
  11.               call         LeerTabla
  12.               xorlw      0x00                        
  13.               btfsc       STATUS,Z                ;elemento leido = 0x00?
  14.               goto       $                             ;tabla recorrida completamente. nada mas que hacer
  15.  
  16.               movwf   PORTB
  17.               incfsz     INDICEL,F
  18.               goto       PROX_ELE
  19.            
  20.               incf        INDICEH,F
  21.               goto       PROX_ELE
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29. LeerTabla
  30.               movlw    high TABLA
  31.               addwf     INDICEH,W
  32.               movwf    PCLATH
  33.  
  34.               movlw    low  TABLA
  35.               addwf     INDICEL,W
  36.               btfsc       STATUS,C
  37.               incf         PCLATH,F
  38.  
  39.               movwf    PCL                                   ;realizar el computed goto...
  40.  
  41.               org 0x1FD                                       ;la tabla puede comenzar donde se nos plazca, sin restricciones siempre y cuando entre en la ROM.
  42. TABLA
  43.           dt "HOLA FORO TODOPIC!", 0
"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 tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: tablas gigantes
« Respuesta #6 en: 24 de Julio de 2010, 14:40:45 »
Citar
otra cosa que me ha ocurrido.y que no se que puede ser,es que no puedo meter ningun dato en la direccion 1024 de la memoria de programa.
supongo que estara ocupada para algo interno del pic.


Si este PIC tiene 1KB solo llega a la posicion 1023 no? La 1024 no existe no?

Nunca he hecho una tabla tan grande, espero no tener que hacerla nunca, ¡¡que pereza!!, pero gracias Groundman, cuando la necesite ya se donde esta

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: tablas gigantes
« Respuesta #7 en: 24 de Julio de 2010, 15:21:37 »
es verdad tapi8.no habia caido en eso.como en el compilador aparece esa direccion no lo he tenido en cuenta.

BrunoF,no entiendo estas lineas:

movlw    high TABLA y movlw    low  TABLA

por lo demas funciona perfectamente.aunque tambien hay que poner un org 0x300 en el mismo sitio donde bayamos a continuar la tabla.
igual que pasa en mi codigo.
« Última modificación: 24 de Julio de 2010, 16:13:20 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: tablas gigantes
« Respuesta #8 en: 24 de Julio de 2010, 16:51:57 »
Hola. high y low son dos palabras reservadas del MPASM, que sirven para poder diferencia a qué byte de un valor constante queremos acceder.

TABLA es un label, que va a ser ubicado en una determinada posición dentro de la ROM. En el ejemplo dado, TABLA sería un label con valor 0x1FD. Por lo que en el ejemplo:

movlw high TABLA sería reemplazado por el MPASM a: movlw 0x01 y movlw low TABLA a movlw 0xFD.

A que te referis con "continuar" la tabla? El ejemplo que dí es sólo una tabla que acepta, en teoría, hasta 65536 elementos consecutivos sin cortes. Tampoco hay que poner ningun org 0x300 ni ningún ORG en absoluto para ubicar la tabla. Al org 0x1FD lo puse sólo para demostrar que no había problemas tampoco en cruzar páginas. Podés omitir el ORG de la tabla en mi ejemplo y vas a ver que debería funcionar sin problemas igualmente.

Saludos.
« Última modificación: 24 de Julio de 2010, 16:54:01 por BrunoF »
"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 groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: tablas gigantes
« Respuesta #9 en: 24 de Julio de 2010, 18:08:22 »
he realizado un proyecto con tu programa para que veas el error.

si pones una tabla cruzando por la direccion 0x300.lo veras.
voy a ver si me deja adjuntar el archivo.antes me dio un fallo.de que habia que aceptar un programa que queria acceder.dw.exe

no se lo que es y no me fio.prueva y veras el fallo que te digo.el pic es el 12F675.
« Última modificación: 24 de Julio de 2010, 18:19:27 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: tablas gigantes
« Respuesta #10 en: 24 de Julio de 2010, 19:00:41 »
Hola.

He abierto el ejemplo que has publicado y funciona correctamente. Se supone que tengo que modificar algo para que falle?

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.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: tablas gigantes
« Respuesta #11 en: 24 de Julio de 2010, 19:15:27 »
si.quitar el org 0x300 de entremedio de las tablas.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: tablas gigantes
« Respuesta #12 en: 24 de Julio de 2010, 19:28:22 »
Eso no es problema del algoritmo, sino del modo debug de construcción indicado por el Linker.

Andá a Project -> Build Configuration -> Release y volvé a intentar.
"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 groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: tablas gigantes
« Respuesta #13 en: 25 de Julio de 2010, 11:25:29 »
sabia que no hera problema del algoritmo.pero no sabia que tenia que poner el compilador en modo Release.

no uso mucho la seleccion del modo Release o debug.solo se que se usa para la terminacion del proyecto.es decir para que el proyecto final no ocupe mucha memoria.al no incluir algunos archivos.pero poco mas se.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: tablas gigantes
« Respuesta #14 en: 25 de Julio de 2010, 13:21:34 »
Bueno,  espero te haya servido. Yo tampoco sabía por qué era el error, pero leyendolo parecía estar relacionado al debug.  :mrgreen:

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.


 

anything