Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Микроконтроллер x8051  (Прочитано 10732 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Neo
Гость
« : 25-05-2004 20:31 » 

Hi!
Ребята, подскажите пожалуйста как решить 2 задачки, препод блин ниче не объясняет Жаль(( да к тому же его прога у меня под линукс не работает Жаль

5. б) Осуществить подсчет последовательности кодов 3FH и B5H, а также B5H и 3FH на входе порта 0. Длительность нахождения сигналов на линиях порта не менее 50 mc.
а)...
б) общий счет всех последовательностей

23. Обеспечить выдачу и удержание в течении 100 мкс данных, приходящих на линии порта P0: четные данные - через выходы P1, нечетные P2. Данные на входах P0 сменяются не чаще чем раз в секунду.

Спасибо! Буду благодарен за любую помощь!
Записан
Neo
Гость
« Ответ #1 : 26-05-2004 19:41 » 

Ребят, ну пожалуйста, ну хоть одну задачку подскажите или как с таймером работать?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 27-05-2004 07:27 » 

Цитата
или как с таймером работать?
А доку почитать лень?

По первой: задай таймеру интервал в 50мс и на прерывание от таймера повесь программку, которая будет считывать порт P0 и сравнивать значение с предидущим. Когда данные на порту сменятся, считай что пришел новый байт.

Вторая задача мне мало понятна - смысла не вижу. Видимо, решается аналогично первой.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Anonymous
Гость
« Ответ #3 : 27-05-2004 19:55 » 

Читал доку, но все равно не понимаю... Жаль А именно вот что:
- Как задать таймеру интервал (любой)?
- Как организовать прерывание?
К задачам есть "шапка":
     ORG 0
     SJMP NACH
     ORG 3H
     RETI
     ORG 0BH
     RETI
     ORG 13H
     RETI
     ORG 1BH
     RETI
     ORG 23H
     RETI
А вот дальше не понимаю... Жаль
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 27-05-2004 20:30 » 

Ни чего сложного там нет. Все настраивается через спец. регистры - в доке подробно описан каждый бит и режимы работы таймера.

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

Тебе подойдет 16-ти битный режим работы таймера. Его особенность - он одноразовый. В обработчике прерывания нужно загрузить счетчик еще раз.

Подробно и с примерами объяснить не могу - у меня доки под рукой нет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Neo
Гость
« Ответ #5 : 28-05-2004 18:59 » 

Можно тебе доку выслать Не понял Ага
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 29-05-2004 18:05 » 

Neo, ты намекаешь, чтобы я за тебя сделал твою работу? Ага

Конфигурирование счетчика:
Код:

; базовая частота 12MHz

; настройка режима работы таймера 0
mov a,tmod
and a,#0f0h
or a,#01h
mov tmod,a
; разрещаем прерывание от таймера
setb et0
; установка счетчика
mov th0,#03ch
mov tl0,#0b0h   ;th0{tl0 = -50000 )12MHz/12/50000=20Hz:
; запуск счетчика
setb tr0

Прочие настройки и setb ea делай сам.
Через 20мс таймер переполнится и сгенерит прерывание. В обработчике прерывания его можно выключить (если больше не нужен), загрузить новым значением (тем же -50000 - для постоянной генерации 20Гц) и т.п.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Neo
Гость
« Ответ #7 : 30-05-2004 20:51 » 

Спасибки, попробую разобраться... Ага
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines