请问如何用瑞萨M16C/62P单片机进行IIC通信? 我写了发送和接收的程序,但不成功。把代码贴出来,请大家帮我看看,谢谢了!
发送程序:
.include ..\tools\sfr62p.inc
.SECTION program
.GLB _initiic
_initiic:
mov.b #39,u2brg
mov.b #00000010B, u2mr
mov.b #10010000B, u2c0 ;选f1为计数源
bset re_u2c1
bset te_u2c1 ;允许发送
mov.b #00000001B, u2smr
bclr iicm2_u2smr2 ;选NACK/ACK中断
bset ifsr26
bset ifsr27
bclr swc9_u2smr4
rts
.END
#include "..\tools\sfr62p.h"
extern void initiic(void);
void main(void)
{
int i=0;
unsigned int msg[2]={0x0c,0x07};
initiic();
stspsel_u2smr4=0;
stareq_u2smr4=1;
stspsel_u2smr4=1;
if(ti_u2c1==1)
u2mr=0x00;
for(i=0;i<2&&ti_u2c1==1;i++)
{u2tb=msg[i];}
stspsel_u2smr4=0;
stpreq_u2smr4=1;
stspsel_u2smr4=1;
}
接收程序:
.include ..\tools\sfr62p.inc
.SECTION program
.GLB _iic
_iic:
mov.b #39,u2brg
mov.b #00000010B, u2mr
mov.b #10010000B, u2c0 ;选f1为计数源
bset re_u2c1
bset te_u2c1
mov.b #00000001B, u2smr
bclr iicm2_u2smr2
bset ifsr26
bset ifsr27
bclr swc9_u2smr4
rts
.end
#include "..\tools\sfr62p.h"
#include "..\tools\io.h"
extern void iic(void);
void main(void)
{
int i=0;
iic();
while(1)
{ if(ri_u2c1==1)
{ i=u2rb;
p2_0=0;//亮灯
}
}
}
请大家帮帮忙啊,谢谢!