IIC的应用
来源:互联网 发布:lol全皮肤软件 编辑:程序博客网 时间:2024/04/20 16:37
主函数文件:
#include <reg52.h>#include "./delay/delay.h"sbit SCL = P2^1;sbit SDA = P2^2;bit ack = 0;#define SUCC 1#define ERR 0void iic_start(){ SDA = 1; SCL = 1; delay_us(1); SDA = 0; delay_us(1); SCL = 0; }void iic_stop(){ SDA = 0; SCL = 1; delay_us(1); SDA = 1; delay_us(1); SCL = 0;}bit iic_send_byte(unsigned char byte){ unsigned char i; for(i = 0; i < 8; i++) { SDA = byte & 0x80; SCL = 1; delay_us(1); SCL = 0; delay_us(1); byte <<= 1;}SCL = 1;SDA = 1;delay_us(1);if(0 == SDA){ ack = 1;}else{ ack = 0;}SCL = 0;return ack;}unsigned char iic_rcv_byte(){ unsigned char i; unsigned char temp; unsigned char a; SDA = 1; for(i = 0; i < 8; i++) { SCL = 0; delay_us(1); SCL = 1; if(SDA){ a = 0x01;}else{ a = 0;}temp |= (a <<(7 - i));delay_us(1); }SCL = 0;return temp;}void iic_ack(){ SDA = 0; SCL = 1; delay_us(1); SCL = 0;}void iic_noack(){ SDA = 1; SCL = 1; delay_us(1); SCL = 0;}unsigned char AT24C02_send_str(unsigned char devaddr,unsigned char romaddr,unsigned char *s,unsigned char num){ unsigned char i; iic_start(); iic_send_byte(devaddr); if(0 == ack) return ERR; iic_send_byte(romaddr); if(0 == ack) return ERR; for(i = 0; i < num; i++) { iic_send_byte(*s); if(0 == ack) return ERR; s++;}iic_stop();return SUCC;}unsigned char AT24C02_rcv_byte(unsigned char devaddr,unsigned char romaddr,unsigned char *s,unsigned char num){ unsigned char i; iic_start(); iic_send_byte(devaddr); if(0 == ack) return ERR; iic_send_byte(romaddr); if(0 == ack) return ERR; iic_start(); iic_send_byte(devaddr + 1); for(i = 0; i < num - 1; i++) { *s = iic_rcv_byte(); iic_ack(); s++;}*s = iic_rcv_byte();iic_noack();iic_stop();return SUCC;}void main(){ unsigned char test[10] = {'1','2','3','4','5','6','7','8','9'}; unsigned char temp[10]; AT24C02_send_str(0xae,100,test,10); delay_ms(200); AT24C02_rcv_byte(0xae,100,temp,10); while(1){ iic_start(); iic_send_byte(0xae); iic_stop(); delay_ms(5);}}
void delay_us(unsigned char t){ while(--t);}void delay_ms(unsigned char t){ while(t--){ delay_us(245); delay_us(245); }}void delay_s(unsigned char t){ while(t--) { delay_ms(200); delay_ms(200); delay_ms(200); delay_ms(200); delay_ms(200); }}
0 0
- IIC的应用
- MC9S12XDP512下IIC模块的应用总结
- IIC存储芯片应用
- SPI,IIC,IIS和SMbus的应用优缺点分析
- s3c2440的IIC应用——读写AT24C02A
- CC2430应用(一)-- AT24CXX的驱动程序 IIC 调试例程
- s3c2440的IIC应用——读写AT24C02A
- SPI,IIC和SMbus的应用优缺点分析
- SPI、IIC、IIS、UART的应用场合级区别
- SPI、IIC、IIS、UART的应用场合级区别
- IIC总线的研究
- atmel7s256 的IIC程序
- STM32的IIC
- 关于IIC的学习
- IIC的疑惑
- IIC的linux驱动
- IIC的linux驱动
- DSP 的IIC控制
- SDWebImage框架梳理以及下载缓存的梳理和运用
- vs2013+opencv300的vs配置:
- hello,thinkphp!打印出来,thinkPHP
- MPV 快捷键
- Spark性能优化指南:基础篇
- IIC的应用
- pair rdd操作
- springMVC+poi导出excel
- 思科设备漏洞研究与利用
- 详解call(),apply()和bind()
- 6.0如何开启应用权限
- php ajax图片上传
- 网卡的组成工作原理
- 不让布局被输入法顶上去解决方案