Comunicación SPI: Maestro
Comunicación SPI: Maestro
Comunicacin SPI
Maestro
#define _LEGACY_HEADERS //Added for compiler versions 9.81+
#include <htc.h>
#include <stdio.h>
#define DS1_on 0b00000001;
#define DS2_on 0b00000011;
#define DS3_on 0b00000111;
#define DS4_on 0b00001111;
#define DS5_on 0b00011111;
#define DS6_on 0b00111111;
#define DS7_on 0b01111111;
#define DS8_on 0b11111111;
int advalue = 0;
int vdsw = 0;
void pause( unsigned short usvalue );
__CONFIG(INTIO & WDTDIS & PWRTDIS & MCLRDIS & UNPROTECT & DUNPROTECT &
BORDIS & IESODIS & FCMDIS & LVPDIS & DEBUGDIS);
__CONFIG(BORV40);
void
main(void)
{
ANSEL = 0;
ANSELH = 0;
TRISA = 0;
// All PORTA Outputs
TRISC = 0b00010000;
TRISB = 0b00000000; //INPUTS
TRISD= 0xFF;
PORTC=0;
PORTA=0b00000000;
PORTB=0b00000000;
PORTD=0b00000000;
SSPCON=0x10;
SSPCON2=0x00;
SSPSTAT=0xC0;
SSPEN=1;
while(1==1)
{
PORTA=0b00000001;
vdsw=PORTD;
SSPBUF=vdsw;
while (!BF);
advalue=SSPBUF;
PORTA=0b00010000;
if (advalue >210)
{
PORTB = DS7_on;
}
if (advalue > 240)
{
PORTB = DS8_on;
}
if (advalue <=30)
{
PORTB = 0;
}
pause(10);
}
}
OPTION = 0x01;
TMR0 = 0xD;
while(!T0IF);
T0IF = 0;
Esclavo
#define _LEGACY_HEADERS //Added for compiler versions 9.81+
#include <htc.h>
#include <stdio.h>
int advalue = 0;
int vadc = 0;
__CONFIG(INTIO & WDTDIS & PWRTDIS & MCLRDIS & UNPROTECT & DUNPROTECT &
BORDIS & IESODIS & FCMDIS & LVPDIS & DEBUGDIS);
__CONFIG(BORV40);
void
main(void)
{
ANSEL =0B11011111;//Puerto A analogico
ANSELH =0;//Puerto B digital
TRISB=0;
ADCON1=0B00110000;
ADCON0=0B00000001;
TRISA = 0b11111111;
TRISC = 0b00011000;
TRISD= 0X00;;
PORTA=0x00;
PORTB=0x00;
SSPCON=0X14;
SSPCON2=0X00;
SSPSTAT=0x40;
SSPEN=1;
ADON=1;
while(1==1)
{
while (!BF);
advalue=SSPBUF;
PORTD=advalue;
GODONE=1;
while(GODONE==1);
{
}
vadc=ADRESH;
SSPBUF=vadc;
}
//end while BF
}
//end while permanente
}
//end main