#include <18F2520.h>
#use delay(clock=32000000, restart_wdt)
#fuses NOMCLR,WDT,WDT8,NOBROWNOUT,PUT,NOLVP,CPB,CPD,PROTECT,NOWRT
#use rs232(BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,ENABLE=PIN_C5,PARITY=N,ERRORS)
//#use SPI(
// DO = PIN_C5,
// DI = PIN_C4,
// CLK = PIN_A5,
// baud = 9600,
// BITS = 24,
// LSB_FIRST,
// SAMPLE_RISE,
// stream = SPI_PORT0
//)
// Port ve Pin Tanımlamaları ===================================================
#byte PORTA = 0xF80
#byte PORTB = 0xF81
#byte PORTC = 0xF82
#bit CS = PORTA.5
#bit SECIM_1 = PORTA.0
#bit SECIM_2 = PORTA.1
#bit BUZZER = PORTC.0
#define DEVICE 2
void main(void)
{
int16 k;
int i,x;
int32 data,rc_data;
//---------------------------------------------------------------------------
setup_oscillator(OSC_32MHZ);
restart_wdt();
set_tris_a(0x0F);
set_tris_b(0xFF);
set_tris_c(0x00);
enable_interrupts(global);
enable_interrupts(int_rda);
restart_wdt();
PORTA = 0;
PORTB = 0;
PORTC = 0;
#if DEVICE==1
SETUP_SPI(SPI_MASTER | SPI_CLK_DIV_4);
#else
SETUP_SPI(SPI_SLAVE | SPI_CLK_DIV_4);
#endif
// disable_interrupts(GLOBAL);
restart_wdt();
while(1)
{
#if DEVICE==1
if(SECIM_1)
data=0xFFFFFC;
else if(SECIM_2)
data=0xFFFFFF;
else
data=0x000000;
x=data;
spi_write(x);
data=data>>8;
x=data;
spi_write(x);
data=data>>8;
x=data;
spi_write(x);
// spi_write(data);
#else
// rc_data = spi_read();
k++;
if(k>65534)
{
rc_data=0;
x=spi_read(0);
rc_data=x;
x=spi_read(0);
rc_data=rc_data<<8;
rc_data|=x;
x=spi_read(0);
rc_data=rc_data<<8;
rc_data|=x;
}
if(rc_data==0xFFFFFC)
BUZZER=1;
else
BUZZER=0;
#endif
restart_wdt();
}
}