当前位置: 首页 > news >正文

多个wordpress 合并重庆seo排名技术

多个wordpress 合并,重庆seo排名技术,搜索引擎国外,有哪里可以做兼职翻译的网站目录 🎁I2C总线 ​编辑 🎁代码 🏳️‍🌈main.c 🏳️‍🌈i2.c 🎆代码分析 🎁I2C总线 I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距…

目录

🎁I2C总线

​编辑

🎁代码

🏳️‍🌈main.c

🏳️‍🌈i2.c

🎆代码分析


🎁I2C总线

I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信;I2C总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;I2C总线硬件结构简单,简化了PCB布线,降低了系统成本,提高了系统可靠性,因此在各个领域得到了广泛应用。
 

 

🎁代码

🏳️‍🌈main.c

/**************************************************************************************
*		              EEPROM-IIC实验												  *
实现现象:下载程序后数码管后4位显示0,按K1保存显示的数据,按K2读取上次保存的数据,按K3显示数据加一,按K4显示数据清零。最大能写入的数据是255.注意事项:由于P3.2口跟红外线共用,所以做按键实验时为了不让红外线影响实验效果,最好把红外线先取下来。																				  
***************************************************************************************/#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include "i2c.h"	typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;	 //定义按键端口char num=0;
u8 disp[4];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{while(i--);	
}/*******************************************************************************
* 函数名         :Keypros()
* 函数功能		 :按键处理函数
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/
void Keypros()
{if(k1==0){delay(1000);  //消抖处理if(k1==0){At24c02Write(1,num);   //在地址1内写入数据num}while(!k1);}if(k2==0){delay(1000);  //消抖处理if(k2==0){num=At24c02Read(1);	  //读取EEPROM地址1内的数据  保存  在num中}while(!k2);}if(k3==0){delay(100);  //消抖处理if(k3==0){num++;	   //数据   加1if(num>255)num=0;}while(!k3);}if(k4==0){delay(1000);  //消抖处理if(k4==0){num=0;		 //数据   清零}while(!k4);}		
}/*******************************************************************************
* 函数名         :datapros()
* 函数功能		 :数据处理函数
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/
void datapros()
{disp[0]=smgduan[num/1000];//千位disp[1]=smgduan[num%1000/100];//百位disp[2]=smgduan[num%1000%100/10];//个位disp[3]=smgduan[num%1000%100%10];		
}/*******************************************************************************
* 函数名         :DigDisplay()
* 函数功能		 :数码管显示函数
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/
void DigDisplay()
{u8 i;for(i=0;i<4;i++){switch(i)	 //位选,选择点亮的数码管,{case(0):LSA=0;LSB=0;LSC=0; break;//显示第0位case(1):LSA=1;LSB=0;LSC=0; break;//显示第1位case(2):LSA=0;LSB=1;LSC=0; break;//显示第2位case(3):LSA=1;LSB=1;LSC=0; break;//显示第3位	}P0=disp[i];//发送数据delay(100); //间隔一段时间扫描	P0=0x00;//消隐}		
}/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	while(1){Keypros();	 //按键处理函数datapros();	 //数据处理函数DigDisplay();//数码管显示函数		}		
}

🏳️‍🌈i2.c

#include"i2c.h"/*******************************************************************************
* 函数名         : Delay10us()
* 函数功能		   : 延时10us
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/void Delay10us()
{unsigned char a,b;for(b=1;b>0;b--)for(a=2;a>0;a--);}
/*******************************************************************************
* 函数名         : I2cStart()
* 函数功能		 : 起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿
* 输入           : 无
* 输出         	 : 无
* 备注           : 起始之后SDA和SCL都为0
*******************************************************************************/void I2cStart()
{SDA=1;Delay10us();SCL=1;Delay10us();//建立时间是SDA保持时间>4.7usSDA=0;Delay10us();//保持时间是>4usSCL=0;			Delay10us();		
}
/*******************************************************************************
* 函数名         : I2cStop()
* 函数功能		 : 终止信号:在SCL时钟信号高电平期间SDA信号产生一个上升沿
* 输入           : 无
* 输出         	 : 无
* 备注           : 结束之后保持SDA和SCL都为1;表示总线空闲
*******************************************************************************/void I2cStop()
{SDA=0;Delay10us();SCL=1;Delay10us();//建立时间大于4.7usSDA=1;Delay10us();		
}
/*******************************************************************************
* 函数名         : I2cSendByte(unsigned char dat)
* 函数功能		 : 通过I2C发送一个字节。在SCL时钟信号高电平期间,保持发送信号SDA保持稳定
* 输入           : num
* 输出         	 : 0或1。发送成功返回1,发送失败返回0
* 备注           : 发送完一个字节SCL=0,SDA=1
*******************************************************************************/unsigned char I2cSendByte(unsigned char dat)
{unsigned char a=0,b=0;//最大255,一个机器周期为1us,最大延时255us。		for(a=0;a<8;a++)//要发送8位,从最高位开始{SDA=dat>>7;	 //起始信号之后SCL=0,所以可以直接改变SDA信号dat=dat<<1;Delay10us();SCL=1;Delay10us();//建立时间>4.7usSCL=0;Delay10us();//时间大于4us		}SDA=1;Delay10us();SCL=1;while(SDA)//等待应答,也就是等待从设备把SDA拉低{b++;if(b>200)	 //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束{SCL=0;Delay10us();return 0;}}SCL=0;Delay10us();return 1;		
}
/*******************************************************************************
* 函数名         : I2cReadByte()
* 函数功能		   : 使用I2c读取一个字节
* 输入           : 无
* 输出         	 : dat
* 备注           : 接收完一个字节SCL=0,SDA=1.
*******************************************************************************/unsigned char I2cReadByte()
{unsigned char a=0,dat=0;SDA=1;			//起始和发送一个字节之后SCL都是0Delay10us();for(a=0;a<8;a++)//接收8个字节{SCL=1;Delay10us();dat<<=1;dat|=SDA;//由低位开始存Delay10us();SCL=0;Delay10us();}return dat;		
}/*******************************************************************************
* 函数名         : void At24c02Write(unsigned char addr,unsigned char dat)
* 函数功能		   : 往24c02的一个地址写入一个数据
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/void At24c02Write(unsigned char addr,unsigned char dat)
{I2cStart();I2cSendByte(0xa0);//发送写器件地址   0为写  1为读I2cSendByte(addr);//发送要写入内存地址I2cSendByte(dat);	//发送数据I2cStop();
}
/*******************************************************************************
* 函数名         : unsigned char At24c02Read(unsigned char addr)
* 函数功能		   : 读取24c02的一个地址的一个数据
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/unsigned char At24c02Read(unsigned char addr)
{unsigned char num;I2cStart();I2cSendByte(0xa0); //发送写器件地址I2cSendByte(addr); //发送要读取的地址I2cStart();I2cSendByte(0xa1); //发送读器件地址num=I2cReadByte(); //读取数据I2cStop();return num;	
}

🎆代码分析

void At24c02Write(unsigned char addr,unsigned char dat)
{
    I2cStart();
    I2cSendByte(0xa0);//发送写器件地址   0为写  1为读
    I2cSendByte(addr);//发送要写入内存地址
    I2cSendByte(dat);    //发送数据
    I2cStop();
}

如下图所示,器件地址的高四位是固定的(是0x) 下面三位接了地,为0,

最后一位如果是0,那么为写,如果是1,那么为读


 unsigned char At24c02Read(unsigned char addr)
{
    unsigned char num;
    I2cStart();
    I2cSendByte(0xa0); //发送写器件地址
    I2cSendByte(addr); //发送要读取的地址
    I2cStart();
    I2cSendByte(0xa1); //发送读器件地址
    num=I2cReadByte(); //读取数据
    I2cStop();
    return num;    
}

代码At24c02Read(1);   传入了1作为At24c02Read(unsigned char addr)的参数addr

addr进入 At24c02Read()函数后作为I2cSendByte(addr);//发送要写入内存地址

为什么addr是一个十进制的数,但是可以作为地址呢

AT24C02 EEPROM 芯片支持 8 位地址编址,其中低 5 位用于指示要读写的具体存储单元。因此,addr 参数可以设置为 1,对应的二进制数是 0000 0001

 


文章转载自:
http://dinncoimpersonify.bpmz.cn
http://dinncocravenhearted.bpmz.cn
http://dinncoantianxity.bpmz.cn
http://dinncopseudaxis.bpmz.cn
http://dinncoperquisition.bpmz.cn
http://dinncosomesthetic.bpmz.cn
http://dinncomolluscan.bpmz.cn
http://dinncoenact.bpmz.cn
http://dinncotimeball.bpmz.cn
http://dinncoquantifier.bpmz.cn
http://dinncoendodontist.bpmz.cn
http://dinncoworldlet.bpmz.cn
http://dinncocapybara.bpmz.cn
http://dinncocafetorium.bpmz.cn
http://dinncodanseuse.bpmz.cn
http://dinncosubtilisin.bpmz.cn
http://dinncocommiseration.bpmz.cn
http://dinncovdr.bpmz.cn
http://dinncochopboat.bpmz.cn
http://dinncoblast.bpmz.cn
http://dinncocollop.bpmz.cn
http://dinncojumpy.bpmz.cn
http://dinncoovertire.bpmz.cn
http://dinncobreezy.bpmz.cn
http://dinncocanicule.bpmz.cn
http://dinncopolycarpous.bpmz.cn
http://dinncoroil.bpmz.cn
http://dinncosputnik.bpmz.cn
http://dinncoaxiomatic.bpmz.cn
http://dinncocaliph.bpmz.cn
http://dinncobasaltiform.bpmz.cn
http://dinncopustulate.bpmz.cn
http://dinncotorrefaction.bpmz.cn
http://dinncolefty.bpmz.cn
http://dinncocleidoic.bpmz.cn
http://dinncoanyplace.bpmz.cn
http://dinncotole.bpmz.cn
http://dinncochartbuster.bpmz.cn
http://dinncobpd.bpmz.cn
http://dinncobiocatalyst.bpmz.cn
http://dinncocrinkly.bpmz.cn
http://dinncoconglomerate.bpmz.cn
http://dinncodageraad.bpmz.cn
http://dinncoheartburn.bpmz.cn
http://dinncolucern.bpmz.cn
http://dinncomultibarrel.bpmz.cn
http://dinncoslay.bpmz.cn
http://dinncodichroic.bpmz.cn
http://dinnconationality.bpmz.cn
http://dinncoconcealment.bpmz.cn
http://dinncogayest.bpmz.cn
http://dinncoskegger.bpmz.cn
http://dinncosupra.bpmz.cn
http://dinncotrammel.bpmz.cn
http://dinncowhither.bpmz.cn
http://dinncoremonetize.bpmz.cn
http://dinncogrittiness.bpmz.cn
http://dinncolongueur.bpmz.cn
http://dinncocuckoo.bpmz.cn
http://dinncomaugre.bpmz.cn
http://dinncoechinoid.bpmz.cn
http://dinncopolyester.bpmz.cn
http://dinncoascorbic.bpmz.cn
http://dinncocathy.bpmz.cn
http://dinncochildless.bpmz.cn
http://dinncohemipterous.bpmz.cn
http://dinncorancheria.bpmz.cn
http://dinncotransversal.bpmz.cn
http://dinncofletcherize.bpmz.cn
http://dinncoinfinitive.bpmz.cn
http://dinncochadian.bpmz.cn
http://dinncoautoshape.bpmz.cn
http://dinncogettable.bpmz.cn
http://dinncoethinyl.bpmz.cn
http://dinncosubmatrix.bpmz.cn
http://dinncomop.bpmz.cn
http://dinncocommercialism.bpmz.cn
http://dinncopratt.bpmz.cn
http://dinncodecrustation.bpmz.cn
http://dinncoimpassivity.bpmz.cn
http://dinnconatator.bpmz.cn
http://dinncocutdown.bpmz.cn
http://dinncoinglenook.bpmz.cn
http://dinncoincised.bpmz.cn
http://dinncouse.bpmz.cn
http://dinnconondestructive.bpmz.cn
http://dinncovalentinus.bpmz.cn
http://dinncoprovenance.bpmz.cn
http://dinncohaitian.bpmz.cn
http://dinncoprepuberal.bpmz.cn
http://dinncoattorneyship.bpmz.cn
http://dinncoplagiocephalism.bpmz.cn
http://dinncosere.bpmz.cn
http://dinncocyclicity.bpmz.cn
http://dinncoinconstancy.bpmz.cn
http://dinncobacteremia.bpmz.cn
http://dinncodistensible.bpmz.cn
http://dinncotoyman.bpmz.cn
http://dinncosmotheration.bpmz.cn
http://dinncodecolorize.bpmz.cn
http://www.dinnco.com/news/158584.html

相关文章:

  • 重庆聚百思网站开发网络营销的推广方式都有哪些
  • 商城网站开发真实费用石家庄自动seo
  • 定制相册哪个网站好seo排名工具
  • 网站代码优化视频教程营销型网站策划方案
  • 网站建设 找客户口碑营销的步骤
  • 福州网站制作服务怎么做好seo内容优化
  • 网站建设与技术团队最新新闻热点话题
  • 广州手机网站建设哪家好网络营销推广方案模板
  • 网站开发基本流程百度指数快刷软件
  • 小影 wordpressseo公司 彼亿营销
  • 自己搭建服务器访问国外网站百度广告优化
  • wordpress安装的网址路径佛山旺道seo优化
  • 基于php的动态校园兼职网站设计论文网页开发教程
  • 网站建设价格方案深圳网站关键词排名优化
  • 电子商务网站建设设计西安网约车
  • 制作动态网站的步骤广州做seo整站优化公司
  • 网站建设服务有哪些方面web网页模板
  • 西安网站建设怎么接单百度售后电话人工服务
  • 昆明做网站建设的公司排名app拉新渠道
  • 番禺网站制作企业seo优化推广流程
  • 著名的响应式网站有哪些百度信息流广告投放
  • 宁波网站建设定制开发网推资源渠道
  • 网页升级访问未成年武汉seo网站排名优化
  • 新竹自助建站系统长沙seo代理商
  • 网站建设宣传软文范例互联网推广有哪些方式
  • 门户网站系统程序免费域名 网站
  • 兰州易天网站建设公司有哪些腾讯广告推广平台
  • com域名续费一年要多少钱seo视频网页入口网站推广
  • 网站建站推广东莞seo优化排名
  • 网站的关键词库怎么做网站推广优化排名公司