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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 22:09   #1
Частухина Анна
 
Регистрация: 27.11.2012
Сообщений: 4
По умолчанию программа счетчика

Подскажите как составить алгоритм и разработать программу секундомера, фиксирующую время с момента запуска программы до
момента остановки. Результат поместить в ячейки h’20’ и h’21’ памяти
данных, в 20 – секунды, в 21 – сотые секунды. Это для микроконтроллера..
Частухина Анна вне форума Ответить с цитированием
Старый 28.11.2012, 10:18   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Микроконтроллеров масса самых разных.
Мы даже не знаем, есть ли в используемом Вами микроконтроллере собственный таймер или необходимо пользоваться внешним.
s-andriano вне форума Ответить с цитированием
Старый 28.11.2012, 16:14   #3
Частухина Анна
 
Регистрация: 27.11.2012
Сообщений: 4
По умолчанию

микроконтроллер PIC16F873A, с подключенными к нему периферийными устройствами, программатор-отладчик PICkit 2 и персональный компьютер с установленной программой MPLAB. MPLAB IDE включает в себя текстовый редактор, компилятор с языка Ассемблер MPASM, компановщик объектных файлов (линковщик) MPLINK, компановщик библиотек MPLIB, менеджер проектов, симулятор MPLAB-SIM и другие необходимые программы
Частухина Анна вне форума Ответить с цитированием
Старый 28.11.2012, 16:24   #4
Частухина Анна
 
Регистрация: 27.11.2012
Сообщений: 4
По умолчанию

Микроконтроллер PIC16F873A имеет три таймера/счетчика TMR0,
TMR1 и TMR2 и сторожевой таймер WDT. Сторожевой таймер работает от
внутреннего RC генератора. При переполнении сторожевого таймера проис-
ходит сброс микроконтроллера, среднее время переполнения составляет 18
мс. К сторожевому таймеру можно подключить выходной делитель, в этом
случае время переполнения можно увеличить.
Таймер TMR0 представляет собой 8-ми разрядный счетчик, который
увеличивается с частотой 1 МГц. При переполнении таймера TMR0 бит T0IF
в регистре INTCON аппаратно устанавливается в 1 и если биты GIE и T0IE
установлены в 1 процессор переходит к выполнению команды, размещенной
по адресу 0004 в памяти программ.
Чтобы настроить таймер необходимо:
1. выбрать источник тактового сигнала. Таймер может работать от внут-
ренней тактовой частоты (1 МГц) или от внешнего тактового сигнала, посту-
пающего на вывод T0CKI. Лабораторный макет предполагает использование
только внутренней тактовой частоты. Для выбора внутренней тактовой ча-
стоты следует сбросить бит T0CS регистра OPTION_REG:

bcf*OPTION_REG,*T0CS**;использовать *внутреннюю*тактовую*частоту*

2. настроить предделитель частоты тактового сигнала. Предделитель
позволяет делить тактовую частоту, в результате таймер может формировать
более длительные временные задержки. Без подключения предделителя тай-
мер может формировать временные задержки от 0,000001 с до 0,000256 с.
Подключенный предделитель позволяет расширить диапазон задержек до
0,065536 с. Предделитель подключается к таймеру сбросом бита PSA реги-
стра OPTION_REG, а коэффициент деления настраивается битами PS0, PS1 и PS2 регистра OPTION_REG.
3. задать начальное значение таймера. Для формирования временной за-
держки таймер считает от заданного начального значения до максимально
возможного значения h’FF’, следующее увеличение таймера приведет к гене-
рации сигнала прерывания. Настройка начального значения выполняется пу-
тем записи в регистр TMR0:

movlw*h’100’* ;записать*в*WREG*h’100’*–*начальное *значение*для*TMR0*
movwf*TMR0* ;записать*из*WREG*начальное*значени е*TMR0*
*
Задержка, формируемая таймером, рассчитывается по выражению:


задержка = TMR0 / (коэффициент деления)

Рассмотрим пример настройки таймера на формирование задержки в
0,01 секунду. Так как процессор на лабораторном макете PIC16F873A вы-
полняет 1000000 операций в секунду, для получения задержки в 0,01 секунды
требуется 10000 операций: TMR0 · (коэффициент деления) = 10000
Задавая различные коэффициенты деления из табл. 1 и проверяя усло-
вие, что в TMR0 нельзя записать отрицательное число, подбираем значение
коэффициента деления и начальное значение таймера:

TMR0 = 255 - 10000/16,
TMR0 = -370 – полученное значение не подходит.
TMR0 = 255 - 10000/32,
TMR0 = -58 – полученное значение не подходит.
TMR0 = 255 - 10000/64,
TMR0 = 99 = h’63’.

Задав начальное значение 156 и коэффициент деления 1:64, определим
задержку формируемую таймером по выражению: (156 · 64) / 1000000 = 0,009984 (секунды)

На основе полученных значений разработаем подпрограмму на ассе
блере для получения задержки в 0,01 секунды:

timerConfig:*
movlw*h’63’** * ;записать*в*WREG*h’63’*–*начальное* значение*для*TMR0*
movwf*TMR0** * ;записать*из*WREG*начальное*значени е*TMR0*
bcf*OPTION_REG,*T0CS*** ;использовать*внутреннюю*тактовую*ч астоту*
bcf*OPTION_REG,*PSA** ;включить*предделитель*
;коэффициент*деления*1:64*(PS0*=*1, *PS1*=*0,*PS2*=*1)*
bsf*OPTION_REG,*PS0** ;PS0*=*1*
bcf*OPTION_REG,*PS1** ;PS1*=*0*
bsf*OPTION_REG,*PS2** ;PS2*=*1
return*
Частухина Анна вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
накрутка счетчика megostudent Свободное общение 13 15.04.2012 18:38
значение счетчика dark_sergey Паскаль, Turbo Pascal, PascalABC.NET 6 16.12.2010 22:47
Установка счетчика doober Microsoft Office Access 3 21.02.2010 23:15
обнуление счетчика в бд Tanuska___:) БД в Delphi 2 22.01.2009 23:10
Сброс счетчика vldand Microsoft Office Access 1 20.10.2008 18:40