📄 spi_dtk.c
字号:
#include "SEED-DSK2407.h"
#include "SPI.h"
#include "comm.h"
#define FRAMLONGTH 2
unsigned int spi_data=0;
unsigned int recieve_over = 0;
unsigned int recieve_count = 0;
unsigned int recieve_check = 0;
unsigned int recieve[0x208] = {0};
unsigned int frame_data[0x104] = {0};
void sysreset(void);
void ledturnon(void);
void ledturnoff(void);
void main()
{
unsigned int i=0;
DINT;
SystemInit();
SpiInit();
/*WHEN THE SPI PROGRAM RUN ,TURN ON THE LED2*/
*MCRC &= 0xBFFF;
*PFDATDIR |=0x4040;
*IFR = 0x3f;
*IMR = 0x01;
EINT;
for(;;)
{
while(recieve_over == 0) {};
recieve_over = 0;
}
}
void SystemInit(void)
{
WSGR = 0;
*WDCR = 0xE8;
*SCSR1 = 0x0020;
}
void SpiInit(void)
{
*MCRB = 0x3c;
*SPICCR = 0x4f;
*SPICTL = 0x03;
*SPIBRR = 0x31;
*SPIPRI = 0x10;
*SPICCR = 0xcf;
}
interrupt void PHANTOM(void)
{
}
interrupt void c_int1(void)
{
unsigned int i;
if((*PIVR & 0x05) == 0x05)
{
recieve[recieve_count] = *SPIRXBUF;
recieve_count++;
if(recieve_count==FRAMLONGTH)
{
switch(recieve[0])
{
case SPISENDDATA:
ledturnon();
*SPITXBUF = recieve[1];
break;
case SYSRESET:
ledturnoff();
sysreset();
break;
default:
break;
}
recieve_over = 1;
recieve_count = 0;
}
}
*IFR &=0x0001;
EINT;
}
void sysreset(void)
{
WSGR = 0;
*WDCR = 0x08;
for(;;){};
/*
asm(" B 768H "); */
}
void ledturnon()
{
LED = 0x0F;
}
void ledturnoff()
{
LED = 0x00;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -