TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: nahueldiaz1992 en 07 de Febrero de 2016, 20:13:08
-
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.
/*
* 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";
}}
(http://s11.postimg.org/v0gdysdw3/image.jpg)
-
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}
#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.