📄 text2.c
字号:
#include<stdio.h>
#include<lpc2103.h>
#define f (15000000/115200/16)
void init()
{
PINSEL0=(PINSEL0&(~0xff))|0x55;
I2C0CONCLR=0x2c;
I2C0CONSET=0x40;
I2C0SCLH=15000000/200000/2;
I2C0SCLL=15000000/200000/2;
// I2C0SCLH=16;
// I2C0SCLL=16;
// PINSEL0=(PINSEL0&(~0x0f))|0x05;
U0FCR=0x7;
U0LCR=0x83;
U0DLL=f%256;
U0DLM=f/256;
U0LCR=0x3;
}
void send1(int adr1)
{
I2C0CONSET=0x20;
while((I2C0CONSET&(0x08))==0x00); //发送起始位 进入主发送
I2C0DAT=adr1; //发送要写入的地址
I2C0CONCLR=0x08; //SI清零
while((I2C0CONSET&(0x08))==0x00); //等待发送完毕
while(I2C0STAT!=0x18);
}
void send2(int adr2)
{
I2C0DAT=adr2; //装入要发送的数据(可以为二级地址)
I2C0CONCLR=0x28; //STA位必须清零,SI位清零
while((I2C0CONSET&(0x08))==0x00);
while(I2C0STAT!=0x28);
// while(I2C0STAT!=0x28);
// I2C0CONSET=0x10; //此句可有可无
// I2C0CONCLR=0x28;
// while((I2C0CONSET&(0x08))==0x00);
}
char receiv1()
{
char s;
I2C0CONCLR=0x08;
I2C0CONSET=0x20; //重新发送起始位进入主接收
while((I2C0CONSET&(0x08))==0x00);
I2C0DAT=0xa1; //装入要接收的地址
I2C0CONCLR=0x08;
while((I2C0CONSET&(0x08))==0x00);
while(I2C0STAT!=0x40);
I2C0CONCLR=0x28; //STA位和SI位清零
I2C0CONSET=0x04;
while((I2C0CONSET&(0x08))==0x00); //等待接收寄存器满
s=I2C0DAT;
return s;
}
char receiv2()
{
char s;
I2C0CONCLR=0x08;
while((I2C0CONSET&(0x08))==0x00);
s=I2C0DAT;
I2C0CONSET=0x10;
I2C0CONCLR=0x48; //关闭总线
return s;
}
void uartsend(char q)
{
U0THR=q;
while((U0LSR&0x40)==0);
}
int main()
{
char str[2]={0};
init();
send1(0xa0);
send2(0x02);
str[0]=receiv1();
// str[1]=receiv2();
uartsend(str[0]);
// uartsend(str[1]);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -