Програмування таймерів BASCOM-8051

Наявність у складі 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 = &amph00

Th0 = &amphF0

MOV  TL0,#00H

MOV  TH0,#F0H

Безпосередня запис даних в лічильник

Джерело: МЛКуліш, ДОВІДНИК З ПРОГРАМУВАННЯ BASCOM-8051, Краснодар 2001

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*