24c16的使用方法
来源:互联网 发布:知乎什么是互联网数据 编辑:程序博客网 时间:2024/04/30 03:33
自己把24c16的使用结合代码整理了一遍
之前看pcf时发现其实有很多芯片和24c系列的芯片很像,所以就不得不整理一下了,发辫以后回顾
r如果整理的不够好,请不要喷我,我是弱菜
#include
#include //要用到_nop_()精准延时
#define uchar unsigned char
#define uint unsigned int
sbitscl=P2^1;//24c16时钟线,数据线定义
sbit sda=P2^0;
uchar codetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示
uchar num,sec; //用来计时
void usdelay()
{
_nop_();_nop_();
_nop_();_nop_();
_nop_();_nop_();
}
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void start() //起始信号 当时钟线为1,数据线有个下降沿
{
sda=1;
usdelay();
scl=1;
usdelay();
sda=0;
usdelay();
}
void stop()//终止信号 当时钟线为1,数据线有个上升沿
{
sda=0;
usdelay();
scl=1;
usdelay();
sda=1;
usdelay();
}
void ack() //应答信号由从机发出信号为sda由1变为0
{
uchar i;
scl=1;
usdelay();
while((sda==1)&&i<200)i++;
scl=0;
usdelay();
}
void init24c16()//24c16初始化
{
sda=1;
usdelay();
scl=1;
usdelay();
}
void write_byte(uchar dat) //字节写(写数据或地址)数据线sda不变,scl有个上升沿,写入数据
{
uchar i;
for(i=0;i<8;i++)
{
scl=0;
usdelay();
sda=(bit)(dat&0x80);
usdelay();
scl=1;
usdelay();
dat<<=1;
}
scl=0;
usdelay();
}
uchar read_byte() //字节读 scl有下降沿读出
{
uchar i,k;
for(i=0;i<8;i++)
{
scl=1;
usdelay();
k=(k<<1)|sda;
scl=0;
usdelay();
}
return k;
}
void write_add(uchar add,uchardat)
{
start();
write_byte(0xa0);
ack();
write_byte(add);
ack();
write_byte(dat);
ack();
stop();
}
uchar read_add(uchar add)
{
uchar dat;
start();
write_byte(0xa0);
ack();
write_byte(add);
ack();
start();
write_byte(0xa1);
ack();
dat=read_byte();
usdelay();
stop();
return dat;
}
void main()
{
init24c16();
sec=read_add(2);
if(sec>9) sec=0;
TMOD=0x01;//定时器选择软件启动,工作方式为1
ET0=1;//开定时器0允许
EA=1;//开总中断允许
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;//给定时器赋初值,定时50ms
TR0=1;//启动定时器0
while(1)
{
if(num==20)
{
num=0;
sec++;
if(sec>9)
sec=0;
}
P3=table[sec];
write_add(2,sec);
}
}
void t0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
num++;
}
阅读全文
0 0
- 24c16的使用方法
- 24c16
- C16、线程的堆栈
- 关于24C16
- c16
- 24C16 与24C64系列 存储器的区别
- 24c01-24c16读写驱动程序
- STM32硬件i2c调试24C16记录(挣扎一天)
- 的使用方法
- ctags使用方法 ctags的使用方法
- <PY><core python programming笔记>C16 网络编程
- <c语言经典100例>c16 规律题
- Android API 24 动画的使用方法
- UITabBarController的使用方法、 UINavigationController的使用方法、 presentModalViewController的使用方法
- UITabBarController的使用方法 UINavigationController的使用方法
- ctags使用方法 ctags的使用方法1
- DateTime的一些使用方法
- CSDNBlog的使用方法
- LCD简易计算器
- 寻找春天 九宫格日记-2014.07.14
- 负数的二进制表示方法
- 百米计时器LCD1602显示
- 定时器中断
- 24c16的使用方法
- 最近无聊,在tyvj上做了几道模拟的…
- 使用OpenCV把二进制mnist数据集转换为图片
- 数字电路预习部分整理
- 那些我能想象到的幸福浪漫的事
- 感人小故事
- cin.get()
- 模拟电路二极管计算部分方法和注意
- c++文件输入输出