Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Организация памяти микроконтроллера PIC16F877.




Структура памяти команд показана на рис.3.

Микроконтроллеры PIC16F877 имеет 13-разрядный программный счетчик ПС, способный адресовать 8К х 14 бит памяти программ.

Адрес вектора сброса - 0000h.

Адрес вектора прерываний - 0004h.

 

Рис.3. Структура памяти программ и стека

 

Организация памяти данных

Структура памяти данных показана на рис.4.

Память данных разделена на четыре банка, которые содержат регистры общего и специального (SFR) назначения. Биты RP1 (STATUS<6>) и RP0 (STATUS<5>) предназначены для управления банками данных. В таблице 1 показано состояние управляющих битов при обращении к банкам памяти данных.

Таблица 1. Обращение к банкам памяти данных

RP1 RP0 Банк
0 0 0
0 1 1
1 0 2
1 1 3

Объем банков памяти данных до 128 байт (7Fh). В начале банка размещаются регистры специального назначения, затем регистры общего назначения выполненные как статическое ОЗУ. Все банки содержат регистры специального назначения. Часто используемые регистры специального назначения отображаться в других банках памяти. Старшие 16 байт памяти данных в банках 1, 2 и 3 отображены в банке 0.

 

Рис.4. Структура памяти данных



Использование тактового генератора для микроконтроллера 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  

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 445.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...