logo search
gotovye_MPZh_shpory

35.Использование тактового генератора для микроконтроллера pic16f877.

Тактовый сигнал необходим для выполнения команд контроллера и работы периферийных устройств. Режим работы тактового генератора определяется битами в слове конфигурации, расположенными в энергонезависимой памяти. Настроить/изменить биты конфигурации можно толькопри программировании контроллера.

Для контроллеров PIC16F876/876A/877/877A предусмотрено 4 режима тактового генератора: LP — низкочастотный кварцевый резонатор (пониженное энергопотребление); XT — стандартный кварцевый/керамический резонатор; HS — высокочастотный кварцевый резонатор; RC — внешний резистор/конденсатор.

В своей практике я использовал только 2 режима HS и RC, поэтому рассмотрим их поподробнее.

HS — высокочастотный кварцевый резонатор.

Для кварцевого резонатора (например hc49) значения конденсаторов будут следующие:

Для предотвращения возбуждения резонатора на низких частотах последовательно устанавливают резистор Rs. Обычно ставлю резистор 510-560 Ом.

 

RC — внешний резистор/конденсатор.

Там где не требуется стабильная частота и точные временные задержки в работе устройства можно использовать в качестве генератора RC-цепочку. В этом режиме частота генератора будет зависеть от напряжения питания, сопротивления Rext, емкости Cext, рабочей температуры и технологических разбросов компонентов и контроллера.

Рекомендуемое значение Rext от 3кОм до 100кОм, при других значениях генератор будет нестабильным. Для стабильной работы генератора рекомендуется подключать конденсатор Cext с емкостью более 20пФ. В режиме RC-генератора на выходе OSC2 генерируется тактовый сигнал Fosc/4.

Пример частоты RC-генератора.

Для примерного подбора значений Rext и Cext была собрана тестовая схемка — Rext переменный многооборотный резистор 20кОм, Cext = 30pF. В качестве результата использовался выход OSC2, с которого снималась частота работы контроллера (Fosc/4). Результаты опыта представлены в таблице.

Rext (kOm)

OSC2 (kHz)

2,07

1500

2,37

1400

2,66

1300

2,98

1200

3,32

1100

3,78

1000

4,34

900

5,04

800

5,9

700

7,01

600

8,65

500

11,05

400

15,13

300

20

230

Как видно из графика зависимость частоты от резистора Rext не совсем линейная.  

36.

37.

38-39. Количество цифр (символов) применяемых в системе называют ее основанием. Минимальный объем информации, который можно записать на носителе информации называют бит. Восемь носителей информации объединили в одну ячейку памяти, и назвали байт.

Т а б л и ц а Б.1 - Запись чисел в различных системах счислений

Десятичная система

Двоичная система

Двоично-десятичная система

Шестнадцатеричная система

0

0000

0000

0

1

0001

0001

1

2

0010

0010

2

3

0011

0011

3

4

0100

0100

4

5

0101

0101

5

6

0110

0110

6

7

0111

0111

7

8

1000

1000

8

9

1001

1001

9

10

1010

0001 0000

A

11

1011

0001 0001

B

12

1100

0001 0010

C

13

1101

0001 0011

D

14

1110

0001 0100

E

15

1111

0001 0101

F

16

00010000

0001 0110

10

17

00010001

0001 0111

11

18

00010010

0001 1000

12

19

00010011

0001 1001

13

20

00010100

0010 0000

14

Примеры записи чисел в программе:

- D’07’ – десятичное число;

- B’0111’ – двоичное число;

- H’07’или 0х07 или 07h – шестнадцатеричное число.

Алгоритм перевода чисел из двоичной системы в шестнадцатеричную систему: сначала двоичное число разбиваем на четверки чисел справа налево, затем для каждой четверки записываем его эквивалент из приведенной таблицы А1. П р и м е р. 0101 1011 11012 = 5ВD16.

Обратный перевод чисел очевиден, необходимо только аккуратно писать именно четверки двоичных чисел, дописывая при необходимости нули слева: 116.= 00012, 216 = 00102. П р и м е р. 415С16==0100 0001 0101 11002.

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

40.

41,42,43

Таблица2. Команды микроконтроллера PIC16F877.

Мнемоника

Операция

Циклы

Код команды

Флажки

Примечание

команды

БАЙТОВЫЕ КОМАНДЫ

ADDWF f, d

Сложение (W + f->d)

1

00 0111 dfffffff

C.DC.Z

1,2

ANDWF f, d

Логическое "И" (Wandf— >d)

1

00 0101 dfffffff

Z

1,2

CLRF f

Обнулить f

1

00 0001 1fffffff

Z

2

CLRW -

Обнулить W

1

00 0001 0xxx xxxx

Z

COMF f, d

Дополнение f (Логическое "НЕ")

1

00 1001 dfffffff

Z

1,2

DECF f, d

Декремент f |

1

00 0011dfffffff

Z

1,2

DECFSZ f, d

Декремент f, пропуск если "0"

1(2)

00 1011 dfffffff

1,2,3

INCF f, d

Инкремент f

1

00 1010 dfffffff

Z

1,2

INCFSZ f, d

Инкремент f, пропуск если "0"

1(2)

00 1111 dfffffff

1,2,3

IORWF f, d

Логическое "ИЛИ" (Worf->d)

1

00 0100 dfffffff

Z

1,2

MOVF f, d

Пересылка (f — >W)

1

00 1000 dfffffff

Z

1,2

MOVWF f

Пересылка (W — >f)

1

00 0000 1fffffff

NOP

Пустая операция

1

00 0000 0xx0 0000

RLF f, d

Сдвиг влево через перенос

1

00 1101 dfffffff

С

1,2

RRF f, d

Сдвигвправочерезперенос

1

00 1100 dfffffff

C

1, 2

SUBWF f, d

Вычитание (f- W->d)

1

00 0010 dfffffff

C,DC,Z

1, 2

SWAPFf, d

Обменять полубайты f

1

00 1110 dfffffff

1,2

XOFWFf, d

Исключающее "ИЛИ" (Worf->d)

1

00 0110 dfffffff

Z

1,2

БИТОВЫЕ КОМАНДЫ

BCF f. b

Обнулить бит bв f

1

01 00bb bfffffff

1,2

BSF f, b

Установить бит bв f

1

01 0lbb bfffffff

1,2

BTFSC f, b

Тест бита bв f, пропуск если "0"

1(2)

01 l0bb bfffffff

3

BTFSS f, b

Тест бита bв fпропуск если "1"

1(2)

01 11bb bfffffff

3

КОМАНДЫ С КОНСТАНТАМИ И КОМАНДЫ УПРАВЛЕНИЯ

ADDLW к

Сложение (k + W — >W)

1

11 111x kkkkkkkk

C,DC,Z

ANDLW к

Логическое "И" (kandW->W)

1

11 1001 kkkkkkkk

Z

CALL k

Вызов подпрограммы k

2

10 0kkk kkkkkkkk

CLRWDT -

Обнулить WDT

1

00 0000 0110 0100

TO,PD

GOTO k

Переход к адресу k

2

10 1kkkkkkkkkkk

IORLW k

Логическое "ИЛИ"(К orW ->W)

1

11 1000 kkkkkkkk

Z

MOVLW k

Пересылка (k — >W)

1

11 00xx kkkkkkkk

RETFIE -

Возврат из прерывания

2

00 0000 0000 1001

RETLW k

Возврат с константой

2

11 01xx kkkkkkkk

RETURN -

Возврат из подпрограммы

2

00 0000 0000 1000

SLEEP -

Останов

1

00 0000 01100011

TO,PD

SUBLW k

Вычитание (k - W -> W)

1

11 110х kkkkkkkk

C,DC,Z

XORLW k

Исключающее "ИЛИ"

(korW->W)

1

11 1010 kkkkkkkk

Z