⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 freescaleDP512的SPI从机通信程序
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dp512.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dp512"
unsigned char test0;
unsigned char test1;
unsigned char Result[28]={0};
unsigned int i=0;
/************* @ INI_SPI *********************/
void ini_spi(void){
SPI1BR=0b01110111; //clock divisor is 2
SPI1CR2=0b00000010;// SS is input
SPI1CR1=0b01001000;// as slave
//SPI1CR1=0b01010000;// as master

} 
/*************** @@ SPI_WRITE *****************/ 
void putchar_spi1 (unsigned char cx)
{ unsigned char temp;
while(!(SPI1SR_SPTEF)); /* wait until write is permissible */
SPI1DR = cx; /* output the byte to the SPI */
while(!(SPI1SR_SPIF)); /* wait until write operation is complete */
// temp=SPI0SR;
temp=SPI1DR; // clear the spif flag.
}
/************** @@@ SPI_READ *******************/ 
unsigned char getchar_spi1(void)
{
unsigned char te;
//while(!(SPI1SR&)); /* wait until write is permissible */
//while(!(SPI1SR_SPTEF)); /* wait until write is permissible */
//SPI1DR = 0x00; /* trigger 8 SCK pulses to shift in data */
while(!(SPI1SR_SPIF)); /* wait until a byte has been shifted in */
//te=SPI1SR;
te=SPI1DR; // clear the spif flag.
return te; /* return the character */
}
/////////////////########*** MAIN ***###########///////////////// 
void main()
{
DDRT_DDRT1=1;  //PT1定义为输出
PTT_PTT1=0;    //PT1输出为低
MODRR_MODRR5=1;   //SPI1为PH0~PH3口
ini_spi();
PTT_PTT1=1;    //PT1输出高产生上升沿触发采样中断
for(i=0;i<28;i++)
{
  //putchar_spi1(222);
 // putchar_spi1(1);
  test0=getchar_spi1();
  Result[i]=test0;
  /*if(test0==0x55)
  {
   Result[i]=test0;
   i++;
   if(i>=10){i=0;}
  //putchar_spi1(111);
  //putchar_spi1(123);
  } */
} 
for(;;)
{asm(nop);}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -