完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 非法菜鸟 于 2012-8-3 20:40 编辑
#include #define uchar unsigned char #define uint unsigned int ***it sck=P3^3; ***it sda=P3^4; void delay1() { uchar i,j; for(i=255;i>0;i--) for(j=110;j>0;j--); } void delay() { uchar i,j; for(i=1;i>0;i--) for(j=110;j>0;j--); } void inti() //初始化 { sck=1; delay(); sda=1; delay(); } void ks() //开始 { sda=1; delay(); sck=1; delay(); sda=0; } void zz() //终止 { sda=0; delay(); sck=1; delay(); sda=1; delay(); } void xy() //响应 { uchar i; sck=1; delay(); while((sda==1)&&(i<255))i++; sck=0; delay(); } void xie(uchar date) //写入 { uchar temp,i; temp=date; for(i=0;i<8;i++) { temp<<=1; sck=0; delay(); sda=CY; delay(); sck=1; } delay(); sck=0; delay(); sda=1; delay(); } uchar du() //读出 { uchar date,i,j; sck=0; delay(); sda=1; for(i=0;i<8;i++) { sck=1; delay(); j=sda; date=(date<<1)|j; //date=(date|j)<<1; sck=0; delay(); } return date; } void xiezi(uchar add1,uchar add,uchar date)//写入一个字节 { ks(); xie(add1); xy(); xie(add); xy(); xie(date); xy(); zz(); } uchar duzi(uchar add1,uchar add,uchar add2)//读出一个字节 { uchar date; ks(); xie(add1); xy(); xie(add); xy(); ks(); xie(add2); xy(); date=du(); zz(); return date; } void main() { inti(); xiezi(0xae,20,0x0f); xiezi(0xa0,20,0xf0); while(1) { P0=duzi(0xae,20,0xaf); delay1(); P0=duzi(0xa0,20,0xa1); delay1(); //P0=0xff; } } 以上的是个正确的程序 程序用来给两个AT24C02写入内容并读出的 有问题的是下面的 1.iic总线模块 #include #include void iic_inti() //初始化 { sck=1; delayms(1); sda=1; delayms(1); } void iic_kaishi() //开始 { sda=1; delayms(1); sck=1; delayms(1); sda=0; } void iic_zongzi() //终止 { sda=0; delayms(1); sck=1; delayms(1); sda=1; delayms(1); } void iic_ack() //响应 { unsigned char i; sck=1; delayms(1); while((sda==1)&&(i<255))i++; sck=0; delayms(1); } void iic_nack() //非响应 { sda=1; sck=1; delayms(1); sck=0; } void iic_xie(unsigned char date) //写入 { unsigned char temp,i; temp=date; for(i=0;i<8;i++) { temp<<=1; sck=0; delayms(1); sda=CY; delayms(1); sck=1; } delayms(1); sck=0; delayms(1); sda=1; delayms(1); } unsigned char iic_du() //读出 { unsigned char date,i,j; sck=0; delayms(1); sda=1; for(i=0;i<8;i++) { sck=1; delayms(1); j=sda; date=(date<<1)|j; sck=0; delayms(1); } return date; } 2.iic模块声明 #ifndef __IIC_H__ #define __IIC_H__ #include ***it sck=P3^3; //时钟端 ***it sda=P3^4; //数据段 void iic_inti(); void iic_kaishi(); void iic_zongzi(); void iic_ack(); void iic_nack(); void iic_xie(unsigned char date); unsigned char iic_du(); #endif
|
|
相关推荐
9个回答
|
|
3.延时模块
#include //1s=1000ms,1ms=1000us,1us=1000ns void delayms(unsigned int x) //毫秒 { unsigned int i; unsigned char j; for(i=x;i>0;i--) for(j=110;j>0;j--); } 4.延时模块声明 #ifndef __TIME_H__ #define __TIME_H__ void delayms(unsigned int x); #endif |
|
|
|
5.at24c02的读写模块
#include #include void at24c02_xie(unsigned char xiexu,unsigned char adde,unsigned char date) //1:器件地址+0 2:内存地址 3:写入八位数据 { iic_inti(); //初始化 iic_kaishi(); //开始 iic_xie(xiexu); //写入器件地址+0 iic_ack(); //响应 iic_xie(adde); //写入内存地址 iic_ack(); //响应 iic_xie(date); //写入数据 iic_ack(); //响应 iic_zongzi(); //终止 } unsigned char at24c02_du(unsigned char xiexu,unsigned char adde,unsigned char duxu) //1:器件地址+0 2:内存地址 3:器件地址+1 { unsigned char i; iic_inti(); //初始化 iic_kaishi(); //开始 iic_xie(xiexu); //写入器件地址+0 iic_ack(); //响应 iic_xie(adde); //写入内存地址 iic_ack(); //响应 iic_kaishi(); //开始 iic_xie(duxu); //写入器件地址+1 iic_ack(); //响应 i=iic_du(); // 读出数据 iic_nack(); // 非响应 iic_zongzi(); // 终止 return i; // 返回数据 } 6.at24c02的模块声明 #ifndef __AT24C02_H__ #define __AT24C02_H__ //***it sck=P3^3; //时钟端 //***it sda=P3^4; //数据段 unsigned char at24c02_du(unsigned char xiexu,unsigned char adde,unsigned char duxu); void at24c02_xie(unsigned char xiexu,unsigned char adde,unsigned char date); #endif |
|
|
|
7.主函数模块
#include #include #include void main() { at24c02_xie(0xa0,20,0xf0); delayms(1000); while(1) { P0=at24c02_du(0xa0,20,0xa1); } } |
|
|
|
你应该注明点文字可能看的人会多些
|
|
|
|
都没有说是什么问题,怎么看???
|
|
|
|
|
|
|
|
|
|
路过帮顶一个,正在学IIC总线
|
|
|
|
{:1:}看看
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 01:43 , Processed in 0.691823 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号