Infomación del archivo hex

Hola:

Quiero aprender bien como sacar información de un archivo de un PIC.

En este caso el PIC12F629, tiene su datasheet al castellano y todo.

Como no tengo el código fuente. Quiero sacarlo yo mismo en ASM que no me queda otra.
12f269-183678.JPG


Código:
  0x0000 : 0x284F   goto    0x4F
  0x0001 : 0x3FFF   Data    0x3FFF      ; ? 
  0x0002 : 0x3FFF   Data    0x3FFF      ; ? 
  0x0003 : 0x3FFF   Data    0x3FFF      ; ? 
  0x0004 : 0x03A4   decf    0x24 , F
  0x0005 : 0x110B   bcf     0x0B , 2
  0x0006 : 0x0009   retfie 
  0x0007 : 0x3002   movlw   0x02
  0x0008 : 0x2810   goto    0x10
  0x0009 : 0x3007   movlw   0x07
  0x000A : 0x2810   goto    0x10
  0x000B : 0x3050   movlw   0x50
  0x000C : 0x2810   goto    0x10
  0x000D : 0x30A0   movlw   0xA0
  0x000E : 0x2810   goto    0x10
  0x000F : 0x3010   movlw   0x10
  0x0010 : 0x00A4   movwf   0x24
  0x0011 : 0x3007   movlw   0x07
  0x0012 : 0x2818   goto    0x18
  0x0013 : 0x3002   movlw   0x02
  0x0014 : 0x2816   goto    0x16
  0x0015 : 0x3004   movlw   0x04
  0x0016 : 0x00A4   movwf   0x24
  0x0017 : 0x3000   movlw   0x00
  0x0018 : 0x1683   bsf     0x03 , 5
  0x0019 : 0x0081   movwf   0x01
  0x001A : 0x1283   bcf     0x03 , 5
  0x001B : 0x178B   bsf     0x0B , 7
  0x001C : 0x0824   movf    0x24 , W
  0x001D : 0x1D03   btfss   0x03 , 2
  0x001E : 0x281C   goto    0x1C
  0x001F : 0x138B   bcf     0x0B , 7
  0x0020 : 0x0008   return 
  0x0021 : 0x00A2   movwf   0x22
  0x0022 : 0x01A4   clrf    0x24
  0x0023 : 0x0DA3   rlf     0x23 , F
  0x0024 : 0x2031   call    0x31
  0x0025 : 0x0DA3   rlf     0x23 , F
  0x0026 : 0x2034   call    0x34
  0x0027 : 0x0DA3   rlf     0x23 , F
  0x0028 : 0x2034   call    0x34
  0x0029 : 0x0DA2   rlf     0x22 , F
  0x002A : 0x2034   call    0x34
  0x002B : 0x0AA4   incf    0x24 , F
  0x002C : 0x1DA4   btfss   0x24 , 3
  0x002D : 0x2829   goto    0x29
  0x002E : 0x2041   call    0x41
  0x002F : 0x01A3   clrf    0x23
  0x0030 : 0x2815   goto    0x15
  0x0031 : 0x1C03   btfss   0x03 , 0
  0x0032 : 0x2845   goto    0x45
  0x0033 : 0x2846   goto    0x46
  0x0034 : 0x1C03   btfss   0x03 , 0
  0x0035 : 0x283D   goto    0x3D
  0x0036 : 0x2841   goto    0x41
  0x0037 : 0x1805   btfsc   0x05 , 0
  0x0038 : 0x2837   goto    0x37
  0x0039 : 0x0008   return 
  0x003A : 0x1C05   btfss   0x05 , 0
  0x003B : 0x283A   goto    0x3A
  0x003C : 0x0008   return 
  0x003D : 0x2037   call    0x37
  0x003E : 0x1085   bcf     0x05 , 1
  0x003F : 0x203A   call    0x3A
  0x0040 : 0x0008   return 
  0x0041 : 0x2037   call    0x37
  0x0042 : 0x1485   bsf     0x05 , 1
  0x0043 : 0x203A   call    0x3A
  0x0044 : 0x0008   return 
  0x0045 : 0x1085   bcf     0x05 , 1
  0x0046 : 0x1805   btfsc   0x05 , 0
  0x0047 : 0x2846   goto    0x46
  0x0048 : 0x0008   return 
  0x0049 : 0x1A85   btfsc   0x05 , 5
  0x004A : 0x2849   goto    0x49
  0x004B : 0x0008   return 
  0x004C : 0x1E85   btfss   0x05 , 5
  0x004D : 0x284C   goto    0x4C
  0x004E : 0x0008   return 
  0x004F : 0x1683   bsf     0x03 , 5
  0x0050 : 0x23FF   call    0x3FF
  0x0051 : 0x0090   movwf   0x10
  0x0052 : 0x1283   bcf     0x03 , 5
  0x0053 : 0x3007   movlw   0x07
  0x0054 : 0x0099   movwf   0x19
  0x0055 : 0x1683   bsf     0x03 , 5
  0x0056 : 0x30FD   movlw   0xFD
  0x0057 : 0x0085   movwf   0x05
  0x0058 : 0x3001   movlw   0x01
  0x0059 : 0x0081   movwf   0x01
  0x005A : 0x30FF   movlw   0xFF
  0x005B : 0x0095   movwf   0x15
  0x005C : 0x1283   bcf     0x03 , 5
  0x005D : 0x168B   bsf     0x0B , 5
  0x005E : 0x01A3   clrf    0x23
  0x005F : 0x1485   bsf     0x05 , 1
  0x0060 : 0x200F   call    0x0F
  0x0061 : 0x2078   call    0x78
  0x0062 : 0x200F   call    0x0F
  0x0063 : 0x2868   goto    0x68
  0x0064 : 0x200B   call    0x0B
  0x0065 : 0x200B   call    0x0B
  0x0066 : 0x200B   call    0x0B
  0x0067 : 0x200B   call    0x0B
  0x0068 : 0x207C   call    0x7C
  0x0069 : 0x2009   call    0x09
  0x006A : 0x2076   call    0x76
  0x006B : 0x1A85   btfsc   0x05 , 5
  0x006C : 0x286B   goto    0x6B
  0x006D : 0x1E85   btfss   0x05 , 5
  0x006E : 0x286D   goto    0x6D
  0x006F : 0x207C   call    0x7C
  0x0070 : 0x2009   call    0x09
  0x0071 : 0x207A   call    0x7A
  0x0072 : 0x2864   goto    0x64
  0x0073 : 0x01A3   clrf    0x23
  0x0074 : 0x1485   bsf     0x05 , 1
  0x0075 : 0x0008   return 
  0x0076 : 0x30AF   movlw   0xAF
  0x0077 : 0x2821   goto    0x21
  0x0078 : 0x3084   movlw   0x84
  0x0079 : 0x2821   goto    0x21
  0x007A : 0x3004   movlw   0x04
  0x007B : 0x2821   goto    0x21
  0x007C : 0x3090   movlw   0x90
  0x007D : 0x2821   goto    0x21
El principio del código dice:

Colum1 Colum2 Colum3 Colum4
0x0000 : 0x284F goto 0x4F
Es un Goto. ¿Dónde tengo que ir? Más bien. ¿En qué columna me tengo que fijar en el código de arriba? ¿En Colum1 o en Colum2?

Un saludo.
 

Adjuntos

  • SyncRF360.zip
    716 bytes · Visitas: 14
No se de pic, pero debe ser en la primera columna, la segunda se me hace que ha de ser el codigo de la instruccion, porque si te das cuenta se repiten algunos valores en esa columna.
 
Hola:

Eso estoy viendo, estoy haciendo algunos ejemplos con MPLAB X v1.00.

Dentro de un rato publico si es así parte del código.

Un saludo.

Edito:
Sigo scando info en el INC que viene en el MPLAB.
Código:
        LIST

;==========================================================================
;  MPASM PIC12F629 processor include
; 
;  (c) Copyright 1999-2011 Microchip Technology, All rights reserved
;==========================================================================

        NOLIST

;==========================================================================
;  This header file defines configurations, registers, and other useful
;  bits of information for the PIC12F629 microcontroller.  These names
;  are taken to match the data sheets as closely as possible.
;
;  Note that the processor must be selected before this file is included.
;  The processor may be selected the following ways:
;
;       1. Command line switch:
;               C:\MPASM MYFILE.ASM /PIC12F629
;       2. LIST directive in the source file
;               LIST   P=PIC12F629
;       3. Processor Type entry in the MPASM full-screen interface
;       4. Setting the processor in the MPLAB Project Dialog
;==========================================================================

;==========================================================================
;
;       Verify Processor
;
;==========================================================================
        IFNDEF __12F629
           MESSG "Processor-header file mismatch.  Verify selected processor."
        ENDIF



;==========================================================================
;
;       Register Definitions
;
;==========================================================================

W                EQU  H'0000'
F                EQU  H'0001'

;----- Register Files -----------------------------------------------------

;-----Bank0------------------
INDF             EQU  H'0000'
TMR0             EQU  H'0001'
PCL              EQU  H'0002'
STATUS           EQU  H'0003'
FSR              EQU  H'0004'
GPIO             EQU  H'0005'
PCLATH           EQU  H'000A'
INTCON           EQU  H'000B'
PIR1             EQU  H'000C'
TMR1L            EQU  H'000E'
TMR1H            EQU  H'000F'
T1CON            EQU  H'0010'
CMCON            EQU  H'0019'

;-----Bank1------------------
OPTION_REG       EQU  H'0081'
TRISIO           EQU  H'0085'
PIE1             EQU  H'008C'
PCON             EQU  H'008E'
OSCCAL           EQU  H'0090'
WPU              EQU  H'0095'
IOC              EQU  H'0096'
IOCB             EQU  H'0096'
VRCON            EQU  H'0099'
EEDAT            EQU  H'009A'
EEDATA           EQU  H'009A'
EEADR            EQU  H'009B'
EECON1           EQU  H'009C'
EECON2           EQU  H'009D'

;----- STATUS Bits -----------------------------------------------------
C                EQU  H'0000'
DC               EQU  H'0001'
Z                EQU  H'0002'
NOT_PD           EQU  H'0003'
NOT_TO           EQU  H'0004'
IRP              EQU  H'0007'

RP0              EQU  H'0005'
RP1              EQU  H'0006'


;----- GPIO Bits -----------------------------------------------------
GP0              EQU  H'0000'
GP1              EQU  H'0001'
GP2              EQU  H'0002'
GP3              EQU  H'0003'
GP4              EQU  H'0004'
GP5              EQU  H'0005'

GPIO0            EQU  H'0000'
GPIO1            EQU  H'0001'
GPIO2            EQU  H'0002'
GPIO3            EQU  H'0003'
GPIO4            EQU  H'0004'
GPIO5            EQU  H'0005'


;----- INTCON Bits -----------------------------------------------------
GPIF             EQU  H'0000'
INTF             EQU  H'0001'
T0IF             EQU  H'0002'
GPIE             EQU  H'0003'
INTE             EQU  H'0004'
T0IE             EQU  H'0005'
PEIE             EQU  H'0006'
GIE              EQU  H'0007'

TMR0IF           EQU  H'0002'
TMR0IE           EQU  H'0005'


;----- PIR1 Bits -----------------------------------------------------
TMR1IF           EQU  H'0000'
CMIF             EQU  H'0003'
ADIF             EQU  H'0006'
EEIF             EQU  H'0007'

T1IF             EQU  H'0000'


;----- T1CON Bits -----------------------------------------------------
TMR1ON           EQU  H'0000'
TMR1CS           EQU  H'0001'
NOT_T1SYNC       EQU  H'0002'
T1OSCEN          EQU  H'0003'
TMR1GE           EQU  H'0006'

T1CKPS0          EQU  H'0004'
T1CKPS1          EQU  H'0005'


;----- CMCON Bits -----------------------------------------------------
CIS              EQU  H'0003'
CINV             EQU  H'0004'
COUT             EQU  H'0006'

CM0              EQU  H'0000'
CM1              EQU  H'0001'
CM2              EQU  H'0002'


;----- OPTION_REG Bits -----------------------------------------------------
PSA              EQU  H'0003'
T0SE             EQU  H'0004'
T0CS             EQU  H'0005'
INTEDG           EQU  H'0006'
NOT_GPPU         EQU  H'0007'

PS0              EQU  H'0000'
PS1              EQU  H'0001'
PS2              EQU  H'0002'


;----- TRISIO Bits -----------------------------------------------------
TRISIO0          EQU  H'0000'
TRISIO1          EQU  H'0001'
TRISIO2          EQU  H'0002'
TRISIO3          EQU  H'0003'
TRISIO4          EQU  H'0004'
TRISIO5          EQU  H'0005'


;----- PIE1 Bits -----------------------------------------------------
TMR1IE           EQU  H'0000'
CMIE             EQU  H'0003'
ADIE             EQU  H'0006'
EEIE             EQU  H'0007'

T1IE             EQU  H'0000'


;----- PCON Bits -----------------------------------------------------
NOT_BOR          EQU  H'0000'
NOT_POR          EQU  H'0001'

NOT_BOD          EQU  H'0000'


;----- OSCCAL Bits -----------------------------------------------------
CAL0             EQU  H'0002'
CAL1             EQU  H'0003'
CAL2             EQU  H'0004'
CAL3             EQU  H'0005'
CAL4             EQU  H'0006'
CAL5             EQU  H'0007'


;----- WPU Bits -----------------------------------------------------
WPU0             EQU  H'0000'
WPU1             EQU  H'0001'
WPU2             EQU  H'0002'
WPU4             EQU  H'0004'
WPU5             EQU  H'0005'


;----- IOC Bits -----------------------------------------------------
IOC0             EQU  H'0000'
IOC1             EQU  H'0001'
IOC2             EQU  H'0002'
IOC3             EQU  H'0003'
IOC4             EQU  H'0004'
IOC5             EQU  H'0005'

IOCB0            EQU  H'0000'
IOCB1            EQU  H'0001'
IOCB2            EQU  H'0002'
IOCB3            EQU  H'0003'
IOCB4            EQU  H'0004'
IOCB5            EQU  H'0005'


;----- IOCB Bits -----------------------------------------------------
IOC0             EQU  H'0000'
IOC1             EQU  H'0001'
IOC2             EQU  H'0002'
IOC3             EQU  H'0003'
IOC4             EQU  H'0004'
IOC5             EQU  H'0005'

IOCB0            EQU  H'0000'
IOCB1            EQU  H'0001'
IOCB2            EQU  H'0002'
IOCB3            EQU  H'0003'
IOCB4            EQU  H'0004'
IOCB5            EQU  H'0005'


;----- VRCON Bits -----------------------------------------------------
VRR              EQU  H'0005'
VREN             EQU  H'0007'

VR0              EQU  H'0000'
VR1              EQU  H'0001'
VR2              EQU  H'0002'
VR3              EQU  H'0003'


;----- EECON1 Bits -----------------------------------------------------
RD               EQU  H'0000'
WR               EQU  H'0001'
WREN             EQU  H'0002'
WRERR            EQU  H'0003'



;==========================================================================
;
;       RAM Definitions
;
;==========================================================================
       __MAXRAM  H'00DF'
       __BADRAM  H'0006'-H'0009'
       __BADRAM  H'000D'
       __BADRAM  H'0011'-H'0018'
       __BADRAM  H'001A'-H'001F'
       __BADRAM  H'0060'-H'007F'
       __BADRAM  H'0086'-H'0089'
       __BADRAM  H'008D'
       __BADRAM  H'008F'
       __BADRAM  H'0091'-H'0094'
       __BADRAM  H'0097'-H'0098'
       __BADRAM  H'009E'-H'009F'

;==========================================================================
;
;       Configuration Bits
;
;   NAME            Address
;   CONFIG            2007h
;
;==========================================================================

; The following is an assignment of address values for all of the
; configuration registers for the purpose of table reads
_CONFIG          EQU  H'2007'

;----- CONFIG Options --------------------------------------------------
_FOSC_LP             EQU  H'3FF8'    ; LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_LP_OSC              EQU  H'3FF8'    ; LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_XT             EQU  H'3FF9'    ; XT oscillator: Crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_XT_OSC              EQU  H'3FF9'    ; XT oscillator: Crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_HS             EQU  H'3FFA'    ; HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_HS_OSC              EQU  H'3FFA'    ; HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_EC             EQU  H'3FFB'    ; EC: I/O function on GP4/OSC2/CLKOUT pin, CLKIN on GP5/OSC1/CLKIN
_EC_OSC              EQU  H'3FFB'    ; EC: I/O function on GP4/OSC2/CLKOUT pin, CLKIN on GP5/OSC1/CLKIN
_FOSC_INTRCIO        EQU  H'3FFC'    ; INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_INTRC_OSC_NOCLKOUT  EQU  H'3FFC'    ; INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_FOSC_INTRCCLK       EQU  H'3FFD'    ; INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_INTRC_OSC_CLKOUT    EQU  H'3FFD'    ; INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_FOSC_EXTRCIO        EQU  H'3FFE'    ; RC oscillator: I/O function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_EXTRC_OSC_NOCLKOUT  EQU  H'3FFE'    ; RC oscillator: I/O function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_FOSC_EXTRCCLK       EQU  H'3FFF'    ; RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_EXTRC_OSC_CLKOUT    EQU  H'3FFF'    ; RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN

_WDTE_OFF            EQU  H'3FF7'    ; WDT disabled
_WDT_OFF             EQU  H'3FF7'    ; WDT disabled
_WDTE_ON             EQU  H'3FFF'    ; WDT enabled
_WDT_ON              EQU  H'3FFF'    ; WDT enabled

_PWRTE_ON            EQU  H'3FEF'    ; PWRT enabled
_PWRTE_OFF           EQU  H'3FFF'    ; PWRT disabled

_MCLRE_OFF           EQU  H'3FDF'    ; GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD
_MCLRE_ON            EQU  H'3FFF'    ; GP3/MCLR pin function is MCLR

_BOREN_OFF           EQU  H'3FBF'    ; BOD disabled
_BODEN_OFF           EQU  H'3FBF'    ; BOD disabled
_BOREN_ON            EQU  H'3FFF'    ; BOD enabled
_BODEN_ON            EQU  H'3FFF'    ; BOD enabled

_CP_ON               EQU  H'3F7F'    ; Program Memory code protection is enabled
_CP_OFF              EQU  H'3FFF'    ; Program Memory code protection is disabled

_CPD_ON              EQU  H'3EFF'    ; Data memory code protection is enabled
_CPD_OFF             EQU  H'3FFF'    ; Data memory code protection is disabled

;----- DEVID Equates --------------------------------------------------
_DEVID1          EQU  H'2006'

;----- IDLOC Equates --------------------------------------------------
_IDLOC0          EQU  H'2000'
_IDLOC1          EQU  H'2001'
_IDLOC2          EQU  H'2002'
_IDLOC3          EQU  H'2003'

        LIST
 
Última edición:
Ya salió.
Código:
;**********************************************************************
;   This file is a basic code template for assembly code generation   *
;   on the PIC12F629. This file contains the basic code               *
;   building blocks to build upon.                                    *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler (Document DS33014).                     *
;                                                                     *
;   Refer to the respective PIC data sheet for additional             *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:       xxx.asm                                           *
;    Date:                                                            *
;    File Version:                                                    *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files Required: P12F629.INC                                      *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;**********************************************************************

   list      p=12f629           ; list directive to define processor
   #include <p12f629.inc>        ; processor specific variable definitions

   errorlevel  -302              ; suppress message 302 from list file

   __CONFIG    0x3FD4

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See data sheet for additional information on configuration word settings.

    CBLOCK  0x15
    ENDC


;***** VARIABLE DEFINITIONS





;**********************************************************************
    ORG 0
    BSF STATUS,RP0
    CALL 0x3ff
    MOVWF T1CON
    BCF STATUS,RP0
    MOVLW 0x7
    MOVWF CMCON
    BSF STATUS,RP0
    MOVLW 0xfd
    MOVWF GPIO
    MOVLW 0x1
    MOVWF TMR0
    MOVLW 0xff
    MOVWF 0x15
    BCF STATUS,RP0
    BSF INTCON,T0IE
    CLRF 0x23
    BSF GPIO,GPIO1
    CALL 0xf
    CALL 0x78
    CALL 0xf
    GOTO 0x68
    CALL 0xb
    CALL 0xb
    CALL 0xb
    CALL 0xb
    CALL 0x7c
    CALL 0x9
    CALL 0x76
    BTFSC GPIO,GPIO5
    GOTO 0x6b
    BTFSS GPIO,GPIO5
    GOTO 0x6d
    CALL 0x7c
    CALL 0x9
    CALL 0x7a
    GOTO 0x64
    CLRF 0x23
    BSF GPIO,GPIO1
    RETURN
    MOVLW 0xaf
    GOTO 0x21
    MOVLW 0x84
    GOTO 0x21
    MOVLW 0x4
    GOTO 0x21
    MOVLW 0x90
    GOTO 0x21

 end

No del todo. Me falta saber cuanto MHz usa el oscildor interno.
 
Si se pueden convertir los .hex a asm?

En realidad HEX es lo mismo que ASM, solo que el primero solo son numeros hexadecimales y el segundo es el equivalente nemonico que se le da para que podamos entenderlo mas facilmente

Recuerdo cuando programabamos para el 8051, como no teniamos compiladores nos acostumbramos a leer el HEX como si estuvieramos leyendo un libro... :D
 
En realidad HEX es lo mismo que ASM, solo que el primero solo son numeros hexadecimales y el segundo es el equivalente nemonico que se le da para que podamos entenderlo mas facilmente

Recuerdo cuando programabamos para el 8051, como no teniamos compiladores nos acostumbramos a leer el HEX como si estuvieramos leyendo un libro... :D

:eek: Que loco!!!

Si con el puro asm te vuelves medio loco cuando quieres corregir un error y tienes que revisar 100 paginas, no quiero ni imaginar eso de tener que desmenuzar el codigo hex.

Pues de epoca estamos hablando???? :LOL: Ya que solo a las mujeres no se les pregunta la edad!!!
 
Atrás
Arriba