void SPI_MOSI(char,char);
void Delay_SPI();
volatile unsigned char row[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
volatile unsigned short col[8]={0x1F1F,0x2323,0x2323,0x1F1F,0x2323,0x2323,0x1F1F,0x0000};
void setup() {
volatile char *portf_dir=0x30;
*portf_dir=0x0F;
volatile char *portf_out=0x31;
volatile char i;
volatile char j;
*portf_out=0x00;
SPI_MOSI(0x0C,0);
SPI_MOSI(0x01,1);
SPI_MOSI(0x0A,0);
SPI_MOSI(0x0F,1);
SPI_MOSI(0x0B,0);
SPI_MOSI(0x07,1);
SPI_MOSI(0x09,0);
SPI_MOSI(0x00,1);
for(j=0;j<=16;j++)
{
for(i=0;i<8;i++)
{
volatile unsigned short temp=(unsigned short)col[i]<<j;
volatile unsigned char data1=temp&0xFF;
volatile unsigned char data2=(temp>>8)&0xFF;
SPI_MOSI(row[i],0);
SPI_MOSI(data1,0);
SPI_MOSI(row[i],0);
SPI_MOSI(data2,1);
}
delay(1000);
}
}
void SPI_MOSI(char data,char ld)
{
volatile char *portf_out=(volatile char*)0x31;
volatile char i;
volatile char a;
for(i=7;i>=0;i--)
{
a=(data>>i)&0x01;
if(a==1)
{
*portf_out|=0x01;
}
else
{
*portf_out&=~0x01;
}
*portf_out&=~0x02;
Delay_SPI();
*portf_out|=0x02;
Delay_SPI();
*portf_out&=~0x02;
}
if(ld)
{
Delay_SPI();
*portf_out|=0x02;
*portf_out|=0x04;
Delay_SPI();
*portf_out&=~0x02;
*portf_out&=~0x04;
}
}
void Delay_SPI()
{
volatile char i;
for(i=0;i<6;i++);
}
void loop() {
// put your main code here, to run repeatedly:
}