#include "LF2407REGS.h"
#include "Decode.c"
#define uchar unsigned char
#define uint unsigned int
//#include "scancodes.h"
//unsigned int spibuf = 0;
//unsigned int spibuf_fan=0;
//unsigned int SPI_rxbuf[100];
unsigned int SPI_rxbufindex;
unsigned char SPI_rxbufindex1;
void SPIInit(void)
{
asm(" SETC INTM");
SPICCR = 0x4A; //SPI SW RESET = 0;CLOCK POLARITY = 1;LENTH = 11;
SPICTL = 0x0B; //OVERRUN INT ENA = 1;CLOCK PHASE = 1;TALK = 1;SPI INT ENA = 1;
SPISTS = 0xFF; //CLEAR SPISTS;
SPIPRI = 0x30; //SPI PRIORITY = 1;CLOCK POLARITY = 0;LENTH = 11;
SPICCR = 0xCA; //SPI SW RESET = 1;
asm(" CLRC INTM");
}
void DSPInit(void)
{
asm(" SETC INTM");
MCRB = 0x3C; //I/O port = SPI function;
IMR = 0x11; //open INT5 and INT1;
SCSR1=0x81FE;
asm(" CLRC INTM");
}
void interrupt nothing()
{return;}
uint vert_byte(uint word)
{
uint i,j;
uint Ttemp,wordL,wordH;
wordL=0;
wordH=0;
for(i=0,j=1;i<4;i++,j++)
{
Ttemp=word&(0x01<<i);
wordL=wordL|(Ttemp<<(9-2*j));
}
for(i=4,j=1;i<8;i++,j++)
{
Ttemp=word&(0x01<<i);
wordH=wordH|(Ttemp>>(2*j-1));
}
word=wordL|wordH;
return(word);
}
void interrupt spiint()
{
if(PIVR==5) //SPI interrupt
{
if(SPISTS&0x40) //SPI int flag
//SPI_rxbufindex =SPIRXBUF & 0xffff;
SPI_rxbufindex = vert_byte(((SPIRXBUF & 0x03fc)>>2));
//while(SPI_rxbufindex!=0x00f0)
SPI_rxbufindex1=Decode(SPI_rxbufindex);
}
}
void main(void)
{
DSPInit();
SPIInit();
// serial_init (SPI_rxbufindex1);
// putbyte()
while(1)
SPITXBUF = 0XFFFF;
}