24C02单片机编程的一点注意问题
时间:11-30
来源:互联网
点击:
单片机对24C02的读写,有一点要注意的,就是关于延时的问题。读写操作的间隔时间不能太短,否则会导致在Proteus仿真时正常,实际应用出错的结果。
下面是一个毫秒级延时程序:
void delay_ms(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
以下是部分操作24C02的程序:
init_24C02();//初始化24C02
delay_ms(20);//延时
write_add(1,18);//写入数据1
delay_ms(20);//延时
write_add(2,92);//写入数据2
delay_ms(20);//延时
write_add(3,56);//写入数据3
delay_ms(20);//延时
for(i=1;i<4;i++)
{
delay_ms(10);
//write_add(0x02,12);
delay_ms(10);
n=read_add(i);//读取数据
temp[i*2-2]=n/10;
temp[i*2-1]=n%10;
}
实际上,上面的程序在Proteus仿真时通过,但写到板子上却无法正常读取刚刚写入的数据。后来把延时参数增大到50,一切正常了!这说明合理的延时对读写24C02是至关重要的,特别是写入数据后应该保证24C02有充分的歇息!
下面是一个毫秒级延时程序:
void delay_ms(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
以下是部分操作24C02的程序:
init_24C02();//初始化24C02
delay_ms(20);//延时
write_add(1,18);//写入数据1
delay_ms(20);//延时
write_add(2,92);//写入数据2
delay_ms(20);//延时
write_add(3,56);//写入数据3
delay_ms(20);//延时
for(i=1;i<4;i++)
{
delay_ms(10);
//write_add(0x02,12);
delay_ms(10);
n=read_add(i);//读取数据
temp[i*2-2]=n/10;
temp[i*2-1]=n%10;
}
实际上,上面的程序在Proteus仿真时通过,但写到板子上却无法正常读取刚刚写入的数据。后来把延时参数增大到50,一切正常了!这说明合理的延时对读写24C02是至关重要的,特别是写入数据后应该保证24C02有充分的歇息!
24C02单片机编 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)