该死的stm8 iic

[复制链接]
4726|5
 楼主| solo777 发表于 2013-7-24 21:17 | 显示全部楼层 |阅读模式
我用硬件iic,中断方式。

在发送slave地址完成后判断地址发送完成。

使用了I2C->SR1寄存器。

可是那个寄存器怎么都不能访问

我把sr1寄存器复制到临时变量t1.

在t1那里设置断点。
我明明看着。I2C->SR1=02;
可是执行完,
t1=I2C->SR1;
后,t1,竟然是0.

我真要抓狂了!!!!!!!!测试了无数次。明明sfr区域查看的I2C->SR1=02;可是执行复制,永远不能得到数据。
 楼主| solo777 发表于 2013-7-24 21:18 | 显示全部楼层
汇编是
    00871B    C65217         LD        A, I2C_SR1
    00871E    C70404         LD        t1, A

就这么简单。我查看A 寄存器是0;
 楼主| solo777 发表于 2013-7-24 22:53 | 显示全部楼层
找到问题了。

AN3281的tim4 时钟设置那里错误。
拿起书本 发表于 2013-7-25 16:08 | 显示全部楼层
IIC确实不好用呀,这也是本人的本人的硬伤,进来学习一下,感谢分享
zeluo 发表于 2013-7-25 19:10 | 显示全部楼层
这一块   模拟确实比较吃力   楼主   兄弟帮你顶一个   看看别人的意见   先顶一个
tqy涂清云 发表于 2013-10-17 14:31 | 显示全部楼层
#include "stm8s105k6t6.h"

void Init_IIC(void )
{
         
        CLK_PCKENR1 |= 0x01;
        I2C_FREQR |= 0x10;         //输入外设时钟频率为16MHz
        I2C_CR1   |= 0x01;         //禁止I2C外设
        I2C_CCRH  &= ~0xcf;
        I2C_CCRL  &= ~0xff;        
        I2C_TRISER = 0x11;
        I2C_CCRL   = 0x10;
        I2C_CCRH   = 0x00;      
        I2C_CR1   |= 0x01;        //开启I2C外设
        I2C_CR2   |= 0x04;        //当前接收字节返回应答
        I2C_CR2   &= ~0x08;
        I2C_OARL   = 0x86;       //自身地址
        I2C_OARH   = 0x40;
              
}


我的IIC这样初始化  确启动不了。在IAR里面编译的。请楼主指教下啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

83

主题

375

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部