I2C 小结
来源:互联网 发布:txt阅读器 for mac 编辑:程序博客网 时间:2024/06/07 06:03
#include<reg52.h>#define uchar unsigned charsbit sda=P2^0;sbit scl=P2^1;uchar a;void delay(){ ; ; }void start() {sda=1;delay();scl=1;delay();sda=0;delay();}void stop(){sda=0;delay();scl=1;delay();sda=1;delay();}void respons() {uchar i;scl=1;delay();while((sda==1)&&(i<250))i++;scl=0;delay();}void init(){sda=1;delay();scl=1;delay();}void write_byte(uchar date){uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0; delay();sda=CY;delay();scl=1;delay();}scl=0;delay();sda=1;delay();}uchar read_byte(){uchar i,k;scl=0;delay();sda=1;delay();for(i=0;i<8;i++) /*4,数据位的传输是边沿触发,因此每次确定一位sda的电平的时候就来一个高定平然后再下降,利用这个边沿就把数据发送出去了。循环8次即把一个字节都传完了*/{scl=1;delay();k=(k<<1)|sda;scl=0;delay();}return k;}void delay1(uchar x){uchar a,b;for(a=x;a>0;a--) for(b=100;b>0;b--);}void write_add(uchar address,uchar date){start();write_byte(0xa0);respons();write_byte(address);//发送从机地址respons();write_byte(date);//写入数据respons();stop();//结束}uchar read_add(uchar address){uchar date;start();write_byte(0xa0);respons();write_byte(address);respons();start(); //另外一个方向开始write_byte(0xa1); //数据的传输方向有所改变respons();date=read_byte();//将读的数据返回stop();return date;}void main(){init();write_add(23,0x55);delay1(100);P1=read_add(23);while(1);}/*学完i2c小结下吧。 I2c主要就是包括三大块函数 信号函数; 检测或者是反馈 接受函数;其包括读的函数 发送函数;其包括写的函数; 1,一条为时钟控制线;一条位数据线; 2,然而数据有低有高,有两个方向,从而导致我们在写程序的时候很麻烦, 如果,不看时序图,容易乱。 3,始终记得 数据是在scl为低时才可以发生改变; sda有时候表示状态,有时候表示的数传输的数据,一定要时刻记住。*/
阅读全文
0 0
- <I2C小结>
- I2C 小结
- I2C 小结
- I2C调试小结
- linux I2C 驱动小结
- I2C驱动小结---心得
- I2C协议小结
- stm32f3的i2c使用小结
- stm32f3的i2c使用小结
- SPI和I2C调试小结
- Audio codec FPGA 验证时I2C读写寄存器小结
- I2C
- I2C
- i2c
- I2C
- I2C
- i2c
- i2c
- 1-html-基础
- hdu 6140 Hybrid Crystals
- 全排序dfs深搜回溯法
- 2017年8月12日提高组T2 YMW的数学题
- 二十三种设计模式之中介者模式
- I2C 小结
- PowerDesigner 导出表结构 到Excel
- 基于TCP的服务器与客户端的搭建
- 前端开发规范
- Navicat通过跳板机连接MySQL(2层跳转)
- HDU 6138 Fleet of the Eternal Throne (后缀数组+字典树, 2017 Multi-Univ Training Contest 8)
- kaldi学习第二天
- PHP入门(第五弹:变量)
- Java 工具类