📄 main.c
字号:
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCL=P2^0;
sbit SDA=P2^1;
//void delay(uchar n)
// {
// uint i;
// uchar j;
// for(j=0;j<n;j++)
// for(i=0;i<6000;i++);
// }
//
///*启动I2C总线*/
//void sta()
// {
// SDA=1;
// SCL=1;
// _nop_();
// SDA=0;
// _nop_();
// SCL=0;
// }
//
//void stop( )/*停止I2C总线*/
// {
// SDA=0;
// SCL=1;
// delay(1);
// SDA=1;
// delay(1);
// }
//
//void mack( )/*发送应答位*/
// {
// SDA=0;
// SCL=1;
// _nop_();
// SCL=0;
// SDA=1;
// }
//
//void mnack( )/*发送非应答位*/
// {
// SDA=1;
// SCL=1;
// _nop_();
// SCL=0;
// SDA=0;
// }
//
//void cack( )/*应答位检查*/
// {
// SDA=1;
// SCL=1;
// F0=0;
// if(SDA==1)
// F0=1;
// SCL=0;
// _nop_( );
// }
//
///*向虚拟I2C总线上发送1个数据字节*/
//void wrbyt(uchar shu)
// {
// uchar i;
// for(i=0;i<8;i++)
// {
// if((shu&0x80)>0)
// {
// SDA=1;
// SCL=1;
// _nop_();
// SCL=0;
// SDA=0;
// }
// else
// {
// SDA=0;
// SCL=1;
// _nop_();
// SCL=0;
// }
// shu=shu<<1;
// }
// }
//
///*从I2C总线上读取1个数据字节*/
//uchar rdbyt( )
// {
// uchar nn=0xff,mm=0x80,uu=0x7f;
// uchar j;
// for(j=0;j<8;j++)
// {
// SDA=1;
// SCL=1;
// if(SDA==0)
// {nn=(nn&uu);}
// else
// {nn=(nn|mm);}
// nn=_crol_(nn,1);
// SCL=0;
// }
// return(nn);
// }
//
//void wrnbyta(uchar slaw,uchar gg[],uchar n)
// {
// do
// {
// sta( );
// wrbyt(slaw);
// cack( );
// }
// while(F0==1);
// wrbyt(gg[n]);
// cack( );
// }
//
///*向虚拟I2C总线上发送n个字节的数据
//参数:写命令字、需要写到总线的数据、写数据长度
//ff[]:前两个字节分别为高地址、低地址、接着是数据,其中数据长度=地址+数据
//*/
//void wrnbyt(uchar slaw,uchar ff[],uchar number)
// {
// uchar idata k;
// do
// {
// sta( );
// wrbyt(slaw);
// cack( );
// }
// while(F0==1);
// for(k=0;k<number;k++)
// {
// wrbyt(ff[k]);
// cack( );
// while(F0==1)
// wrnbyta(slaw,ff,k);
// }
// stop( );
// }
//
///*从虚拟I2C总线上读取n个字节的数据
//前提:已初始化读取的首地址
//参数:读命令字、保存数组、读取字节数
//*/
//void rdnbyt(uchar slar,uchar qq[],uchar number)
// {
// uchar idata data0,l;
// do
// {
// sta( );
// wrbyt(slar);
// cack( );
// }
// while(F0==1);
// for(l=0;l<number-1;l++)
// {
// data0=rdbyt( );
// qq[l]=data0;
// mack( );
// }
// data0=rdbyt( );
// qq[l]=data0;
// mnack( );
// stop( );
// }
//
////读任意地址单元数据
////参数:高地址、低地址
//char eeprom_read(uchar addr_h,uchar addr_l)
// {
// char a[2],temp[1];
// a[0]=addr_h;
// a[1]=addr_l;
// wrnbyt(0xa0,a,2);
// rdnbyt(0xa1,temp,1);
// return(temp[0]);
// }
//
////写一字节到任意单元
//void eeprom_write(uchar addr_h,uchar addr_l,uchar data1)
// {
// char a[3];
// a[0]=addr_h;
// a[1]=addr_l;
// a[2]=data1;
// wrnbyt(0xa0,a,3);
// }
void main()
{
// char out[]={0x00,0x00,0x01,0x02,0x03};//将0x01,0x02,0x03写到以0x0000为首地址eeprom中
// char intd[5]; //连续读数据缓存数组
// wrnbyt(0xa0,out,5);//将0x01,0x02,0x03写到以0x0000为首地址eeprom中
// wrnbyt(0xa0,out,2);//初始化首地址,如果不是0x0000,须将out数组初始化
// rdnbyt(0xa1,intd,3);//从初始化地址中读3个字节到intd数组中
// eeprom_write(0x00,0x10,0xaa);//将0xaa写到0x0010地址中去
// P0=eeprom_read(0x00,0x10);//读取0x0010地址中的数据
// while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -