📄 spi_master.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 + -