打印

请教PIC单片机写I2C和SPI时,卡住在 while(!SSPIF);

[复制链接]
4230|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bryce256|  楼主 | 2011-7-13 19:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人想实践一下PIC单片机的I2C,SPI总线,于是找了基于IIC的E2PROM和基于SPI的E2PROM,并写写了程序。但是问题出来了。写的程序不能实现向E2PROM写数据的功能。于是我在MPLAB中分步执行,结果程序卡在SSPIF这里不动。请问是什么原因?

基于SPI的E2PROM我选用的是25C040,写数据前要发送0X06,代表写使能的意思。我调用写使能函数,停留在 while(!SSPIF); 不动了。
void WriteEnable()
{
CS=0;
SSPBUF=0x06;
while(!SSPIF);       //程序卡在这句话不动了。
SSPIF=0;
CS=1;
}


基于I2C的E2PROM我选用的是24C02,写应答程序的时候也是卡在这句话不动了。

void checksend()
{
while(SSPIF==0)    //程序也是卡在这里不动了。
{;}
SSPIF=0;
}
请问是什么原因???????????
沙发
bryce256|  楼主 | 2011-7-13 19:11 | 只看该作者
本帖最后由 bryce256 于 2011-7-13 19:16 编辑

SPI程序:


#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define CS RC6
void delay(uchar x)
{
        int i;
        for(i=0;i<x;i++);
}
void InitPort()
{
        TRISB=0x00;
        TRISC=0x96;
}
void SpiInit()
{
        PIE1=0;
        PIR1=0;
        SSPSTAT=0x00;
        SSPCON=0x03;
}
void WriteEnable()
{
        CS=0;
        SSPBUF=0x06;
        while(!SSPIF);
        SSPIF=0;
        CS=1;
}
void SpiEeprom()
{
        CS=0;
        SSPBUF=0x01;
        do
        {
                ;
        }
        while(SSPIF==0);
//        while(!SSPIF){}
        SSPIF=0;
        SSPBUF=0x02;
        while(!SSPIF);
        SSPIF=0;
        CS=1;        
}
void WriteData(uchar addr,uchar dat)
{
        WriteEnable();
        CS=0;
        SSPBUF=0x02;
        while(!SSPIF);
        SSPIF=0;
        SSPBUF=addr;
        while(!SSPIF);
        SSPIF=0;
        SSPBUF=dat;
        while(!SSPIF);
        SSPIF=0;
        CS=1;        
}
void main()
{
        uint p;
        InitPort();
        SpiInit();
//        SpiEeprom();
        PORTB=0xfa;        
        for(p=0x03;p<0xf8;p++)
        {
                WriteData(p,p);
        }
        PORTB=0xaa;        
}

使用特权

评论回复
板凳
hwwyhy| | 2011-7-16 11:55 | 只看该作者
死机时查询STATUS有没有选择体2,

使用特权

评论回复
地板
hwwyhy| | 2011-7-16 11:56 | 只看该作者
当时写汇编时我也好像碰到这种问题,按他数据手册上的程序来写的,发现没有加选体语句,所有也是在这里死掉

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

1

粉丝