本帖最后由 涵潇舒雅 于 2013-10-24 15:16 编辑
主机发送数据到从机的程序已经调试成功
- void read_iic(uchar add)
- {
- uchar temp;
- SSPIF=0;
- SEN=1;
- while(!SSPIF);
- SSPIF=0;
- SSPBUF=add|0x01;
- while(!SSPIF);
- SSPIF=0;
- temp=SSPBUF;
- RCEN=1;
- while(!BF);
- SSPIF=0; //等待接受数据完成
- read_data=SSPBUF;
- ACKDT=1;
- ACKEN=1;
- while(!SSPIF);
- SSPIF=0;
- PEN=1;
- while(!SSPIF);
- SSPIF=0;
- }
- void interrupt isr()
- {
- unsigned char temp,i;
- if(SSPIF==1&&SSPIE==1)
- {
- SSPIF=0;
- if(R_nW==0 && D_nA==1) //接受的是数据
- {
- if(BF==1)
- {
- receive_data=SSPBUF;
- write_flag=1;
- }
- }
- else if(D_nA==0) //接受的是地址
- {
-
- if(BF==1)
- {
- master_add=SSPBUF;
- }
- count_isr++;
- }
- else if(R_nW==1&&D_nA==1&&BF==0)//发送数据
- {
- CKP=0;
- SSPBUF=0xaa;
- if(BF==0) //判断SSPBUF是否为空
- read_flag=1;
- }
-
- }
- CKP=1;
- SSPOV=0;
- }
经测试read_flag=1;read_data=66;不管从机发送的数据怎么改变,SDA的波形图都不发送变化,read_data=66!!!
这是SCL
这是SDA波形图,读出的数据就是66,与显示的数据正常,但是为啥就是不能改变呢??
|