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

📄 spi_master.c

📁 基於Full Speed USB Controller 1T 8051的SPI控制源程序
💻 C
字号:
/* Megawin "SPI process" demo code
 * Edited by: Peter Lin 
 * Mail: peter@megawin.com.tw
 * tel:03-5750050
 */

/*include megawin header file */
#include "MG84FL54.h"


/**
 * FUNCTION_PURPOSE: This file set up spi in master mode 
 * FUNCTION_INPUTS: P1.6(MISO) serial input
 * FUNCTION_OUTPUTS: P1.5(MOSI) serial output
 * FUNCTION_OUTPUTS: P1.4(/SS)=0 slave selected/=1 master selected
 */
void init_spi(void)
{
// CKCON |= 0x28;                 /* If Crystal = 12Mhzs */
P2M0 = 0x00;				   /* Quasi-bidirection */
P2M1 = 0x00;
SPICTL = 0x00;                 /*clear SPI Control register */
SPICTL |= 0xC0;                /*SSIG = 0 ,SPEN = 1,Slave Mode without SS Pin*/
P2_4=0;                        /* SS Pin pill low */ 
SPICTL |= 0x02;                /* Fclk Periph/8 */
SPICTL &= ~0x08;               /* CPOL=0; transmit mode example */
SPICTL |= 0x00;                /* CPHA=1; transmit mode example */
AUXR |= 0x80;                  /* enable spi interrupt */
SPICTL |= 0x40;                /* run spi */
AUXIE |= 0x01;                 /* Enable  SPI Interrupt */
}



/**
 * FUNCTION_PURPOSE:interrupt
 * FUNCTION_INPUTS: void
 * FUNCTION_OUTPUTS: transmit_complete is software transfert flag
 */
void it_SPI(void) interrupt 8 /* interrupt address is 0x0043 */
{
	switch	( SPISTAT & 0xC0)         /* read and clear spi status register */
	{
		case 0x80:
   /* TO DO */
         SPISTAT = 0xC0;   //clear spistat flag
 		break;

		case 0x10:
         /* put here for mode fault tasking */	
		break;
	
		case 0x40:
         /* put here for overrun tasking */	
		break;
	}
    SPISTAT |= 0xC0;    // clear SPIF Flag
}



void main(void)
{
init_spi();

EA=1;                                 /* enable interrupts */

	while(1)			 
   {
  

  
   SPIDAT = 0xAA;             /* echo data to master */
  
   
  
  }
}

⌨️ 快捷键说明

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