Hola,
Estoy tratando de hacer un circuito simple con Pic16F88. Se trata de comparar la tension leida en el canal AN0, y si pasa de cierto valor, que se apague el led en B0. El codigo es el siguiente:
Fichero cabecera:
Main:
Si alguien puede darme alguna pista...
Disculpar se me habi olvidado comentar que no funciona
Estoy tratando de hacer un circuito simple con Pic16F88. Se trata de comparar la tension leida en el canal AN0, y si pasa de cierto valor, que se apague el led en B0. El codigo es el siguiente:
Fichero cabecera:
Código:
#include <16F88.h>
#device adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC //Internal RC Osc
#FUSES PUT //Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES DEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES RESERVED //Used to set the reserved FUSE bits
#use delay(clock=8000000)
#define LED1 PIN_B0
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)
Main:
Código:
#include "C:\Documents and Settings\PIC\Shock_Switch.h"
#byte PORTB = 0x06
#byte PORTA = 0x05
void main()
{
setup_adc_ports(sAN0|sAN1|sAN2|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_8MHZ|OSC_INTRC);
// TODO: USER CODE!!
unsigned int16 tensionX=0;
unsigned int16 poti=100;
set_tris_b(0x00); //0b0000000// Configuramos el puerto B como salida.
PORTB=0b00000000;
while(true)
{
PORTB=0b00000001;
set_adc_channel(0); //elegimos el canal que vamos a leer.
delay_us(10); // esperamos 10uS necesarios para el ADC.
tensionX = read_adc();//leemos el valor del eje x del acelerometro.
delay_ms(1);
//set_adc_channel(2); //elegimos el canal que vamos a leer.
//delay_us(10); // esperamos 10uS necesarios para el ADC.
//tensionY = read_adc();//leemos el valor del eje y del acelerometro.
//delay_us(10);
while(tensionX > poti)
{
PORTB=0b00000000;
//delay_ms(1000);
//PORTB=0b00000000;
//delay_ms(1000);
//PORTB=0b00000001;
//delay_ms(1000);
}
}
}
Si alguien puede darme alguna pista...
Disculpar se me habi olvidado comentar que no funciona