This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430G2553:在截断时恢复整数转换

Guru**** 2386610 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/998871/msp430g2553-integer-conversion-resuted-in-truncation

器件型号:MSP430G2553

当尝试复位 P1DIR 寄存器中的某些位时、我收到此警告"整数转换导致截断"。

出现问题的行是:P1DIR =~μ F (BIT1 | BIT4);

我已经用这个寄存器中的其他位这样做了、但是我不知道为什么当我使用位7时、它会显示这个警告。 P1DIR 不是8位寄存器吗? 任何人都知道为什么会弹出此警告?¿

这可能是一个非常愚蠢的 qüestion 但我真的找不到我在这里做的事情。 提前非常感谢!

Joan Marc

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    μ~转换(BIT1|Bit7)为整数、存储在一个字节中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢您的回答! 然后、我了解这种"~"会导致这种不需要的整数转换。  但是、在寄存器中重新发送几个位的正确方法是什么? 我应该在两个不同的代码行中执行此操作吗? 如 P1DIR &=~BIT1;然后在另一行中:P1DIR &=~BIT4;? 我真的认为可以在一行代码中重置位、因为在某些情况下、例如 P1DIR &=~(BIT2|BIT3)没有问题;  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以将其转换为一个字节来关闭警告。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢! 我想这不是你第一次回答我的一些问题。 我有很多要学习的东西。

    如果有人想知道、我就是这么做的: P1DIR =(char)~(BIT1|BIT7);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为这(意外)突出了您可能不打算做的其他事情。 我怀疑您想要的是:

    > P1DIR &=~(BIT1 | BIT7);//关闭(*仅限)位1和位7

    > P1DIR |= zero_cross; //打开(仅限)位 zero_cross

    > P1REN &=~Ω(UCA0RXD | UCA0TXD); //关闭 TXD/RXD 引脚的电阻器

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的! 嗯、在本例中、我没有放置&、因为这是一个配置例程、我只在启动时调用、并且我想要设置除1和7之外的所有位。 但是、是的、我通常使用&来仅复位提到的位、而不使用其他位。  

    感谢您的评论!