Atmel Studio因代码优化而面临一些问题

时间:2017-08-19 17:36:26

标签: atmelstudio atmega16

我正在使用atmel studio 7.我有一个关键检测逻辑,可以在关闭优化(-O0)时起作用,但在打开时不起作用。我正在使用ISR检测密钥,有四个按键以this Image

的矩阵方式连接到PORTB 0..3

PB2和PB3始终设置为输入上拉。我在输入三态和输出低之间切换PB0和PB1(仅使用DDRB0和DDRB1位)。以下是关键检测逻辑(内部ISR):

uint8_t tmp=0,v=0;
for(uint8_t i=0;i<2;i++){
    DDRB=(DDRB&0xFC)|(0x01<<i);
    tmp=(~PINB)&0x0C;if(tmp!=0x00) v=v|tmp|(0x01<<i);
    DDRB=DDRB&0xFC;while((PINB&0x0C)!=0x0C);  //This line
}

选择'优化尺寸(-Os)'。当我按下任意键时,删除'tmp'的第5行值变化。否则tmp始终读为零。我需要第5行去抖动逻辑。

那么,我在这里错过了什么?

0 个答案:

没有答案