|
Компьютеры Уголок для решения бытовых компьютерных проблем. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
10.10.2013, 09:16 | #11 |
да, похоже что ошибся с объемом кода.
Возможно действительно по разному компилирует. Поставил avr studio 6 (в связи с тем, что на основном ПК она поломалась) на виртуалку, и там мучаюсь. пошел другим путем - смотрю в дебаггере шаги. Взял из программы кусок кода, и немного укоротил - сделал чисто дешифратор: #include <avr/io.h> int main(void) { DDRA = 0xFF; PORTA = 0b00000000; DDRD = 0x00; PORTD = 0b00000000; for (; { if ((PIND0==1)&&(PIND1==0)&&(PIND2==0)) PORTA = 0b00000100; else if ((PIND0==1)&&(PIND1==1)&&(PIND2==0)) PORTA = 0b00110100; else if ((PIND0==0)&&(PIND1==1)&&(PIND2==0)) PORTA = 0b00100100; else if ((PIND0==0)&&(PIND1==1)&&(PIND2==1)) PORTA = 0b00000010; else if ((PIND0==0)&&(PIND1==0)&&(PIND2==1)) PORTA = 0b00000010; else if ((PIND0==1)&&(PIND1==0)&&(PIND2==1)) PORTA = 0b00111100; else PORTA = 0b00000001; } } По шагам, первые 4 (назначение портов) дебаггер отрабатывает, а потом сразу прыгает в строку else PORTA = 0b00000001; не отрабатывая никакие другие. и оттуда его ничем не выудить... ошибок, предупреждений нет.
__________________
Надейся на лучшее, расчитывай на худшее Люблю Таврооргию. Такого пох№зма и подъ№балова нигде не встретишь! (c) Lusi |
|