打印

STC的IIC从机中断地址寄存器的设置疑惑

[复制链接]
1984|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 逍遥派掌门 于 2019-3-20 18:29 编辑

      先说题外话:最近发现 STC 的技术支持很忙,而且脾气也很大,而且只能电话咨询。话说,代码的问题,能在电话里说得清楚?

这个疑惑是关于STC8F的IIC从机中断的问题,

先看STCF手册描述:



设置参数:
void iic_init(void)
{
P_SW2=0xB0;     // 设置IIC的脚为  P3.2,P3.3

    I2CCFG = 0x81;      
    I2CSLADR = 0x9C;    /////////////////////////////  设备地址是 0x4E,根据手册将设备地址左移1位
    I2CSLST = 0x00;
    I2CSLCR = 0x78;                  
}
IIC从机中断:

void I2C_Isr() interrupt 24  
{
   if (I2CSLST & 0x40)           // START
    {
        I2CSLST &= ~0x40;      
    }
    else if (I2CSLST & 0x20)    // RECEIVE
    {
        I2CSLST &= ~0x20;                     
        iic_receive_buffer[iic_receive_length++]=I2CRXD;
    }
    else if (I2CSLST & 0x08)    // STOP
    {
        I2CSLST &= ~0x08;     
         iic_receive_buffer[iic_receive_length++]=0x0D;      
    }
}
此时串口输出的数据:

显示是没有收到数据。

==========================美丽的分割线=================================
再看改动的设置参数:
void iic_init(void)
{
P_SW2=0xB0; // 设置IIC的脚为 P3.2,P3.3

I2CCFG = 0x81;
I2CSLADR = 0x4E;  ///////////////////////////// 设备地址是 0x4E,没有按手册的要求,直接写 0x4E
I2CSLST = 0x00;
I2CSLCR = 0x78;
}
再看串口输出的数据:


这样就正确了!


***********************************疑惑的头晕线*********************************************


   什么情况啊?! 按照STC的数据手册写的,居然得不到正确的结果?!!!!!


使用特权

评论回复

相关帖子

沙发
零三翟邢止胃| | 2019-3-21 09:38 | 只看该作者
感谢楼主分享啊!!!!!

使用特权

评论回复
板凳
weiyu2019| | 2020-2-22 19:21 | 只看该作者
强人,佩服死了。呵呵,不错啊

使用特权

评论回复
地板
zeshoufx| | 2020-6-4 14:09 | 只看该作者
谢谢分享,,,,,,

使用特权

评论回复
发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

528

帖子

2

粉丝