/******************************************************************************/ void led_disp (void) { if (++cnt>=200) { cnt=0; if ((PINB&0XF)==0) PORTB=(PORTB|1); else if ((PINB&0XF)==0X8) PORTB=(PORTB&0XF0); else PORTB<<=1; } } /******************************************************************************/ void avr_init (void) { WDTCR=0B00011001; TCCR0=0B00000010; DDRB=(0XF|(1<<PB6)); MCUCR=0; PORTB|=((1<<PB7)|(1<<PB5)|(1<<PB4)); WDR(); } 以上这两个子程序在主程序中调用时竟然把PB6输出高电平,可是程序中没操作PB6口啊,按道理讲应该是PB6口始终输出0,把PB6设为输入也同样使能了上拉,测试把LED—DISP全部屏蔽就好了,可我怎么也查不出问题出在哪里,请高手帮忙分析一下,谢谢了! 另外在MAIN 函数开头有一句:PORTB=0; |