用户注册 | 登录 | 帮助中心 | 网站地图 | 加入收藏 | English

网站首页 产品列表 软件下载 技术资料 付款方式 发货查询 关于我们 淘宝商城 论坛
搜索 高级/组合搜索
网站文章
所有文章
站内新闻
单片机工具资料
汇编程序实例
C语言程序实例
单片机提高资料
单片机初学资料
单片机软件下载
单片机技术资料
  您的位置: 首页 >> 文章列表 >> 24C02储存开机次数实验C语言参考程序
24C02储存开机次数实验C语言参考程序

作者:单片机爱好者  转载自:单片机工具之家  发布日期:2011-4-17

#include<reg51.h> //头文件
#include<intrins.h>
#define uchar unsigned char //宏定义,为方便编程
#define uint unsigned int
#define DIGI P0 //宏定义,将P0口定义为ad7-ad0
#define SELECT P2 //宏定义,将P2口定义为数码管选择位
sbit SDA=P3^7; //定义数据线
sbit SCL=P3^6; //定义时钟线
uint value=0;
uchar digivalue[]={0x28,0x7e,0x0a2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};
//数字数组,依次为0-9
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
#define OP_WRITE 0xa0 // 器件地址以及写入操作
#define OP_READ 0xa1 // 器件地址以及读取操作
void start();
void stop();
uchar shin();
bit shout(uchar write_data);
void write_byte( uchar addr, uchar write_data);
void delayms(uint ms);
uchar read_current();
uchar read_random(uchar random_addr);
/**********************************************************/
void start() //I2C启动函数
//开始位
{
SDA = 1; //使能 SDA
SCL = 1;
delayNOP();
SDA = 0;
delayNOP();
SCL = 0;
}
/**********************************************************/
void stop() //I2C停止函数
// 停止位
{
SDA = 0;
delayNOP();
SCL = 1;
delayNOP();
SDA = 1;
}
/**********************************************************/
uchar shin()
// 从AT24C02移出数据到MCU
{
uchar i,read_data;
for(i = 0; i < 8; i++)
{
SCL = 1;
read_data <<= 1; //数据左移一位
read_data |= SDA;
SCL = 0;
}
return(read_data);
}
/**********************************************************/
bit shout(uchar write_data)
// 从MCU移出数据到AT24C02
{
uchar i;
bit ack_bit;
for(i = 0; i < 8; i++) // 循环移入8个位
{
SDA = (bit)(write_data & 0x80);
_nop_();
SCL = 1;
delayNOP();
SCL = 0;
write_data <<= 1;
}
SDA = 1; // 读取应答
delayNOP();
SCL = 1;
delayNOP();
ack_bit = SDA;
SCL = 0;
return ack_bit; // 返回AT24C02应答位
}
/**********************************************************/
void write_byte(uchar addr, uchar write_data)
// 在指定地址addr处写入数据write_data
{
start();
shout(OP_WRITE);
shout(addr);
shout(write_data);
stop();
delayms(10); // 写入周期
}
/**********************************************************/
uchar read_current()
// 在当前地址读取
{
uchar read_data;
start();
shout(OP_READ);
read_data = shin();
stop();
return read_data;
}
/**********************************************************/
uchar read_random(uchar random_addr)
// 在指定地址读取
{
start();
shout(OP_WRITE);
shout(random_addr);
return(read_current());
}
/**********************************************************/
void delayms(uint ms)
// 延时子程序
{
uchar k;
while(ms--)
{
for(k = 0; k < 120; k++);
}
}
/**********************************************************/
void delay() //复位消抖动函数
{
uchar ii=0,jj=0,kk=0;
for(ii=0;ii<200;ii++)
for(jj=0;jj<200;jj++);
}
char code SST516[3] _at_ 0x003b; //仿真器保留
main()
{
SCL = 0;
delay();
value=read_random(0); //读取单片机复位次数
value=value+1; //读到的次数加一
if(value>9) value=0;
write_byte(0,value);
P2=0xdf; //选择第二个数码管
DIGI=digivalue[value]; //显示次数
while(1);
}
【版权声明】
  1. 任何网站转载本站内容必需注明“来源:单片机工具之家”。
  2. 本网转载自其它媒体的信息,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
  3. 未经本站明确许可,任何网站不得非法盗链软件下载连接及抄袭本网站原创内容资源。
  4. 违反上述声明者,本网将追究其相关法律责任。谢谢!


关于我们
网站介绍
联系我们
付款方式
银行汇款
货到付款
发货方式
快递运输
上门自提
售后服务
退换货政策
质保承诺
购买方式
购物流程
在线订购

公司名称:深圳市乾龙盛电子科技有限公司    网站名称:单片机工具之家
公司地址:广东省深圳市宝安区龙华镇民治路潜龙花园惠宁阁13-G   联系电话:0755-28187975  13715306011  传真:0755-28187976
展销柜台:广东省深圳市福田区新亚洲电子商城二期三楼N3D033室(华强电子世界附件)【查看地图】   联系电话:0755-82543360
:淘宝商店   :qls@cxqmcu.com   :qls@cxqmcu.com
销售点击Q我:243355504 (唐永红)先生   技术支持点击Q我:443935535 (钟先生)
网站版权:单片机工具之家  粤ICP备09028690号