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

📄 spi.c

📁 pic系列单片机例程编程指南
💻 C
字号:
#include <p18f2480.h>
#include <delays.h>
char a,n;
char m[4];
char data;
void Interrupt_t0(void);
void initial()
{
	INTCON=0x00;			/* bit7-bit0:关总中断 */
	INTCON2bits.INTEDG0 = 0;
	TRISB=0x01;
	ADCON1=0X0f;			/* 设置数字输入输出口 */
//	PIE1=0;					/* PIE1 的中断不使能 */			
//	PIE2=0;					/* PIE2 的中断不使能 */	
//	PIE3=0;					/* PIE3 的中断不使能 */	
}

void init_spi()
{
	TRISA=0x00;					//主控 TRISA=0x00;从机 TRISA=0x20
	TRISC=0x10;					//主控 TRISC=0x00;从机 TRISC=0x18
	SSPSTAT=0x80;				//主控SSPSTAT=0x00,80 ; 从机 SSPSTAT=0x00
	SSPSTATbits.CKE=0;			//
	SSPCON1=0x22;				//主控 SSPCON1=0x22,21,20 ,20最好;从机 
	PIR1bits.SSPIF=0;				/* 清除SSPIF标志 */
}

void delayms(unsigned int t)
{
	unsigned char i;
	for(;t;t--)
		for(i=0;i<200;i++);
}



char spi_rc()
{
	char data;
	do
	{
	  ;
	}while(SSPSTATbits.BF==0);		/* 等待SPI 发送完成 */
	data = SSPBUF;				/* 清SPI 发送完成标志 */
//	n++;	
//	if(n==2) n=0;
	return data;
	
}
void spi_send(char data)
{
	SSPBUF = data;
	do
	{
	  ;
	}while(PIR1bits.SSPIF==0);		/* 等待SPI 发送完成 */
	PIR1bits.SSPIF=0;				/* 清SPI 发送完成标志 */
	a = SSPBUF;
	//		m[n++] = a;
	//	if(n==4) n=0;
}

#pragma code InterruptVectorHigh=0x08		//若为低优先级中断服务程序,0x08应改为0x18
void InterruptVectorHigh (void)
{
  _asm
    goto Interrupt_t0					//跳到中断程
  _endasm
}

/*高优先级中断服务程序*/
#pragma code
#pragma interrupt Interrupt_t0
void  Interrupt_t0(void)
{	
	//INT0 中断服务
	if(INTCONbits.INT0IF==1)		//若接收中断标志不为1,则为误操作,返回
	{
		INTCONbits.INT0IF=0;   //清中断标志
		spi_send(0x5a);
		
    }
}
void main()
{
	initial();
    init_spi();
    n = 0;
	while(1)
	{	
	//	PORTBbits.RB0 = 1;	
//	if(PORTBbits.RB0==1)
//		spi_send(0x5a);
//	spi_send(0x5a);
  	Nop();
//	delayms(500);
//	m[0] = a;
//  PORTA = a;
//	spi_send(0x24);
 // 	Nop();
//	delayms(500);
//	m[1] = a;
//  PORTA = a;
//	spi_send(0x88);
 //Nop();
//	delayms(500);
//	m[2] = a;
//  PORTA = a;
//	spi_send(0x99);
	  Nop();
//	delayms(500);
//	m[3] = a;
//  PORTA = a;
delayms(5);
	}
}

⌨️ 快捷键说明

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