Имел подобные проблемы с каим-то маленьким ПИКом (675, что-ли - точно не помню). На самом деле, проблема подобная вылезает иногда, связано или с компилером, или с довольно дурацкой структурой портов. Вылечилось подходом аля MCS51 - созданием в ОЗУ копии порта и заменой обращения к битам порта обращением ко всему порту. Определил для себя, что это проблемы процедуры Чтение-Модификация-Запись при обращении к биту. Поскольку задачка была проходная, далее не разбирался.