首页 关于外部存储器24C02的C程序

关于外部存储器24C02的C程序

举报
开通vip

关于外部存储器24C02的C程序关于外部存储器24C02的C程序 #include #include //*********************** sbit SDA=P2^0; sbit SCL=P2^1; //************************ //************************ unsigned char Address; unsigned char I2CData; //************************ /***********************************...

关于外部存储器24C02的C程序
关于外部存储器24C02的C程序 #include #include //*********************** sbit SDA=P2^0; sbit SCL=P2^1; //************************ //************************ unsigned char Address; unsigned char I2CData; //************************ /******************************************************************** *********/ //定义累加器A中的各位 sbit a0 = ACC ^ 0; = ACC ^ 1; sbit a1 sbit a2 = ACC ^ 2; = ACC ^ 3; sbit a3 sbit a4 = ACC ^ 4; sbit a5 = ACC ^ 5; sbit a6 = ACC ^ 6; sbit a7 = ACC ^ 7; /******************************************************************** ********/ bit ack=0; //应答信号标志位。 //********************************* void delay() { unsigned char i,j,k; k=15; do{ i=255; do{j=255; do{j--;} while(j); i--; }while(i); k--; }while(k); } //****************************** //****************************** //发送开始信号 //I2C总线的起始信号的程序。 void I2C_START() { SCL=1; SDA=1; _nop_(); _nop_(); SDA=0; _nop_(); _nop_(); SCL=0; } //****************************** //****************************** //送八位数据 //主器件送从器件8位数据。 void I2C_SEND8BIT(unsigned char send_data) { ACC=send_data; SDA=a7; SCL=1; _nop_(); _nop_(); SCL=0; SDA=a6; SCL=1; _nop_(); _nop_(); SCL=0; SDA=a5; SCL=1; _nop_(); _nop_(); SCL=0; SDA=a4; SCL=1; _nop_(); _nop_(); SCL=0; SDA=a3; SCL=1; _nop_(); _nop_(); SCL=0; SDA=a2; SCL=1; _nop_(); _nop_(); SCL=0; SDA=a1; SCL=1; _nop_(); _nop_(); SCL=0; SDA=a0; SCL=1; _nop_(); _nop_(); SCL=0; } //****************************** //****************************** //接收八位数据 //主器件接收从器件指定地址的8位数据。 unsigned char I2C_RECEIVE8BIT() { SDA=1; SCL=1; _nop_(); _nop_(); a7=SDA; SCL=0; SCL=1; _nop_(); _nop_(); a6=SDA; SCL=0; SCL=1; _nop_(); _nop_(); a5=SDA; SCL=0; SCL=1; _nop_(); _nop_(); a4=SDA; SCL=0; SCL=1; _nop_(); _nop_(); a3=SDA; SCL=0; SCL=1; _nop_(); _nop_(); a2=SDA; SCL=0; SCL=1; _nop_(); _nop_(); a1=SDA; SCL=0; SCL=1; _nop_(); _nop_(); a0=SDA; SCL=0; return(ACC); } //********************************************* //****************************** //发送接收确认信号 void I2C_ACK() { SDA=1; SCL=1; _nop_(); _nop_(); if(SDA==1) ack=1; else ack=0; SCL=0; } //***************************** //***************************** //发送结束信号 void I2C_STOP() { SDA=0; _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); SDA=1; } //****************************** //******************************* /*------------------------------------------------------ 写一个字节 Address地址 I2CDatata写入的数据 ------------------------------------------------------*/ void I2C_WRITE() { do{ I2C_START(); I2C_SEND8BIT(0XA0); //从器件地址位是000,并且对从器件进行写操作。 I2C_ACK(); }while(ack==1); //=1,表示无确认,再次发送。 C为1转移。 I2C_SEND8BIT(Address); I2C_ACK(); I2C_SEND8BIT(I2CData); I2C_ACK(); I2C_STOP(); } //****************************************************** //******************************************* /*------------------------------------------------------ 读一个字节 Address地址 Data读出的数据 ------------------------------------------------------*/ void I2C_READ() { do{ I2C_START(); I2C_SEND8BIT(0XA0); //从器件地址位是000,并且对从器件进行写操作。 I2C_ACK(); }while(ack==1); //=1,表示无确认,再次发送。 C为1转移。 I2C_SEND8BIT(Address); I2C_ACK(); do{ I2C_START(); I2C_SEND8BIT(0XA1); //从器件地址位是000,并且对从器件进行读操作。 I2C_ACK(); }while(ack==1); //=1,表示无确认,再次发送。 C为1转移。 I2CData=I2C_RECEIVE8BIT(); I2C_ACK(); I2C_STOP(); } //*********************************************** //******************************* //主函数。 void main() { SP=0x60; Address=0x00; I2CData=0x55; P0=I2CData; delay(); I2C_WRITE(); //对外部存储器进行写操作.在指定地址00H写入数据0x55. P0=0x0f; delay(); I2C_READ(); //对外部存储器进行读操作,在指定地址00h读出数据0x55. P0=I2CData; delay(); } 总结:这个程序是对24C02的指定地址写数据,并且只能一次写一个字节的数据.然后在对24C02的这个指定地址读出这个数据
本文档为【关于外部存储器24C02的C程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_476695
暂无简介~
格式:doc
大小:21KB
软件:Word
页数:0
分类:互联网
上传时间:2017-09-17
浏览量:12