完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#define uchar unsigned char #define slavewriteaddr 0x90 //定义从机写控制字节 #define slavereadaddr 0x91 //定义从机读控制字节 typedef unsigned char uint8 ;uint8 date; ***it SDA=P2^0; //定义I2C通信的数据线 ***it SCL=P2^1; //定义I2C通信的时钟线 ***it DS1302=P2^4; //定义DS1302的复位引脚 void delay(uchar x) //延时xms函数 { uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void init_ser() //串口初始化,设置通信速率9600 { TMOD=0x20; SCON=0x50; TH1=0xfd; TL1=0xfd; TR1=1; ET1=0; } void I2C_start() //I2C起始信号 { SCL=1; delay(1); SDA=1; delay(1); SDA=0; delay(1); SCL=0; } void I2C_init() //I2C初始化信号 { SDA=1; delay(1); SCL=1; delay(1); } void I2C_stop() //I2C结束信号 { SDA=0; delay(1); SCL=1; delay(1); SDA=1; delay(1); SCL=0; delay(1); } uint8 I2C_writebyte(uint8 y) //I2C写(发送)一个字节,y为待发送的字节数据 { uchar i; for(i=0;i<8;i++) { SCL=0; delay(1); if(bit(y&0x80)) SDA|=0x01; else SDA&=0xfe; delay(1); SCL=1; delay(1); y<<=1; } SDA=1; delay(1); SCL=1; delay(1); SDA=0; delay(1); SCL=0; delay(1); } uchar I2C_readbyte() //I2C读(接收)一个字节 ,y用于储存读到的字节数据 { uchar i; uint8 y; for(i=0;i<8;i++) { SDA=1; //释放数据总线 SCL=0; y<<=1; if(SDA) y|=0x01; delay(1); SCL=1; } return y; SCL=0; delay(1); SDA=1; delay(1); SCL=1; delay(1); SCL=0; delay(1); } uchar readtype(uchar addr) //I2C从PCF8591的某个通道读取数据 { I2C_start(); I2C_writebyte(slavewriteaddr); delay(1); I2C_writebyte(addr); delay(1); I2C_start(); I2C_writebyte(slavereadaddr); delay(1); date=I2C_readbyte(); I2C_stop(); return date; } void UART_send(uint8 date) //I2C从PCF8591读到的数据发送到串口缓存 { SBUF=date; while(!ti); TI=0; } void main() //主函数 { I2C_init(); init_ser(); DS1302=0; while(1) { readtype(0x42); //从PCF8591通道2读取数据,并设置串口输出使能和单通道输入 UART_send(date); delay(100); } } 各位大虾,现在求助啊 我做串口调试时,发现收到的总是ff,求各位大神帮忙解答下,万分感激 |
|
相关推荐
7个回答
|
|
问题是什么呀,我分享过一个i2c的帖子,有源代码,你可以去看看
|
|
|
|
大虾,文件就是下载到板子上,串口收到的全是ff,芯片地址也是正确的,我都搞了两天了还没搞出来,疑惑呀,希望大虾指点指点下,万分感谢(^o^)/~
|
|
|
|
@曲终人散 怎么没看到说的I2C的帖子,谢谢大虾了
|
|
|
|
大虾,文件就是下载到板子上,串口收到的全是ff,芯片地址也是正确的,我都搞了两天了还没搞出来,疑惑呀,希望大虾指点指点下,万分感谢(^o^)/~ |
|
|
|
huhao0223 发表于 2016-10-6 11:59 我的51学习之IIC/I2C https://bbs.elecfans.com/jishu_941108_1_1.html (出处: 中国电子技术论坛) 你参考一下这个帖子 |
|
|
|
@曲终人散@ 发表于 2016-10-6 13:34 谢谢大虾了,以后还有很多问题请教呢 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3051个成员聚集在这个小组
加入小组2957 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3666 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2359 浏览 1 评论
4823 浏览 1 评论
2585 浏览 1 评论
1359浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3669浏览 2评论
2960浏览 1评论
1552浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:00 , Processed in 1.593789 second(s), Total 93, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号