#include <iom128v.h>
#include <macros.h>
#include "usart.h"
#include "common.h"
#include "delay.h"
#define nopp1 1*5
#define nopp2 2*5
#define nopp3 3*5
#define nopp4 4*5
#define nopp5 5*5
#define SCL_H() PORTB|=(1<<PB6)
#define SCL_L() PORTB&=~(1<<PB6)
#define SDA_H() PORTB|=(1<<PB5)
#define SDA_L() PORTB&=~(1<<PB5)
unsigned char ack=0;
void Start_I2c(void)//SCL为高电平,SDA由高变低,表示起始条件
{
unsigned int i;
SDA_H();
for(i=0;i<nopp3;i++);
SCL_H();
for(i=0;i<nopp5;i++);
SDA_L();
for(i=0;i<nopp5;i++);
SCL_L();
for(i=0;i<nopp3;i++);
}
void Stop_I2c(void)//SCL为高,SDA由低变高,表示停止条件
{
unsigned int i;
SDA_L();
for(i=0;i<nopp3;i++);
SCL_H();
for(i=0;i<nopp5;i++);
SDA_H();
for(i=0;i<nopp5;i++);
}
unsigned char SdaState(void)//读取
{
unsigned char i,j=255;
DDRB&=~(1<<PB5);
PORTB|=(1<<PB5);
for(i=0;i<nopp1;i++);
while((PINB&0x20)!=0)
{
if((j--)==0)
{
DDRB|=(1<<PB5);
return(1);
}
else
for(i=0;i<nopp1;i++);
};
for(i=0;i<nopp1;i++);
DDRB|=(1<<PB5);
return(0);
}
void Sendbyte(unsigned char c)
{
unsigned int i;
unsigned char BitCnt;
DDRB|=(1<<PB5)|(1<<PB6);
PORTB&=~(1<<PB1)|(1<<PB6);
for(BitCnt=0;BitCnt<8;BitCnt++)
{
if((c<<BitCnt)&0x80)
SDA_H();
else
SDA_L();
for(i=0;i<nopp2;i++)
SCL_H();
for(i=0;i<nopp5;i++)
SCL_L();
}
for(i=0;i<nopp2;i++)
SDA_H();
for(i=0;i<nopp3;i++)
SCL_H();
for(i=0;i<nopp2;i++);
if(SdaState())
ack=0;
else
ack=1;
for(i=0;i<nopp2;i++);
if(SdaState())
ack=0;
else
ack=1;
for(i=0;i<nopp1;i++);
SCL_L();
for(i=0;i<nopp2;i++);
}
void Sendword(unsigned int c)
{
unsigned int i;
unsigned char BitCnt;
DDRB|=(1<<PB5)|(1<<PB6);
PORTB&=~(1<<PB1)|(1<<PB6);
for(BitCnt=0;BitCnt<16;BitCnt++)
{
if((c<<BitCnt)&0x8000)
SDA_H();
else
SDA_L();
for(i=0;i<nopp2;i++)
SCL_H();
for(i=0;i<nopp5;i++)
SCL_L();
}
for(i=0;i<nopp2;i++)
SDA_H();
for(i=0;i<nopp3;i++)
SCL_H();
for(i=0;i<nopp2;i++);
if(SdaState())
ack=0;
else
ack=1;
for(i=0;i<nopp2;i++);
if(SdaState())
ack=0;
else
ack=1;
for(i=0;i<nopp1;i++);
SCL_L();
for(i=0;i<nopp2;i++);
}
unsigned char Rcvbyte(void)
{
unsigned int i;
unsigned char retc=0;
unsigned char BitCnt;
SDA_H();
DDRB&=~(1<<PB5);
for(BitCnt=0;BitCnt<8;BitCnt++)
{
for(i=0;i<nopp2;i++);
SCL_L();
for(i=0;i<nopp5;i++);
retc=retc<<1;
for(i=0;i<nopp1;i++);
if((PINB&0x20)!=0)retc=retc+1;
SCL_H();
for(i=0;i<nopp5;i++);
}
SCL_L();
DDRB|=(1<<PB5);
for(i=0;i<nopp2;i++);
return(retc);
}
unsigned int Rcvword(void)
{
unsigned int i;
unsigned int retc=0;
unsigned char BitCnt;
SDA_H();
DDRB&=~(1<<PB5);
for(BitCnt=0;BitCnt<16;BitCnt++)
{
for(i=0;i<nopp2;i++);
SCL_L();
for(i=0;i<nopp5;i++);
retc=retc<<1;
for(i=0;i<nopp1;i++);
if((PINB&0x20)!=0)retc=retc+1;
SCL_H();
for(i=0;i<nopp5;i++);
}
SCL_L();
DDRB|=(1<<PB5);
for(i=0;i<nopp2;i++);
return(retc);
}
void Ack_I2c(unsigned char a)
{
unsigned int i;
if(a==0)SDA_L();
else SDA_H();
for(i=0;i<nopp3;i++);
SCL_H();
for(i=0;i<nopp5;i++);
SCL_L();
for(i=0;i<nopp2;i++);
}
unsigned char ISendStr_byte(unsigned char sla,unsigned int suba,unsigned char info)//write
{
unsigned char i;
Start_I2c();
Sendbyte(sla);
if(ack==0)
return(0);
Sendbyte(suba);
if(ack=0)
return(0);
Sendbyte(info);
if(ack=0)
return(0);
Stop_I2c();
return(1);
}
unsigned char ISendStr_word(unsigned char sla,unsigned int suba,unsigned int info)//write
{
unsigned char i;
Start_I2c();
Sendbyte(sla);
if(ack==0)
return(0);
Sendbyte(suba);
if(ack=0)
return(0);
Sendword(info);
if(ack=0)
return(0);
Stop_I2c();
return(1);
}
unsigned char IRcvStr_byte(unsigned char sla,unsigned int suba)//read
{
unsigned char data;
Start_I2c();
Sendbyte(sla);
if(ack==0)return(0);
Sendbyte(suba);
if(ack==0)return(0);
Start_I2c();
Sendbyte(sla+1);
if(ack==0)return(0);
data=Rcvbyte();
Ack_I2c(1);
Stop_I2c();
return data;
}
unsigned int IRcvStr_Word(unsigned char sla,unsigned int suba,unsigned int *r)//read
{
unsigned int i;
unsigned int m,n;
Start_I2c();
Sendbyte(sla);
if(ack==0)return(0);
Sendbyte(suba);
if(ack==0)return(0);
Start_I2c();
Sendbyte(sla+1);
if(ack==0)return(0);
m=Rcvbyte();//l
Ack_I2c(0);
n=Rcvbyte();//h
*r=n<<8;
*r|=m;
Ack_I2c(1);
Stop_I2c();
return (1);
}
没有合适的资源?快使用搜索试试~ 我知道了~
mcu.zip_iic控制
共954个文件
_c:8个
_h:7个
h:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 145 浏览量
2022-09-24
09:37:23
上传
评论
收藏 1015KB ZIP 举报
温馨提示
单片机控制iic读写程序,主程序是电源的控制程序
资源推荐
资源详情
资源评论
收起资源包目录
mcu.zip_iic控制 (954个子文件)
main.c.150924154126 164B
main.c.150924154442 213B
main.c.150924154612 237B
main.c.150924154638 6KB
usart.c.150924154714 645B
delay.c.150924154750 208B
delay.h.150924161210 69B
usart.h.150924161244 152B
common.h.150924161326 934B
main.c.150924162220 7KB
main.c.150924162618 7KB
main.c.150924162708 7KB
main.c.150924163150 6KB
main.c.150924163326 6KB
main.c.150924163414 6KB
main.c.150924163520 6KB
main.c.150924163546 6KB
main.c.150924163908 6KB
main.c.150924163938 6KB
main.c.150924164002 6KB
main.c.150924164024 6KB
main.c.150924164104 6KB
main.c.150924164132 6KB
main.c.150924164150 6KB
main.c.150924164208 6KB
main.c.150924164326 6KB
main.c.150924164342 6KB
main.c.150924164408 6KB
main.c.150924164434 6KB
main.c.150924164740 6KB
main.c.150924164806 6KB
main.c.150924164834 6KB
main.c.151009185346 6KB
usart.c.151009185350 666B
usart.h.151009185408 156B
usart.c.151009185838 645B
main.c.151009185842 6KB
usart.h.151009185842 152B
main.c.151010110556 6KB
main.c.151010111400 6KB
main.c.151010111410 6KB
main.c.151010111842 6KB
main.c.151010112724 6KB
main.c.151010114716 6KB
main.c.151010115048 6KB
main.c.151010115248 6KB
main.c.151010115354 6KB
main.c.151010115558 6KB
main.c.160307150410 6KB
main.c.160307150826 6KB
main.c.160307151224 6KB
main.c.160411172242 6KB
main.c.161201170200 6KB
main.c.161201170532 6KB
main.c.161201170646 6KB
main.c.170728145324 5KB
main.c.170728145802 5KB
main.c.170728145832 4KB
main.c.170728145928 1KB
main.c.170728150136 1KB
main.c.170728152118 1KB
main.c.170728153024 1KB
main.c.170728153056 1KB
main.c.170728153118 1KB
main.c.170728160720 1KB
main.c.170728162306 1KB
main.c.170728162530 1KB
main.c.170728162618 1KB
main.c.170728162656 1KB
main.c.170728162720 1KB
main.c.170728162814 1KB
main.c.170728162830 1KB
main.c.170728162852 1KB
main.c.170728163520 1KB
usart.c.180503174304 668B
usart.c.180504143204 750B
18B20.c.180504144442 13B
18B20.c.180504150706 124B
18B20.c.180504153710 347B
18B20.c.180504160912 932B
18B20.c.180504163042 3KB
18B20.c.180504163124 3KB
18B20.c.180504163628 3KB
DS18B20.h.180504163850 108B
18B20.c.180504163922 3KB
DS18B20.h.180504163922 111B
18B20.c.180504164032 3KB
18B20.c.180504164352 3KB
18B20.c.180504164442 3KB
18B20.c.180504164722 995B
18B20.c.180504165304 2KB
18B20.c.180504165324 2KB
18B20.c.180504165350 2KB
18B20.c.180504165606 993B
18B20.c.180504170204 1KB
18B20.c.180504170526 1KB
18B20.c.180504171654 1KB
18B20.c.180504172516 4KB
18B20.c.180504172542 4KB
18B20.c.180504172624 4KB
共 954 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
小贝德罗
- 粉丝: 70
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功