Você está na página 1de 3

/ GERADOR DE SINAIS PARA MEA - MATRIZ MULTI ELETRODO //

// Data:
29/Outubro/2012 //
// Gera formas de Onda para testes em
MEA60 //
// Usado com Microcontrolador PIC12F683 - Compilador CCS
PCWH //
// prof. Francisco
Fambrini //
// prof. Dr. José Hiroki
Saito //
// Ultima rev. =
29/Outubro/2012 //
// Francisco
Fambrini //
// versão
2.0 //
//****************************************************************/
/
#include <12f683.h>
#use delay(clock=8000000)
#zero_ram
#use rs232( baud=9600, xmit=PIN_A5, rcv=PIN_A1 )
#fuses intrc_io, NOWDT, PUT, NOPROTECT, NOMCLR
#use fast_io(A)

//fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
f
// Gera a função SENO com 50 pontos por ciclo
byte const Tabela[50] ={52,57,62,66,70,74,77,80,82,84,
85,86,86,86,85,83,81,78,75,72,
69,65,61,56,52,48,44,39,35,31,
28,25,22,19,17,15,14,14,14,15,
16,18,20,23,26,30,34,38,43,48
};

//---- Hippocampal Slice Population Spike


-------------------------------------
/*
byte const Tabela[50] = { 86,86,86,86,86,86,86,86,86,86,

0,0,80,85,90,100,72,160,170,163,

155,140,92,130,142,145,140,138,136,132,
131,130,129,127,

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
*/
//-----------------------------------------------------------------
-------------

// Variaveis e constantes
int m=0;
#bit t0if=0x0b.2
int w_temp, status_temp;
#byte status = 0x03
//-----------------------------------------------------------------
-------------
#inline
void trata_t0( ){
m++;
if (m>=50) m=0;
set_timer0(131);
t0if=0;
}
//-----------------------------------------------------------------
-------------

//-----------------------------------------------------------------
-------------
void salva_contexto(){
//salva os registradores que podem ser alterados durante a
interrupção
#asm
movwf w_temp
swapf status,w
movwf status_temp
#endasm
}
//-----------------------------------------------------------------
-------------
void restaura_contexto(){
#asm
swapf status_temp,w
movwf status
swapf w_temp,f
swapf w_temp,w
#endasm
}
//-----------------------------------------------------------------
-------------

//-----------------------------------------------------------------
-------------
#int_global
void trata_int(){
salva_contexto();
if (t0if) trata_t0();
restaura_contexto( );
}
//-----------------------------------------------------------------
-------------
void main(){
setup_oscillator(OSC_8MHZ);
OUTPUT_A(0);
SET_TRIS_A(0b00001000);

//AJUSTE DO CONVERSOR AD INTERNO


SETUP_ADC(ADC_CLOCK_INTERNAL);
SETUP_ADC_PORTS(sAN3);
//SETUP_ADC_PORTS(AN3_ANALOG);
SET_ADC_CHANNEL(3);
// PWM AJUSTADO PARA GERAR PULSOS A 5 KHZ
SETUP_TIMER_2 ( T2_DIV_BY_1 ,200, 1 );
SETUP_CCP1(CCP_PWM);
SET_PWM1_DUTY(0) ;

//configura o TMR0 para gerar interrupções


setup_timer_0 (rtcc_internal | rtcc_div_64);
set_timer0(131);
enable_interrupts(global | int_timer0 );

//Loop Principal
while(TRUE){

SET_PWM1_DUTY( Tabela[m] );

/*
media =0 ;

for(i=0; i< 7; i++){


x = READ_ADC();
delay_ms(2);
media = media + x ;
}

media=media/8;

m = (int) media;

printf("N=%u ",m);
*/

}//while(1)
}//main

Você também pode gostar