Предположим, что таймер 1 из 8051 закончил считать и поднял TF1. Поскольку он откатывается к 0, то в настоящее время TH1=00,TL1=00, и предположим, что бит TR1 все еще установлен. В этот момент, если мы просто очистим только TF1, будет ли он снова считать с 00? Потому что мы еще не остановили таймер.
Следующий вопрос: допустим, TF1 установлен, но TR1 сброшен, можем ли мы в этот момент загрузить TH1 и TL1, используя # адресацию (немедленно)?
В этот момент, если мы просто очистим только TF1, будет ли он снова считать с 00? Потому что мы еще не остановили таймер.
TF1
установится после переполнения Таймера-1. Теперь, если вы очистите TF1
, но сохраните TR1
установку, таймер продолжит работать. После переполнения он перезапустится с увеличением 0x00
или предварительно загруженным значением TH1
(зависит от режима таймера).
Таким образом, в случае 16-битного режима таймера вам необходимо очистить оба TF1
и TR1
, перезагрузить регистр Timer-1 и TR1
снова установить, чтобы продолжить тот же цикл.
В случае режима 8-битного таймера с автоматической перезагрузкойTF1
к суффиксу добавляется только очистка . Нет необходимости очищать TR1
, так как таймер автоматически перезапускается с предварительно загруженного значения в формате TH1
.
допустим, TF1 установлен, но TR1 сброшен, можем ли мы в этот момент загрузить TH1 и TL1, используя # адресацию (немедленно)?
Да, вы можете. И как только вы установите TR1
, таймер начнет работать с загруженного значения. Но вы должны очистить TF1
, чтобы не пропустить событие следующего переполнения таймера.
Саян
Миту Радж