Ned Flanders
-
Постов
8 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные Ned Flanders
-
-
Учтите еще R0 R1.
Каюсь, я не разбираюсь в данных вопросах. Поясните, если Вам не трудно, это на моем примере. Покажите как по формулам получить значение модуля.
0 -
Ned Flanders, вы наверно знаете, что 16-ти разрядный счётчик считает по модулю 216=65536? Получить нужное время задержки с таким значением модуля не всегда получается. Поэтому рассчитывается ближайшее меньшее значение модуля для целых значений повторений.
Григорий, Вы не могли пояснить это на моем или на каком нибудь более простом примере?
0 -
-
Время операции делить на время цикла. Наверное, так.
Время цикла - это Вы имели в виду время командного цикла. А как его определить?
0 -
Ned Flanders, дай бог памяти, в МК51 два 16-разрядных таймера/счетчика. Что мешает их при необходимости объединить?
Наверное ничего не мешает. Ответьте, пожалуйста, если знаете, на мой вопрос: Как получить модуль счетчика? или Как он был получен в таблице, представленной выше?
Ned Flanders, как вы собираетесь писать программу, если не знаете ответа на самый простой вопрос?
Пожалуйста, ответьте на мой вопрос.
0 -
Да наверное простой вопрос, но проблема в том, что мне никто не объяснял - просто сказали что нужно сделать эту работу. А программу писать пока не надо - нужен только алгоритм.
0 -
Здравствуйте. Приложенное изображение - это циклограмма обработки детали. По сути время операции - это задержка.Величина R0 - число обнулений таймера за необходимое количество секунд, а R1 - необходимое число повторений (в том случае если время слишком большое). Таблица, как говорят, правильная. Как получились R0 и R1 я понимаю. Объясните пожалуйста, как получаются такие значения в модуле счетчика? Как найти модуль счетчика?
(Длительность машинного цикла: 1, 085 мкс, инкремент таймера/счетчика выполняется в течение каждого машинного цикла, количество переполнений таймера за 1 сек = 14., интервал времени, в течение которого происходит переполнение равен 0,071 сек.)
Алгоритм предполагает следующие действия:
1) Инициализация – начальная настройка программы и МК. Происходит размещение констант и переменных в регистрах, которыми будет пользоваться программа; назначение указателя вершины стека; настройка регистров специального назначения;
2 переключение на банк необходимой операции и загрузка числа обнулений таймера за необходимое количество секунд и необходимое число повторений в регистры R0, R1 соответственно, установка таймеров в 16 разрядный режим работы (Т0М1=0, Т0М0=1);
3) вычисление скорости подачи и глубины резания;
4) при большом значении времени загрузка аккумулятора числом повторений, обеспечивающим нужное время;
5) вычисление времени протекания операции и соответствующего ей кода;
6) загрузка в порт кода выполняемой операции, включение подачи привода и запуск таймера Т0;
7) инкремент ТF0 и контроль его ненулевого значения;
8) пока ТF0 не равен 0 – переход на инкремент таймера, при TF0=0 переход к декременту регистра R0;
9) декремент регистра R0 и контроль его не нулевого значения, пока R0 – не ноль, переход на инкремент таймера, когда R0 равен нулю, переход на декремент аккумулятора;
10) декремент аккумулятора и контроль его не нулевого значения, пока R1 – не ноль, переход на инкремент таймера, как только R1 равняется нулю, переход к подготовке следующей операции;
11) повтор со 2-го по 10 пункты для следующей операции и т.д.
(…)
Завершение работы программы.
0
Таймер В Mcs-51, Модуль Таймера
в x51
Опубликовано
Ну там на самом деле должно быть вместо R1 R0, а вместо A R1. 53 - это столько раз переполняется таймер за время операции т.к. таймер переполняется каждый машинный цикл, который длится 0,071 сек, 3,72/0,071 = 53.
Спасибо Григорий, все понятно! Я не знаю как тут на форуме сказать спасибо.