Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36590
  • 博文数量: 11
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-01 15:13
文章分类
文章存档

2011年(1)

2010年(2)

2009年(8)

我的朋友

分类: 嵌入式

2009-08-28 14:38:39

主机发送数据格式,器件地址+子地址+数据,程序只能接收到 器件地址+子地址,而主机发送数据字节时,从机响应非应答。图为单片机手册给出的接收时序图,思考中……
void initIIC()
{
 PORTC=0x02;
 LATC=0x00;
 TRISC=0x18;
 INTCON |=0xC0;
 PIE1 |=0x08;
 SSPADD =0x90;
 SMP=1;
 CKE=0;
 SSPCON1 =0x3e;
}
void interrupt I2c(void)
{
 if (SSPIF){
   SSPIF=0;
   SSPOV=0;
   i2cSlaveInt_Handler();
 }
}
void i2cSlaveInt_Handler()
{
  uchar command;
  command = SSPSTAT & 0x2D;
       
  switch( command )       
  {
  case 0x09:         // Master写,接收的字节是地址
    tmpSTAT = SSPBUF;
  break;                                                                                                                               
 case 0x29:          //Master写,接收的字节是数据
   data[count++]=SSPBUF;
   if(count>=10)
     count=0;
   else
     asm("nop");
 break;                                                                             
 case 0x28:         //操作完成,释放时钟
   CKP=1;
 break;                                                                                                                               
default:
break;
   } 
}
 
阅读(2868) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~