Таймер разработки микроконтроллера C51, расчет времени 10 мс
Таймер разработки микроконтроллера C51, расчет времени 10 мс

В этой статье описано, как указать время для таймера.,Также давай подробноиз Разобрать некоторую информацию отаймер/Связанные со счетчикомиззарегистрироваться。Эта статья довольно длинная, и процесс в середине может показаться скучным. Если вы хотите узнать, как это сделать легко, просто прокрутите до конца, чтобы увидеть, как STC-ISP генерирует регистр таймера инициализации.если быть честным,Такой длинный контент забудется, даже если вы им не пользуетесь.,Так что просто знайте, куда смотреть при использовании из!

0x01: Регистры, связанные с таймером/счетчиком.

В предыдущей статье были представлены понятия кварцевого генератора, тактового цикла и машинного цикла, а также собраны расчеты между частотой кварцевого генератора, тактовым циклом и машинным циклом, а также способы преобразования машинного цикла и счета.

Теоретические знания относительно абстрактны. После того как теоретические знания приобретены, необходимо понять некоторые более конкретные части. Затем давайте познакомимся с регистрами, связанными с таймером.

Регистры таймера/счетчика представлены в P185 руководства, как показано на рисунке ниже.

На рисунке TL0, TL1, HT0 и TH1 — регистры, используемые для счета. Среди них TL0 и TH1 — это младшие 8 бит и старшие 8 бит таймера 0, а TL1 и TH1 — это младшие 8 бит и старшие 8 бит таймера 1.

TCON — регистр управления таймером, а TMOD — регистр режима работы таймера. Их описание находится на странице 60 руководства, как показано ниже.

0x02: Знакомство с регистрами таймера/счетчика.

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 цифр, то, если сложить две счеты, получится больше цифр, которые можно вычислить.

0x03: Знакомство с регистром управления таймером/счетчиком TCON.

Одновременное использование TL0 и TH0 позволяет считать 65536 раз, что составляет около 71 миллисекунды. Но что произойдет, когда счет достигнет 65536?

Инструкции по TCON приведены в руководстве P186, как показано ниже:

Как видно из рисунка выше, когда счетчик превышает 65536, произойдет переполнение. Если используется таймер/счетчик T0, это повлияет на бит B5 регистра TCON, который является битом TF0. Это похоже на бит CF регистра EFLAGS в архитектуре 80x86.

При отсчете времени или подсчете, как мы узнаем, что таймер может быть запущен, или как мы узнаем, что число подсчета было накоплено? Затем счетчик должен переполниться, то есть установить бит флага TF0 или TF1.

0x04: Как позволить таймеру/счетчику завершить указанную продолжительность

Тогда мы знаем, что 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.

0x05: используйте STC-ISP, чтобы указать код инициализации таймера 0.

Мы запросили программное обеспечение STC-ISP. Это программное обеспечение использовалось, когда мы устанавливали программную задержку и записывали HEX-файл. Мы не использовали его в течение длительного времени. Потому что в последнее время я разбираюсь в концептуальном содержании. На этом этапе мы позволяем ему предоставить нам фрагмент кода для инициализации регистров TL0 и TH0, как показано на рисунке ниже.

Как видно на рисунке, начальное значение, указанное в TL0, равно 0x00, а начальное значение, указанное в TH0, — 0xDC, что соответствует тому, что мы рассчитали вручную.

На данный момент с содержанием этой статьи разобрались. Не знаю, понятно ли мое выражение, поскольку в этой части задействовано множество регистров. Конечно, есть и другие регистры для таймеров/счетчиков, которые необходимо ввести. , и что дальше. Но что касается введения трех регистров TL0, TH0 и TF0, я не знаю, смогу ли я выразить это достаточно хорошо, чтобы все поняли. Я старался изо всех сил!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose