Главная » Bascom-8051, Basic, Железо » Программирование таймеров BASCOM-8051

0

Наличие  в  составе  Bascom  операторов  программирования  таймеров  позволяет  во   многих  случаях обходится только этими средствами. При этом даже не нужны знания соответствующих управляющих регистров. Более   глубокое   программирование   с   использованием   нестандартных   приемов,   без   сомнения,   потребует подробного изучения регистров управления таймерами и их взаимодействия с системой прерывания. Применения ассемблерных вставок для  более эффективного управления таймерами не требуется, т.к. специальные команды Bascom  достаточно  оперативны,  и  имеется  возможность  непосредственного  управления  всеми  регистрами  и битами.  В  таблице,  приведенной  ниже,  показано  как  компилируются  операторы   Bascom,  работающие  с таймерами. Мы видим, что компилятор не работает со всем таймерами  по  одинаковой схеме., поэтому всегда нужно  быть  готовым  к  тому,  что  в  одних  случаях  компилятор  поставит  код  команды  остановки  и  запуска счетчика, а в других их нужно будет добавить.

Оператор Bascom-8051

Результат компиляции

Комментарий

Load Timer0 , 100

MOV  TL0,#9CH

MOV  TH0,#9CH

Загрузка  в  режиме  таймеров  0  или   1  в  режиме  2.

Коэффициент деления определяется   только  старшим байтом  счетчика,  но  задаваться должен однобайтным числом!

Load Timer1 , 1000

MOV  TL1,#18H

MOV  TH1,#18H

Здесь   неправильно   задан    коэффициент   деления   –

константа должна быть однобайтовой.

Load Timer2 , 1024

MOV  RCAP2L,#00H

MOV  CAP2H,#0FCH

Для таймера 2 загрузочный  коэффициент может быть

двухбайтным

Counter0 = 8192

MOV  TL0,#00H

MOV  TH0,#20H

Загрузка счетчика производится  двухбайтовым числом.

Применяется в режиме 1.

Counter2 = 10

CLR  TR2

MOV  TL2,#0AH

MOV  TH2,#00H

Аналогичная  операция  для  таймера   2   начинается  с

остановки счетчика.

Buf_ = Counter1

CLR  TR1

MOV  R0,#23H

MOV  @R0,TL1

INC  R0

MOV  @R0,TH1

Считывание в переменную Buf_  содержимого счетчика

таймера 0, 1 и 2 производится после его остановки. Если счет   необходимо   продолжить, таймер нужно снова запустить.

Buf_ = Capture

CLR  TR2

MOV  R0,#23H

MOV  @R0,RCAP2L INC  R0

MOV  @R0,RCAP2H

SETB TR2

Считывание в переменную Buf_  содержимого регистра

захвата  таймера  2  производится  после  его  остановки.

Далее счет снова запускается.

Var1 = Tl0

Var2 = Th0

MOV  Var1,TL0

MOV  Var2,TH0

Непосредственное считывание  содержимого счетчика в

байтовые переменные. Это аналог ассемблера.

Tl0 = &h00

Th0 = &hF0

MOV  TL0,#00H

MOV  TH0,#F0H

Непосредственная запись данных в счетчик

Источник: М.Л.Кулиш, СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ BASCOM-8051, Краснодар 2001

По теме:

  • Комментарии