Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2011, 01:51   #11
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо))))
Сейчас буду тестить))
Нажимаю на весы))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 23.05.2011, 02:10   #12
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Уважаемый Ulex, у меня вопрос (наверное, вы уже спите(((() - вот насколькл я поняла вся эта красота запускается "сбросом кубика" с порта PD0. То есть эта кнопка. Но я как не сбрасываю вручную, а он все в main крутится(((
Кстати, эмулятор съел Ваш код и не подавился не разу)))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 23.05.2011, 02:30   #13
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

А он и должен в main_e крутиться. Это же монитор, программа никогда не должна уходить из монитора надолго. А вдруг у вас там ещё будет 10-15 кнопок на разных портах висеть и каждая на свою функцию. Тогда контроллер просто оглохнет на некоторое время. Так делать нельзя. Поэтому сделано как положено, по нажатию кнопки просто устанавливается режим таймера и стартовые временные хар-ки ну и порт переключается (ксати, переключается, или нет?). Всё, а программа дальше себе молотит в мониторе. Вся дальнейшая обработка вынесена в обработчик прерывания по совпадению таймера 0. И майн будет вертеться, пока не сработает прерывание (~ ч.з. 50 мс). Нажимая на кнопку F11 вы этого момента в эмуляторе будете ооочень долго ждать. Порт переключается на жёлтый фонарик, или нет?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 23.05.2011, 02:40   #14
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

С зеленого на желтый уходит. А на красный нет(( Таймер сконфигурировался, но время на нем не тикает.....значения не меняются. Вот я и не понимаю, как таймер запустить(((
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 23.05.2011, 02:51   #15
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Вот написано sbic PIND, start

насколько я понимаю, пропустить команду, если на порту PIND уровень start.
А уровень start=PD0. То есть сбив это значение, мы можем продолжить дальнейшее движение по листингу программы. Я практически уверена, что я что-то просто не допоняла
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 23.05.2011, 03:07   #16
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Тут два варианта:
Вариант первый - студия переглючила. Бывает что эмулятор не запускает счётчик, не знаю почему. Помогает перезапуск студии.
Вариант второй - просто дождаться не можешь. Там стоит коэфф. деления для счётчика 1024. Т.е. ч.з 1024 такта выполнится один тик (инкремент счётчика). А прерывание первый раз выполнится ч.з. 194 таких тика, т.е. ч.з. 194*1024=198656 тактов (по времени это ~ 50 мс). А переключится порт на красный ч.з. 4 сек, т.е ч.з 80*198656=15.892.480 тактов. Если просто жать F11, то это надо железной леди быть чтобы дождаться. Т.е так не проверить. В студии есть функция Run To Cursor. Но даже с ней сложно такие тайминги проверять. Например, на своём 3Гц двухъядернике пока студия просчитает эти 4 секунды я успеваю пару песенок в Winampe послушать.

Цитата:
Вот написано sbic PIND, start
насколько я понимаю, пропустить команду, если на порту PIND уровень start.
А уровень start=PD0. То есть сбив это значение, мы можем продолжить дальнейшее движение по листингу программы. Я практически уверена, что я что-то просто не допоняла
Всё правильно поняла. Только кроме PIND, проверяется ещё переменная в озу FLAG_PROC. И только если она равна 0, т.е. светофор отморгал полный цикл, только тогда проверяется PIND, и если он сброшен, то выполняется опять запуск цикла светофора.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru

Последний раз редактировалось Ulex; 23.05.2011 в 03:13.
Ulex вне форума Ответить с цитированием
Старый 23.05.2011, 03:16   #17
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Счас проверим про 1 тик счетчика за 1024 такта))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 23.05.2011, 03:26   #18
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Да, таймер пошел))))
Я хочу своими глазами убедиться что красный загориться.
Я то думала что в эмуляторе как в реальном временени 4 секунды это 4 секунды))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 23.05.2011, 03:38   #19
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Эмулятор завис((((( Я его свернула, чтобы калькулятор достать - чтобы узнать где же этот коэффициент 1024 (мало ли преподаватель скажет - делать коэф 255 как обычно), чтобы сообразить где винтануть в случае чего. И завис эмулятор.. так я красного и не долждалась
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 23.05.2011, 04:06   #20
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Давай я тебе ещё пару моментов поясню. И отключаюсь.
1. 1024 - коэффициент аппаратный. Если в TCCR0 установить биты 0,1,2, то будет такой коэффициент деления. Соответственно время одного тика таймера для 4МГц будет 256 мкс.

2. Период срабатывания прерывания таймера я выбрал ~50 мс, для этого OCR0 установлен в 194. Т.к. срабатывание прерывания происходит в следующий тик после совпадения OCR0 и TCNT0, то соответственно получается, что прерывание по совпадению будет выполняться в 195*256=49920 мкс или в 49,92 мс. что примерно равно 50 мс.

3. Так как 50 мс (0,05 с), это тоже ещё мало, то заводим переменную в озу DIV_SEC - это программный коэффициент деления. Для получения одной секунды он должен быть изначально равен 20 (20*0,05=1с). И каждый раз в обработчике прерывания эта переменная декрементируется, пока не станет равна нулю - это значит натикала секунда. Далее он опять становится равным 20 и цикл повторяется.

4. Следующий коэфиициент CNT_SEC, вот он уже устанавливает задержку в секундах. Он декрементируется тогда, когда DIV_SEC равен 0. Тоже всё это в обработчике прерывания.

Ну и конечное время задержки получается как:
CNT_SEC(стартовое)*DIV_SEC(стартово е)*195*256 мкс.
Например для CNT_SEC=4
4*20*195*256=3.993.600 мкс = 3,99 с
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru

Последний раз редактировалось Ulex; 23.05.2011 в 04:18.
Ulex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AVR Atmega 128: сигнализация не срабатывает на ключи Blondy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 20.05.2011 12:29
AVR ATmega 128: почему не происходит переход? Blondy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 06.05.2011 01:28
Двоичный счетчик в AVR studio 4 UKG Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.10.2010 17:48
MCS-51 таймер/счетчик Steff-z Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.06.2009 23:15
Добавить инди в delphi 10 light, но как это зделать и где её взять не знаю 100GRamm Компоненты Delphi 1 09.02.2009 13:38