首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >真值表在C中的实现

真值表在C中的实现
EN

Stack Overflow用户
提问于 2015-07-01 01:30:26
回答 1查看 115关注 0票数 0

我想根据下面的真值表在一个函数中设置各种时钟源。基本上,我想根据传递给setClockSource函数的参数写入TCCR0B寄存器(Atmega328)。表和寄存器的图像如下所示。

我不知道怎样做才是最好的。我考虑将枚举用于各种模式,如下所示。

代码语言:javascript
运行
复制
    enum CLOCK_SOURCE{
      NO_CLOCK_SOURCE=0x0;
      NO_PRESCALING=0x01;
      CLK_8=0x02;
     // and so on
}

但问题出在setClockSource()函数中,我应该如何在不影响位3-7的情况下写入TCCR0B寄存器?我应该先清除最后3位,然后用TCCR0B对TIMER_MODE值进行OR运算吗?如果不清除,我可能不能保证最后3位的值是正确的。有效的方法是什么?

代码语言:javascript
运行
复制
void setClockSource (enum CLOCK_SOURCE clockSource)
{
    TCCR0B&=0xF8;    // First Clear last 3 bits
    TCCR0B|=clockSource;
}

我们是否有库函数可用于设置时钟源?我用的是Atmega工作室

EN

回答 1

Stack Overflow用户

发布于 2015-07-01 01:33:54

如下所示:

代码语言:javascript
运行
复制
void setClockSource (CLOCK_SOURCE clockSource)
{
    TCCR0B = TCCR0B & 0xF8 | clockSource;
}

因此,您将保持高位并设置低位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31144654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档