В этой статье описано, как указать время для таймера.,Также давай подробноиз Разобрать некоторую информацию отаймер/Связанные со счетчикомиззарегистрироваться。Эта статья довольно длинная, и процесс в середине может показаться скучным. Если вы хотите узнать, как это сделать легко, просто прокрутите до конца, чтобы увидеть, как STC-ISP генерирует регистр таймера инициализации.если быть честным,Такой длинный контент забудется, даже если вы им не пользуетесь.,Так что просто знайте, куда смотреть при использовании из!
В предыдущей статье были представлены понятия кварцевого генератора, тактового цикла и машинного цикла, а также собраны расчеты между частотой кварцевого генератора, тактовым циклом и машинным циклом, а также способы преобразования машинного цикла и счета.
Теоретические знания относительно абстрактны. После того как теоретические знания приобретены, необходимо понять некоторые более конкретные части. Затем давайте познакомимся с регистрами, связанными с таймером.
Регистры таймера/счетчика представлены в P185 руководства, как показано на рисунке ниже.
На рисунке TL0, TL1, HT0 и TH1 — регистры, используемые для счета. Среди них TL0 и TH1 — это младшие 8 бит и старшие 8 бит таймера 0, а TL1 и TH1 — это младшие 8 бит и старшие 8 бит таймера 1.
TCON — регистр управления таймером, а TMOD — регистр режима работы таймера. Их описание находится на странице 60 руководства, как показано ниже.
TL0 и TH0 образуют Таймер 0, а TL1 и TH1 формируют Таймер 1. Здесь мы сосредоточимся на таймере 0. В конце концов, концепции регистров обоих таймеров одинаковы.
TL0 — это 8-битный регистр. 8-битный регистр может представлять 256 состояний. То есть, если TL0 используется отдельно, можно посчитать 256 раз. Если мы посчитаем всего 256 раз, частота кварцевого генератора на нашей макетной плате может составлять всего 256*1,085 микросекунды, что примерно равно 277 микросекундам. Слишком коротко!
TH0 также является 8-битным регистром. Если вы используете для подсчета 16-битный регистр, состоящий из TL0 и TH0, это эквивалентно счету 65536 раз, что эквивалентно 65536 * 1,085 микросекунды, что примерно равно 71 миллисекунде. Тоже ненадолго, но гораздо лучше, чем просто использовать TL0!
На самом деле нам знакома ситуация, когда два 8-битных регистра образуют 16-битный регистр. Например, в архитектуре 80x86 аналогичная ситуация наблюдается с регистрами общего назначения, такими как AH и AL в AX и BH и BL в BX. , и т. д. . Это всем понятно. Если вы не понимаете, подумайте об этом. Если на счетах 8 цифр, то, если сложить две счеты, получится больше цифр, которые можно вычислить.
Одновременное использование TL0 и TH0 позволяет считать 65536 раз, что составляет около 71 миллисекунды. Но что произойдет, когда счет достигнет 65536?
Инструкции по TCON приведены в руководстве P186, как показано ниже:
Как видно из рисунка выше, когда счетчик превышает 65536, произойдет переполнение. Если используется таймер/счетчик T0, это повлияет на бит B5 регистра TCON, который является битом TF0. Это похоже на бит CF регистра EFLAGS в архитектуре 80x86.
При отсчете времени или подсчете, как мы узнаем, что таймер может быть запущен, или как мы узнаем, что число подсчета было накоплено? Затем счетчик должен переполниться, то есть установить бит флага TF0 или TF1.
Тогда мы знаем, что TL0 и TH0 можно использовать для подсчета 65536 раз. После подсчета 65536 раз пройдет 71 миллисекунда. Когда будет отсчитана 71 миллисекунда, будет установлен TF0. Но если мы хотим посчитать 10 миллисекунд, как нам установить TF0? Фактически, мы можем указать начальное значение для TL0 и TH0. Только не позволяйте TL0 и TH0 начинать отсчет с 0.
Мы можем вычислить это следующим образом: 10 миллисекунд / 1,085 микросекунды = 9216, что эквивалентно 10 миллисекундам, а таймер/счетчик должен отсчитать 9216 раз. Итак, после подсчета 9216 мы хотим, чтобы был установлен TF0, так со скольки нам нужно начать отсчет? То есть 65536 - 9216 = 56320, то есть мы можем позволить TL0 и TH0 начать отсчет с 56320, то есть когда мы даём начальное значение TL0 и TH0, это будет 56320. Пусть они начнут отсчет с 56320, и после счета 9216 дойдут до 65536. В это время установлен TF0 и прошло 10 миллисекунд.
Преобразуйте 56320 в шестнадцатеричное число, то есть 0xDC00, затем установите TL0 на 0x00 и установите TH0 на 0xDC, чтобы они могли начать отсчет с 56320.
Мы запросили программное обеспечение STC-ISP. Это программное обеспечение использовалось, когда мы устанавливали программную задержку и записывали HEX-файл. Мы не использовали его в течение длительного времени. Потому что в последнее время я разбираюсь в концептуальном содержании. На этом этапе мы позволяем ему предоставить нам фрагмент кода для инициализации регистров TL0 и TH0, как показано на рисунке ниже.
Как видно на рисунке, начальное значение, указанное в TL0, равно 0x00, а начальное значение, указанное в TH0, — 0xDC, что соответствует тому, что мы рассчитали вручную.
На данный момент с содержанием этой статьи разобрались. Не знаю, понятно ли мое выражение, поскольку в этой части задействовано множество регистров. Конечно, есть и другие регистры для таймеров/счетчиков, которые необходимо ввести. , и что дальше. Но что касается введения трех регистров TL0, TH0 и TF0, я не знаю, смогу ли я выразить это достаточно хорошо, чтобы все поняли. Я старался изо всех сил!