飞思卡尔8位单片机-第10章-IIC.pptVIP

  • 3
  • 0
  • 约9.64千字
  • 约 39页
  • 2020-04-30 发布于四川
  • 举报
从机接收程序 #include hidef.h #include derivative.h int Rvc_init_check(void); /*声名接收条件检测函数*/ Byte addr1;         /*用来接收地址的变量*/ Byte RcvData[4];      /*用来接收数据的数组*/ Byte i=0;         /*记数变量*/ void main(void) { EnableInterrupts;      /*中断使能*/ IICA=0X04;       /*定义从机地址*/ IICC_IICEN=1;      /*开启IIC功能*/ IICC_IICIE=1;       /*使能IIC中断*/ IICC_TX=0;       /*置此位为0表示接收*/ for(;;) { __RESET_WATCHDOG();   /*喂看门狗*/ } } /*接收条件检测*/ int Rvc_init_check(){ if((IICS_TCF) (!IICS_ARBL)){ /*一个数据接收完毕、没有仲裁丢失(若同时没有地址匹配,可以接收下一个数据)*/ return 1; } else return 0; } /*中断程序*/ interrupt 17 void IIC(void) { IICS_IICIF=1;          /*通过向此位写1,对其清零*/ if(IICS_IAASRvc_init_check()){ /*满足地址接收条件,可以接收地址*/ IICC_TX=0;           /*定此位的目的是,清IAAS位*/ addr1=IICD;           /*将地址送入addr1变量*/ } if(!IICS_IAASRvc_init_check()){/*满足接收条件,可以接/*收下个数据*/ RcvData[i++]=IICD;       /*接收数据*/ } if(i==4){         /*如果接收完毕,则点亮LED1灯*/ PTBDD_PTBDD6=1; PTBD_PTBD6=0; } } 从机发送、主机接收 主机程序 #include hidef.h #include derivative.h #define START_SIGNAL IICC_MST=1;   /*宏定义起始信号*/ #define STOP_SIGNAL IICC_MST=0;   /*宏定义停止信号*/ void Rcv_init(void);         /*声名接收条件初始化函数*/ int Rcv_init_check(void);     /*声名接收条件检测函数*/ Byte addr=0x05;  /*从机地址(最后一位“1”代表主机接收)*/ Byte Rcv_data[5];       /*用来接收数据的数组*/ Byte i=0;           /*记数变量*/ ? void main(void) { EnableInterrupts;       /*中断使能*/ IICF=0X4B;         /*设定位移率为100kbps*/ IICC_IICEN=1;        /* 开启IIC功能*/ IICC_IICIE=1;        /*使能IIC中断*/ Rcv_init(); for(;;) { __RESET_WATCHDOG(); }   /*喂看门狗*/ } /*接收条件初始化*/ void Rcv_init(){ IICC_TX=1; /*置此位为1表示发送*/ START_SIGNAL /*产生开始信号*/ IICD=addr; /*发送从机地址*/ }  /*接收条件检测*/ int Rcv_init_check(){ if((IICS_TCF) (!IICS_IAAS) (!IICS_ARBL)){ /*一个数据发送完毕、没有地址匹配(主机此位永远为0)、没有仲裁丢失,返回1*/ return 1; } else return 0; }

文档评论(0)

1亿VIP精品文档

相关文档