У вас кейл -51 следовательно MCS-51, следовательно атомарны только
чтения байтов. Вы читаете 4 байта, следовательно чтение не
атомарно, следовательно величина может изменится во время чтения.
При проверке temp!=systick время чтения systick больше чем при
temp2 =systick следовательно операция temp!=systick чаще приводитк
к глюкам, но это не значит что и код temp2 =systick тоже
безглючный. Вам нужно либо прерывания запрещать на время чтений
systick либо организовывать мютекс, семафор или еще какую блокировку.