给个单片机 24C16的读写程序

[复制链接]
查看11 | 回复0 | 2009-11-25 13:52:43 | 显示全部楼层 |阅读模式
//24c16读写驱动程序,//=-------------------------------------------------------------------------------/*模块调用:读数据:read(unsigned int address)写数据:write(unsigned int address,unsigned char dd) dd为要写的 数据字节*///----------------------------------------------------------------------------------sbit sda=P3^0;sbit scl=P3^1;sbit a0=ACC^0;
//定义ACC的位,利用ACC操作速度最快sbit a1=ACC^1;sbit a2=ACC^2;sbit a3=ACC^3;sbit a4=ACC^4;sbit a5=ACC^5;sbit a6=ACC^6;sbit a7=ACC^7;//--------------------------------------------------------------------------------------#pragma disablevoid s24(void)
//起始函数{_nop_();
scl=0;
sda=1;
scl=1;
_nop_();
sda=0;
_nop_();
_nop_();
scl=0;
_nop_();
_nop_();
sda=1;}//-------------------------------------------------------------------------------------#pragma disablevoid p24(void)
//停止函数{sda=0;
scl=1;
_nop_();
_nop_();
sda=1;}//------------------------------------------------------------------------------------#pragma disableunsigned char rd24(void) /////////////////从24c16读一字节数据{
ACC=0x00;sda=1;scl=1;a7=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a6=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a5=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a4=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a3=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a2=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a1=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a0=sda;_nop_();_nop_();_nop_();_nop_();scl=0;sda=1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0; /// ///////////////24c16的一位回答位。return(ACC);}//----------------------------------------------------------------------------------#pragma disablevoid wd24(unsigned char dd) ////////////////向24c16写一字节数据{
sda=1;ACC=dd;sda=a7;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a6;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a5;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a4;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a3;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a2;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a0;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=0;scl=1;//scl=0;(在下面程序中)}//---------------------------------------------------------------------------#pragma disableunsigned char read(unsigned int address){unsigned char dd;
s24();
////////////////////////开始条件
wd24(0xa0);
/////////////////////////写器件地址(写命令)
_nop_();_nop_();_nop_();_nop_();
scl=0;
///////////////////////////////////接收器件地址确认信号
wd24(address);
//////////////////////////// 写数据地址
_nop_();_nop_();_nop_();_nop_();
scl=0;s24();
///////////////////////////////////开始条件
wd24(0xa1);
/////////////////////////////写器件地址(读命令)
scl=0;
dd=rd24();
//////////////////////////////////读 一字节
p24();
////////////////////////////////////停止条件
return(dd);}//--------------------------------------------------------------------------------#pragma disablevoid write(unsigned int address,unsigned char dd){s24();
/////////////////开始条件
wd24(0xa0);
////////////////////////写器件地址;
scl=0;
wd24(address);
/////////////////////写数据地址
scl=0;
wd24(dd);
//////////////////////////写dd数据
scl=0;
p24();
/////////////////////////停止条件;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行