博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MCU开发之I2C通信
阅读量:6267 次
发布时间:2019-06-22

本文共 1907 字,大约阅读时间需要 6 分钟。

  程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下: 

PSW.7(Cy):进位标志位。 
PSW.6(AC):辅助进位标志位,又称为半进位标志位。 
PSW.5(F0):用户标志位。 
PSW.4、PSW.3(RS1和 RS0):寄存器组选择位。 
PSW.2(OV):溢出标志位。 
PSW.1(空缺位):此位未定义。 
PSW.0(P):奇偶校验位

1 /*    I2C通信流程  2     a、初始化I2C总线;  3     b、发送起始信号;  4     c、发送目标地址;(芯片的硬件地址)  5     d、等待应答;  6     e、发送或接收数据,这取决于c中目标地址中最后一位的设置;  7     f、应答;  8     g、从c-f循环;  9     h、发送终止信号; 10 */ 11  12  13 #include 
14 #define uchar unsigned char 15 #define uint unsigned int 16 17 void delay() 18 { 19 for(;;) 20 ; 21 } 22 23 //I2C的初始化 24 void init() 25 { 26 SDA = 1; 27 delay(); 28 SCL = 1; 29 delay(); 30 } 31 32 //发送起始信号 33 void start() 34 { 35 SDA = 0; 36 delay(); 37 } 38 、 39 //发送目标地址 40 //发送函数,发送目标地址可以调用发送函数即可 41 void write(uchar content) 42 { 43 uchar i; 44 uchar temp = content; 45 46 for(i=0;i<8;i++) 47 { 48 temp=temp<<1; //左移一位 移出的一位在CY中,涉及程序状态字PSW 49 SCL = 0; 50 delay(); 51 SDA = CY; 52 delay(); 53 SCL = 1; 54 delay(); 55 } 56 57 SCL = 0; 58 delay(); 59 SDA = 1; 60 delay(); 61 } 62 63 //等待应答 ACK 64 /* 65 从机应答,在SCL为高电平时,将SDA拉低;即产生应答信号; 66 */ 67 void respons() 68 { 69 uchar i; 70 SCL=1; 71 delay(); 72 while((SDA==1)&&(i<250))//没收到应答,我等!~~ 73 i++; //等了250次没收到就不管他了,就当他收到了-_- 74 //其实没收到的话可以结束程序的 75 SCL=0; 76 } 77 78 //接收数据;发送、接收数据,取决于前面地址字的最后一位。读/写 79 uchar read() 80 { 81 uchar k, i = 0; 82 for(i=0;i<8;i++) 83 { 84 SCL=1; 85 delay(); 86 k=(k<<1)|SDA;//先左移一位,再在最低位接受当前位 87 SCL=0; 88 delay(); 89 } 90 return k; 91 } 92 93 void finish() 94 { 95 SCL = 1; 96 delay() 97 SDA = 0; 98 delay(); 99 SDA = 1;100 delay();101 }

 

转载地址:http://dgbpa.baihongyu.com/

你可能感兴趣的文章
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
查看>>
poj 2828【线段树 单点更新】
查看>>
java构建二叉树和二叉树的遍历
查看>>
svn+jenkins+docker 发布 java 项目(maven)
查看>>
一步一步学NUnit(1)
查看>>
android开发
查看>>
1027 方程组的根
查看>>
菜鸟网络股权分配:阿里巴巴占51%的股份
查看>>
《Pro SQL Server Internals》部分翻译(P36-P45)
查看>>
菜鸟nginx源代码剖析数据结构篇(十) 自旋锁ngx_spinlock
查看>>
广州高清卫星地图 用百度卫星地图server下载 含标签、道路数据叠加 可商用
查看>>
mysql手记
查看>>
JAVA 不同类载入器命名空间的理解
查看>>
数据库恢复之丢失联机重做日志文件的恢复
查看>>
C#发邮件
查看>>
3_1 wp8应用生命周期与导航事件[wp8特色开发与编程技巧]
查看>>
读取表结构到变量中
查看>>
SQL Server安全 2:身份验证
查看>>
算法集锦(二)
查看>>
ThinkPHP5 公共函数
查看>>