Autor Tema: XC8-Pic16f88 problema-error asignaciones erroneas a los SFR (Ayuda !)  (Leído 1024 veces)

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

Desconectado nahueldiaz1992

  • PIC12
  • **
  • Mensajes: 75
Buenos dias ,

Estoy teniendo una duda ya que hace poco empece con programacion en pic16f88 en xc8 , antes en assembler , el error que estoy teniendo es el siguiente :

El programa compila bien , pero cuando lo simulo para ver si el programa asigna bien los valores a los registros , el problema se encuentra en los SFR OSCCON , ANSEL , y otros , en cambio para TRISX(A/B) no tiene problema en asignarlo . No tengo idea si el problema solo esta en el simulador del mplabx o si es alguna funcion que me halla olvidado .  hay que declarar el microcontrolador en xc8 ? o ya lo declara el creador de proyectos ?

En este caso , asigno un clock interno a osccon de 2MHz y lo cambia a uno de 125 KHz

Otra consulta , para este micro las librerias de ADC-XC8 no funcionan ? ya que intente las de este foro en el mini curso xc8 y cuando compilo me da error , como si las funciones de la libreria fuesen inexistentes.


Código: [Seleccionar]
/*
 * File:   vumetro2.c
 * Author: nahueldiaz
 *
 * Created on 27 de enero de 2016, 21:20
 */

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>



#define _XTAL_FREQ 2000000

// CONFIG1
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTRC oscillator; port I/O function on both RA6/OSC2/CLKO pin and RA7/OSC1/CLKI pin)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CCPMX = RB0      // CCP1 Pin Selection bit (CCP1 function on RB0)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// CONFIG2
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
#pragma config IESO = ON        // Internal External Switchover bit (Internal External Switchover mode enable

unsigned char high,low;

void main (){
   
    OSCCON = "0b01010000" ;// clock 2MHz
     __delay_ms (10);
   
        TRISA = 0XFF;
        TRISB = 0X00;
        PORTA = 0X00;
        PORTB = 0X00;
       
        ANSEL  = "0b01000001";
        ADCON0 = "0b10000000"; // clock 2 mhz dividido 64 = 31250
        ADCON1 = "0b11000000"; // 32us de tiempo de adquisicion
       
        ADCON0 = "0b10000101" ;
       
        while (1){
        if (ADCON0 = "0b10000101") {
            high = ADRESH;
            low  = ADRESL;
        }
       
        __delay_us (30);
       
        ADCON0 = "0b10000101";
       
               
       
        }}

« Última modificación: 10 de Febrero de 2016, 00:57:59 por nahueldiaz1992 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:XC8-Pic16f88 problema-error asignaciones erroneas a los SFR (Ayuda !)
« Respuesta #1 en: 07 de Febrero de 2016, 21:04:05 »
Empeza por quitarle a todos los valores los ""

Recorda que para C esto: "HOlA" es una string, entonces esto:

OSCCON = "0b01010000" ;// clock 2MHz

deberia ser:

OSCCON = 0b01010000;   // clock 2MHz

Los tris te funcionan por que solo pusiste el numero

A = 0x10 ;           // A = 16 en hexadecimal
A = 0b0001000;   // A = 16 en binario
A = 020;              // A = 16 en octal

char A[10] = "0b0001000"; // es igual a: A[10] = {'0','b','0','0','0','1','0','0','0','0'}

o si lo preferis no en ASCII y en hexadecimal es

 A[10] = {0x30,0x61,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x30}

Citar
#include <stdio.h>
#include <stdlib.h>

No creo que exista necesidad de usarlas... Y si queres acceso a las plib, no se si es necesario agregar el include a plib.h, aunque creo que el xc.h ya los agrega. Pero como dije CREO, no estoy seguro.
« Última modificación: 07 de Febrero de 2016, 21:10:02 por KILLERJC »


 

anything