⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 几个关于lpc2103开发板的keil例程
💻 C
字号:
 #include<stdio.h>
#include<lpc2103.h>
#define f (15000000/115200/16)
void init()
{
	PINSEL0=(PINSEL0&(~0xff))|0x55;
	I2C0CONCLR=0x2c;					//起始位,中断标志位和应答位清零
	I2C0CONSET=0x40;					//使能IIC
	I2C0SCLH=15000000/200000/2;			//设置IIC的速率
	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 uartsend(char q)
{
	U0THR=q;
	while((U0LSR&0x40)==0);
}
void write(char q,char adr)
{


	I2C0CONSET=0x20;						  //设置STA位,	发送起始位 进入主发送
	while((I2C0CONSET&(0x08))==0x00);		  // 等待起始信号
	I2C0DAT=0xA0;							  //发送从地址
	I2C0CONCLR=0x28;						  //SI清零 ,STA位必须清零
	while((I2C0CONSET&(0x08))==0x00);		  //等待发送完毕
	while(I2C0STAT!=0x18);	
	
	I2C0DAT=adr;							  //装入要发送的数据(可以为二级地址) (子地址)
	I2C0CONCLR=0x08;						  //SI位清零	
	while((I2C0CONSET&(0x08))==0x00);
	while(I2C0STAT!=0x28);	
	
	I2C0DAT=q;							  //装入要发送的数据(可以为二级地址)
	I2C0CONCLR=0x08;						  //SI位清零	
	while((I2C0CONSET&(0x08))==0x00);
	while(I2C0STAT!=0x28);	
	I2C0CONSET=0x10;					   //结束总线,此句必须有,否则出错。
	I2C0CONCLR=0x08;						   //SI位清零  使能位清零 (必须)
						   
	uartsend('s');		 					   //调试用语句
//	uartsend(str[1]);
}
void read(char adr1)
{
	char s;
	I2C0CONCLR=0x28;
	I2C0CONSET=0x20;		   
	while((I2C0CONSET&(0x08))==0x00);		  //发送起始位 进入主发送
	I2C0DAT=0xa0;							  //发送要写入的地址
	I2C0CONCLR=0x28;						  //SI清零
	while((I2C0CONSET&(0x08))==0x00);		  //等待发送完毕
	while(I2C0STAT!=0x18);	

	I2C0DAT=adr1;							  //装入要发送的数据(可以为二级地址)
	I2C0CONCLR=0x08;						  //STA位必须清零,SI位清零	
	while((I2C0CONSET&(0x08))==0x00);
	while(I2C0STAT!=0x28);		
	
	I2C0CONCLR=0x08;
	I2C0CONSET=0x20;						   //重新发送起始位进入主接收
	while((I2C0CONSET&(0x08))==0x00);
	I2C0DAT=0xa1;							   //装入要接收的地址
	I2C0CONCLR=0x28;
	while((I2C0CONSET&(0x08))==0x00);
	while(I2C0STAT!=0x40);
	I2C0CONCLR=0x08;						   //STA位和SI位清零
	I2C0CONSET=0x04;
	while((I2C0CONSET&(0x08))==0x00);		   //等待接收寄存器满
	s=I2C0DAT;
	I2C0CONSET=0x10;						   //结束总线
 	I2C0CONCLR=0x08;						   //清除SI
	uartsend(s);	
}
		 
int main()
{
	
	init();
	write('d',0x05);
	read(0x00);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -