Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Ассемблере для PIC.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Глава 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.