Вставлю свои 3 копейки.
У вас контроллер на 8МГц работает... используется только delay_ms(200) и delay_ms(1)
Чего бы тогда вот такое не вставить?
Код:
void delay200ms()
{
// Generated by delay loop calculator
// at http://www.bretmulvey.com/avrdelay.html
//
// Delay 1 600 000 cycles
// 200ms at 8.0 MHz
asm volatile (
" ldi r18, 9" "\n"
" ldi r19, 30" "\n"
" ldi r20, 229" "\n"
"1: dec r20" "\n"
" brne 1b" "\n"
" dec r19" "\n"
" brne 1b" "\n"
" dec r18" "\n"
" brne 1b" "\n"
" nop" "\n"
);
}
Код:
void delay1ms()
{
// Generated by delay loop calculator
// at http://www.bretmulvey.com/avrdelay.html
//
// Delay 8 000 cycles
// 1ms at 8.0 MHz
asm volatile (
" ldi r18, 11" "\n"
" ldi r19, 99" "\n"
"1: dec r19" "\n"
" brne 1b" "\n"
" dec r18" "\n"
" brne 1b" "\n"
);
}
ну и т.д.
PS: скомпилил код из репозитория, экономится почти килобайт! 86,3% против 99%
UPD: Сделал форк на гитхабе https://github.com/EvgeniyRU/8515_TTL_tester начальный коммит 7024 байт 85,7% контроллера занято
PS2: ну и сам тестер находится тут http://www.8bit.lt/ru/ic-tester а то фиг найдешь в этой теме
UPD2: что-то второй коммит еще больше места освободил 5862 байт, 71.6% чипа занято, надеюсь компилятор ничего не выкинул, хотя глобальные переменные могут так увеличивать код.
UPD3: в 4-ом коммите немного поменял индикацию, символ плохой микросхемы поменял с "o" на "-", а в режиме сканирования с "oooo" на "Err"
PS3: как будет время - перепишу тесты, а то жуть чего намудрили, для каждого теста отдельная функция... это ж можно решить одной функцией и структурой с масками и параметрами
PS4: еще думаю выкинуть одну кнопку, т.к. достаточно кнопки тест и при длительном её нажатии запускать сканирование, тогда кнопки можно скинуть на порт E и весь порт B отдать под пины тестируемой микросхемы до 24 ног.