Дорого времени суток. История такова. Мне понадобилось задержка на 10 секунд. Взял я довольно известную программу PIC_Delay, сгенерировал код, вставил его в основной код программы. Задача программы очень простая, это включить светодиод, подождать 10 секунд и отключить его. В общем скомпилировал я код, зашил его в камень, ну и проверяю все это дело в железе. Запускаю пик (подаю питания) и одновременно запускаю таймер (секундомер) на компьютере, проходит 8 секунд и светодиод гаснет, а должен через 10 секунд. Я взял другой камень, зашил эту же прошивку, та же фигня. В протеусе симуляция проходит нормально, а вот в железе на 2 секунды раньше. В чем проблема, я так и не могу понять. Может кто-то сталкивался с подобным?
Pic работает от внутреннего генератора 4 мГц. Вот основной код:
main bsf porta,1
call delay
bcf porta,1
m1 nop
goto m1
delay movlw .223
movwf Reg_1
movlw .187
movwf Reg_2
movlw .51
movwf Reg_3
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
decfsz Reg_3,F
goto $-5
nop
nop
return
END