Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/11/2012 #1


Problema compilando programa facil en PIC12F675
Hola a todos, les escribo porque estoy empezando a usar los PIC12F675, y hace mucho que no programo asi que estoy empezando de nuevo...

La cuestion es que hice un programa para "dejar encendido un led en el puerto GP1" (más fácil no podía ser).

Estoy usando el MPLAB IDE v8.36 (es nuevo para mi porque antes usaba el MPLAB 4), y el programa que escribí es el siguiente:

Código:
;define el PIC
    list p=12f675
    #include <p12f675.inc>
    __CONFIG    _MCLRE_ON & _CP_OFF & _WDT_OFF

;calibración del RC interno
    bsf STATUS, RP0    ;Bank 1
    call 3FFh          ;Get the cal value
    movwf OSCCAL       ;Calibrate
    bcf STATUS, RP0    ;Bank 0

;programacion de entradas y salidas
    movlw    b'111101'
    tris    GPIO

inicio    movlw    b'000010'
    movwf    GPIO
    goto    inicio

    END
El problema surge al compilarlo, pues me dice Error[152] por todos lados, en todas las líneas.

El parrafo de calibracion del RC interno lo saque del datasheet.

Alguno tiene idea de que puede ser?
13/11/2012 #2


Creo que te falto especificar la direccion en donde el compilador debe colocar el programa, es decir debes incluir las instrucciones "code 0x000" o "org 0x000". Te dejo el "hola mundo" para que lo compares.

Código:
    list p = 12F675                 ; directiva para definir microprocesador
   #include <P12F675.INC>          ; incluye definiciones del micro
   errorlevel -302                 ; suprime mensajes "banksel warning"

   __config _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOREN_OFF & _CPD_OFF & _FOSC_INTRCIO

   #define   Bank0   bcf  STATUS, RP0     ; selecciona Bank0 o Bank1
   #define   Bank1   bsf  STATUS, RP0

   CBLOCK  0x20    ; Asigna registros en el area RAM - Bank0
      Delay1       ; Define 2 variables de 8-bits para la rutina de retraso
      Delay2       ;
   ENDC            ; Termina asignacion en memoria RAM

; etiquetas para la subrutina de retrasos
Value1 EQU 0xFF
Value2 EQU 0xFF

; calibracion del oscilador interno
RCCAL:  code    0x3FF      ; direccion de reset del procesador
        res     1          ; guarda el byte de configuracion en w

RESET:  code    0x000      ; direccion del vector de reset efectivo
        movwf   OSCCAL     ; almacena valor de configuracion

        goto    SETUP      ; salto a rutina de configuracion

; subrutina de retraso
DELAY:  movlw  Value1
        movwf  Delay2
Loop1:  movlw  Value2
        movwf  Delay1
Loop2:  decfsz Delay1, f 
        goto   Loop2           
        decfsz Delay2, f        
        goto   Loop1            
        return                  

; seccion de configuracion del micro
SETUP:  Bank0
        movlw   b'000000'       ; inicio con salida = 0
        movwf   GPIO            ;
        movlw   b'00000111'     ; deshabilita comparadores
        movwf   CMCON
        
        Bank1
        movlw   b'00000000'     ; deshabilita ADC - pines son todos digitales
        movwf   ANSEL
        movlw   b'111101'       ; configura GP1 como salida
        movwf   TRISIO          ;

; seccion principal
INICIO: Bank0
        bsf     GPIO, 1
        call    DELAY           ; Llama a la subrutina de retraso
        bcf     GPIO, 1
        call    DELAY           ; Llama a la subrutina de retraso
        goto    INICIO

        END
Saludos
14/11/2012 #3


Si, al final resulto ser eso (el org 0), y también me faltó la librería P12F675.inc que la busqué en internet y la puse en la carpeta del programa..

Muchas gracias por la respuesta!!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.