Моя задача:
При нажатии кнопки:
- зажечь порт PORTB.4,
- после 20 мс
- зажечь порт PORTB.3,
- подождать 20 мс
- выключить PORTB.4.
При последующем нажатии кнопки:
- зажечь порт PORTB.4,
- после 20 мс
- потушить порт PORTB.3,
- подождать 20 мс
- выключить PORTB.4.
Проблема: код работает, но порядок срабатывания портов в Proteus отличается. Вместо PORTB.4, первым зажигается PORTB.3, хотя по коду этого не должно происходить.

Код: Выделить всё
#include <tiny13.h>
#include <delay.h>
bit val=0;
bit old_val=0;
bit state=0;
bit mute=0;
// Declare your global variables here
void main(void)
{
DDRB=0b00011110;
PORTB=0b00100001;
while (1) {
val = PINB.0;
delay_ms(10);
if ((val == 0 && old_val == 0))
{state = ~state;}
old_val = ~val;
if (state == 1) {
PORTB.4 = 1;
delay_ms(20);
PORTB.3 = 1;
delay_ms(20);
if (mute == 1) {
PORTB.4 = 0;
}
mute=0;
}
else {
PORTB.4 = 1;
delay_ms(20);
PORTB.3 = 0;
delay_ms(20);
if (mute == 0) {
PORTB.4 = 0;
}
mute=1;
}
}
}

