#include <STC12C5A.h>
#include <intrins.h>
#include <math.h>
#include <stdio.h>
sbit scl=P3^6;
sbit sda=P3^7;
void init_uart()
{
SM0=0;
SM1=1;
BRT=0x98; //300bps
AUXR=0x11;
ES=1;
EA=1;
REN=1;
}
void send_char(unsigned char txd)
{
ES = 0;
TI = 0;
SBUF = txd;
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
ES=1;
}
void send_str(unsigned char *str)
// 传送字串
{
unsigned char i = 0;
for(i=0; str[i]!='\0';i++)
{
send_char(str[i]);
}
}
//*************24c04*******************//
void delay1(unsigned char x)
{
unsigned int i;
for(i=0;i<x;i++)
{;;}
}
void flash()
{
; ;
}
void x24c04_init() //24c04初始化子程序
{
scl=1;
flash();
sda=1;
flash();
}
void start() //启动I2C总线
{
sda=1;
flash();
scl=1;
flash();
sda=0;
flash();
scl=0;
flash();
}
void stop() //停止I2C总线
{
sda=0;
flash();
scl=1;
flash();
sda=1;
flash();
}
void writex(unsigned char j) //写一个字节
{ unsigned char i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
}
scl=0;
flash();
sda=1;
flash();
}
unsigned char readx() //读一个字节
{
unsigned char i,j,k=0;
scl=0; flash(); sda=1;
for (i=0;i<8;i++)
{
flash(); scl=1; flash();
if (sda==1) j=1;
else j=0;
k=(k<<1)|j;
scl=0;
}
flash();
return(k);
}
void clock() //I2C总线时钟
{
unsigned char i=0;
scl=1; flash();
while ((sda==1)&&(i<255))i++;
scl=0; flash();
}
/*******从24c02的地址address中读取一个字节数据******/
unsigned char x24c04_read(unsigned char address)
{
unsigned char i;
start(); writex(0xa0);
clock(); writex(address);
clock(); start();
writex(0xa1); clock();
i=readx(); stop();
delay1(10);
return(i);
}
/*****向24c02的address地址中写入一字节数据info*******/
void x24c04_write(unsigned char address,unsigned char info)
{
EA=0;
start(); writex(0xa0);
clock(); writex(address);
clock(); writex(info);
clock(); stop();
EA=1;
delay1(50);
}
void main()
{
unsigned char temp=0,im;
init_uart();
x24c04_init();
x24c04_write(121,0x80);
for(im=0;im<4;im++)
{
temp=x24c04_read(121);
delay1(50);
}
while(1)
{
send_char(temp);
}
}
I2C.zip_读I2C
版权申诉
65 浏览量
2022-09-23
11:35:56
上传
评论
收藏 33KB ZIP 举报
寒泊
- 粉丝: 75
- 资源: 1万+
最新资源
- 农村信用社联合社计算机信息系统投产与变更管理办.docx
- 农村信用社联合社计算机信息系统数据管理办法.docx
- 利用SPSS作临床效度分析线上计算网站介绍-医学研究部统计谘.(医学PPT课件).ppt
- 利用Zabbix监控mysqldump定时备份数据库状态.docx
- 利用计算机解决问题的基本过程.doc
- 化工铁路通信工程总结.doc
- 北京大学网络教育软件工程作业.docx
- 医药公司(连锁店)计算机操作规程未新系统的自行按照旧制修改-新系统过制的编号加修模版.doc
- 医药公司(连锁店)计算机系统操作规程模版.doc
- 医药连锁门店计算机系统的操作和管理程序未新系统的自行按照旧制修改-新系统过制的编号加修模版.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈