本帖最后由 zwxhehe2012 于 2013-12-29 17:11 编辑
PIC16F1503 SPI程序调了几天,MSSP模块配置部分就几条语句,就是不成功,SCK脚没有方波信号输出,感觉好像MSSP模块没有启动,麻烦指教一下是什么问题造成的?
程序如下:
#define BIT0 0X1
#define BIT1 0X2
#define BIT2 0X4
#define BIT3 0X8
#define BIT4 0X10
#define BIT5 0X20
#define BIT6 0X40
#define BIT7 0X80
#define SSPEN_ENABLE 0X20
#define SPI_FOSC_4M 0XF
#define CKP_LOW_IDEL 0X10
#define SMP_SPI 0X80
#define CKE_HIGH 0X40
#define EN_SSP1IE 0X8
#define SSP1IF1 0X4
#define IRCF 0X7A
void Init_Spi (void)
{
TRISC = TRISC &(~BIT2) &(~BIT0) &(~BIT4) |BIT1 |BIT3; //(SDI : RC1 INPUT) (SDO : RC2 OUTPUT ) (SCK :RC0 OUTPUT ) (CE :RC4 OUTPUT)
TRISA = TRISA &(~BIT5) |BIT2; // (CSN :RA5 OUTPUT) (IRQ:RA2 INPUT)
SSPCON1 = SSPCON1 &(~SPI_FOSC_4M) &(~CKP_LOW_IDEL) |SSPEN_ENABLE; // FOSC: 16M SPI_CLK= FOSC/4=4M CKP = 0
SSPSTAT = SSPSTAT &(~SMP_SPI) |CKE_HIGH; //CKE= 1 SMP =0
PIE1 |= EN_SSP1IE ; //允许SPI中断
}
U8 Spi_Write (U8 data)
{
U8 databyte;
CSN_ENABLE;
PIR1 &= ~SSP1IF1 ;// clear SSP interrupt bit
SSPBUF = data ;
while(!(PIR1&SSP1IF1)); // Wait for interrupt flag to go high indicating transmission is co
databyte = SSPBUF; // Read the incoming data byte
CSN_DISABLE;
return (databyte);
}
void main (void)
{
OSCCON |= IRCF ; // 内部时钟16M
Init_Spi ();
while (1)
{
Spi_Write (0X55);
}
}
|
@bellstudio :而且1503里面没有片选CS这个脚
@bellstudio :楼主的这个程序能跑的起来?我试了下,好像不行诶!!
CSN_ENABLE是什么意思,,PIN引脚里找不到