我正在学习如何在AtmelStudio中调试AVR。所以我写了一个简单的程序来测试。但是它可以正确编译,但不能像预期的那样执行。我写了下面的代码ATmega32
#include <avr/io.h>
int main(void)
{
DDRA = 0xFF;
PORTA = (10/100)*255;
return 0;
}并从“调试”菜单中选择“开始调试”和“中断”。在IO窗口中,我选择了I/O Port (PORTA)。我按了F11键一步一步地执行。只有DDRD被写入所需的值,但是porta没有被分配任何值,并且它完成了调试。为什么PORTA没有写任何东西。
发布于 2017-10-04 02:15:32
由于整数除法在C中的工作方式,10/100的计算结果为0,因此您实际上将0赋值给PORTA。如果您看到PORTA的值为0,则您的程序的行为符合预期。如果不看截图或短视频,很难相信你说的"porta没有任何价值“。
你可以考虑写这样的代码:
PORTA = 255 * 10 / 100;https://stackoverflow.com/questions/46547580
复制相似问题