- •Глава 1. Теория, понятия, определения
- •Глава 2. Команды ассемблера
- •Глава 3. Составление текста программы на ассемблере в mplab
- •Глава 4. Макетная плата. Программатор
- •Глава 5. Элементарные базовые проекты
- •Глава 6. Инструменты mplab
- •Глава 7. Сопряжение микроконтроллера с внешними устройствами
- •Глава 1. Теория, понятия, определения
- •Регистры специального назначения
- •Регистры общего назначения
- •Как работает микроконтроллер?
- •Банки памяти
- •Глава 2. Команды ассемблера
- •Вычисляемый переход
- •Проверить бит на равенство нулю btfsc f,b
- •Проверить бит на равенство единице btfss f,b
- •; Проверка на факт переноса
- •; Проверка на факт займа
- •; Проверка на равенство нулю
- •; Проверка на равенство одного регистра другому регистру
- •; Проверка на равенство константы какому-либо регистру
- •Сдвиг вправо битов в регистре rrf f, d сдвиг влево битов в регистре rlf f, d
- •Глава 3. Составление текста программы на ассемблере в mplab
- •Структура программы
- •Описание конфигурационных битов.
- •Описание комбинаций битов выбора генератора.
- •Направления работы ножек мк и выполняемые функции задаются в регистрах специального назначения.
- •Глава 5. Элементарные базовые проекты
- •1 (Input) – работа на вход
- •0 (Output) – работа на выход
- •Глава 6. Инструменты mplab
- •Глава 7. Сопряжение микроконтроллера с внешними устройствами
- •Передача данных в сторону компьютера
- •Приём данных от пк на стороне мк
- •Это не конец
Глава 1. Теория, понятия, определения
В этой главе мы осветим несколько простых и одновременно сложных для понимания сущностей. Речь пойдет о памяти, регистрах, системах счисления, адресе регистра, о банках памяти, о регистрах специального и общего назначения. Мы ответим на вопросы "Как работает микроконтроллер?" и "Что такое сигнал?". Отдельно рассмотрим форматы записи чисел. С одной стороны, оглядываясь по прошествию многих лет на эти знания, мне они кажутся не существенными. А с другой стороны, когда я начинал изучать микроконтроллеры, без отсутствия такого представления мне было бы сложно дальше продолжать освоение МК. Желаю вам успешно освоить эти сущности.
Память
В каждом микроконтроллере (далее МК) есть области памяти. Память бывает трёх типов: память программы, оперативная память, энергонезависимая память. В память программы загружаются строчки текста программы, которые мы далее составим и научимся загружать. Загруженный текст программы не изменяется и не пропадает после выключения питания МК. Размер памяти программ определяется типом используемого МК. Для PIC16F84A размер памяти программ составляет 1024 строчки. Оперативная память используется для обращения к ней из текста программы. При включении МК ячейки оперативной памяти пусты (точнее, их содержимое неизвестно). Данные (числа) загружаются в оперативную память в ходе выполнения программы. Вообще, оперативная память МК на практике используется для временного хранения данных. Размер оперативной памяти относительно памяти программ гораздо меньше. В PIC16F84A оперативная память состоит из 36 ячеек. Энергонезависимая память содержит данные, которые при выключение питания МК не пропадают. Содержимое энергонезависимой памяти мы можем определить в процессе написания программы, а также содержимое может измениться в ходе выполнения программы в МК. В PIC16F84A энергонезависимая память состоит из 64 ячеек.
Регистры
Память состоит из так называемых ячеек или иначе РЕГИСТРОВ, соответственно числа записываются в регистры. Далее, говоря о памяти, мы будем подразумевать оперативную и энергонезависимую память. Память программ организована иначе; пока мы не будем её рассматривать, т.к. знания о ней менее актуальны. Для простоты восприятия память лучше представить в виде таблицы, которая состоит из 16 столбцов с некоторым количеством строк и у которой в каждую ячейку можно записать число.
19 |
28 |
37 |
46 |
55 |
64 |
73 |
82 |
91 |
0 |
11 |
22 |
33 |
44 |
55 |
66 |
77 |
88 |
99 |
0 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Системы счисления
В регистр может быть записано одно положительное число от 0 до 255. Машинная математика, в т.ч. и математика МК, не может оперировать десятичными числами, для этого используется так называемая двоичная система счисления (или иначе – бинарная). Десятичное число 255 в двоичной системе выглядит как "11111111", т.е. восемь единиц, а двоичное число "0" – как восемь нулей "00000000". Следует заметить, что обозначение нуля одним символом "0", в любой системе счисления равно нулю. Таким образом, "регистр" необходимо рассмотреть детальнее, т.к. в него записывается не десятичное число, а двоичное. Запомните: "мы говорим о десятичных числах в МК, а подразумеваем двоичные". Ниже рисунок памяти в реальности
00010011 |
00011100 |
00100101 |
00101110 |
00110111 |
|
01001101 |
01011000 |
01100011 |
00000000 |
11001001 |
|
|
|
|
|
|
|
Такие двоичные числа называют восьмибитными числами или байт.
Запомните: 1 БАЙТ = 8 БИТ.
Таким образом, 1 байт представляет собой последовательность нулей и единиц (или набор битов), например, 11011000 , где количество нулей и единиц равно восьми, отсюда и название – "восьмибитное". Нумерация битов идёт справа налево от нуля до семи. В нашем примере нулевой бит равен нулю, а седьмой бит равен единице. Это так называемая бинарная система счисления, где используются две цифры "0" и "1". Перебирая нули и единицы в байте, мы можем получить 255 комбинаций, т.е. любое число на интервале от 0 до 255. Таким образом, в регистр мы можем записать десятичное число от 0 до 255. Необходимо понять, что в регистр физически записывается число в восьмибитном представлении, работу регистра проще представить как набор из 8-ми крошечных выключателей, каждый из которых может быть включен или выключен.
Адрес регистра
Каждый регистр имеет свой порядковый номер, т.н. адрес. АДРЕС РЕГИСТРА традиционно обозначается числом из шестнадцатеричной системы счисления, например, 1A. Шестнадцатеричное число представляет собой комбинацию 16 символов: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. В нашем случае 1A – это десятичное число 26. Перевод чисел из одной системы в другую несложно сделать в стандартном калькуляторе Windows (в настройках калькулятора выбрать вид "инженерный"). Рекомендую скачать конвертер BinHexDec – многое в системах счисления станет понятнее. Исходя из шестнадцатеричной системы счисления, для лучшего восприятия, память нарисована в виде 16-ти столбцов. Нумерация ячеек памяти изображена в таблице ниже.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
1A |
1B |
1C |
1D |
1E |
1F |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
2A |
2B |
2C |
2D |
2E |
2F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Наложив предыдущие таблицы друг на друга, мы можем обнаружить, что регистр с адресом 0 содержит число 19; а регистр с адресом 12 – содержит число 99.
