专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
NXP
求一个MC9S12XS的IIC程序,谢谢!!
2020-02-11 10:05
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
4283
4
4
如题,按照以前STM32模拟IIC、ATMEGA128模拟IIC的例子改,各种调不通。。郁闷,谁有赐一吧。。。谢谢!!!!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
heyangfengyue
2020-02-11 17:02
谢天谢地,终于有人回复!!
我把工程文件贴出来,还有模拟IIC的关键程序
我调试的结果是,SDA一直是高电平。手头没有示波器,只有万用表,所以只能求助万能的坛子啦,希望大家能指点一二,同时也能帮助像我一样的人。再次感谢!
void IIC_Init(void)
{
SCL_OUT;
SDA_OUT;
IIC_SCL=1;
IIC_SDA=1;
}
void IIC_Start(void)
{
SDA_OUT; //sda线输出
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;//START:when CLK is high,DATA change form high to low
delay_us(4);
IIC_SCL=0;//钳住I2C总线,准备发送或接收数据
}
void IIC_Stop(void)
{
SDA_OUT;//sda线输出
IIC_SCL=1;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SCL=1;
IIC_SDA=1;//发送I2C总线结束信号
delay_us(4);
}
void IIC_Ack(void)
{
IIC_SCL=0;
SDA_OUT;
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(3);
IIC_SCL=0;
delay_us(5);
}
void IIC_Send_Byte(uchar txd)
{
uchar t;
SDA_OUT;
IIC_SCL=0;//拉低时钟开始数据传输
for(t=0;t<8;t++)
{
IIC_SCL=0;
delay_us(2);
if(txd&0x80)
IIC_SDA=1;
else
IIC_SDA = 0;
txd <<= 1;
delay_us(2); //对TEA5767这三个延时都是必须的
IIC_SCL=1;
delay_us(2);
}
IIC_Ack();
}
uchar IIC_Read_Byte(void)
{
unsigned char i,receive=0;
// SDA_OUT;
// IIC_SDA=0;
// delay_us(2);
SDA_IN;//SDA设置为输入
delay_us(2);
for(i=0;i<8;i++ )
{
receive<<=1;
IIC_SCL=1;
delay_us(2);
if(READ_SDA)
receive |= 0x01;
IIC_SCL=0;
delay_us(2);
}
IIC_Ack(); //发送ACK
return receive;
}
我调试的感觉,是写数据应该没问题,但是读不出来数。。。
加载中...
查看其它4个回答
一周热门
更多
>
相关问题
手把手学会例程系列:i.MX<二>:图解i.mx53源码补丁+烧录(...
59 个回答
从零开始MQX开发之二 创建与调试MQX项目
24 个回答
7009: Trim value invalid, value is blank or zero是什么错误
0 个回答
怎么头像消失啊?
23 个回答
求推荐KINETIS评估板:必备USB HS,ETHERNET
5 个回答
相关文章
基于IMX6Q移植uboot2018-09——添加单板
0个评论
IMX6UL定时器按键消抖实验
0个评论
I.MX6U处理器LED灯点亮汇编程序代码编写
0个评论
在NXP I.MX6上做一个基于Opencv和OpenGL的打砖块游戏
0个评论
【RFID安全】浅谈卡片破解
0个评论
LM75a
0个评论
emwin字库制作及汉字显示
0个评论
STM32学习之I2C
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
NXP
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
我把工程文件贴出来,还有模拟IIC的关键程序
我调试的结果是,SDA一直是高电平。手头没有示波器,只有万用表,所以只能求助万能的坛子啦,希望大家能指点一二,同时也能帮助像我一样的人。再次感谢!
void IIC_Init(void)
{
SCL_OUT;
SDA_OUT;
IIC_SCL=1;
IIC_SDA=1;
}
void IIC_Start(void)
{
SDA_OUT; //sda线输出
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;//START:when CLK is high,DATA change form high to low
delay_us(4);
IIC_SCL=0;//钳住I2C总线,准备发送或接收数据
}
void IIC_Stop(void)
{
SDA_OUT;//sda线输出
IIC_SCL=1;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SCL=1;
IIC_SDA=1;//发送I2C总线结束信号
delay_us(4);
}
void IIC_Ack(void)
{
IIC_SCL=0;
SDA_OUT;
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(3);
IIC_SCL=0;
delay_us(5);
}
void IIC_Send_Byte(uchar txd)
{
uchar t;
SDA_OUT;
IIC_SCL=0;//拉低时钟开始数据传输
for(t=0;t<8;t++)
{
IIC_SCL=0;
delay_us(2);
if(txd&0x80)
IIC_SDA=1;
else
IIC_SDA = 0;
txd <<= 1;
delay_us(2); //对TEA5767这三个延时都是必须的
IIC_SCL=1;
delay_us(2);
}
IIC_Ack();
}
uchar IIC_Read_Byte(void)
{
unsigned char i,receive=0;
// SDA_OUT;
// IIC_SDA=0;
// delay_us(2);
SDA_IN;//SDA设置为输入
delay_us(2);
for(i=0;i<8;i++ )
{
receive<<=1;
IIC_SCL=1;
delay_us(2);
if(READ_SDA)
receive |= 0x01;
IIC_SCL=0;
delay_us(2);
}
IIC_Ack(); //发送ACK
return receive;
}
我调试的感觉,是写数据应该没问题,但是读不出来数。。。
一周热门 更多>