Однокристальные микроконтроллеры семейства MCS-51. Команды операций с битами. Карта адресуемых бит в памяти данных

Страницы работы

Фрагмент текста работы

языке Ассемблера МК51 адрес бита указывается одним из трех способов:

1)  числом или выражением, соответствующим прямому адресу бита;

Адрес ячейки ПД , HEX                              Адреса битов, HEX

7

6

5

4

3

2

1

0

2F

7F

7E

7D

7C

7B

7A

79

78

2E

77

76

75

74

73

72

71

70

2D

6F

6E

6D

6C

6B

6A

69

68

2C

67

66

65

64

63

62

61

60

2B

5F

5E

5D

5C

5B

5A

59

58

2A

57

56

55

54

53

52

51

50

29

4F

4E

4D

4C

4B

4A

49

48

28

47

46

45

44

43

42

41

40

27

3F

3E

3D

3C

3B

3A

39

38

26

37

36

35

34

33

32

31

30

25

2F

2E

2D

2C

2B

2A

29

28

24

27

26

25

24

23

22

21

20

23

1F

1E

1D

1C

1B

1A

19

18

22

17

16

15

14

13

12

11

10

21

0F

0E

0D

0C

0B

0A

09

08

20

07

06

05

04

03

02

01

00

                               Рис. 6.1. Карта адресуемых бит в памяти данных

Адрес регистра, HEX                             Адрес битов, HEX                        Имя регистра   

7

6

5

4

3

2

1

0

F0

F7

F6

F5

F4

F3

F2

F1

F0

B

E0

E7

E6

E5

E4

E3

E2

E1

E0

ACC

D0

D7

D6

D5

D4

D3

D2

D1

D0

PSW

B8

-

-

-

BC

BB

BA

B9

B8

IP

B0

B7

B6

B5

B4

B3

B2

B1

B0

P3

A8

AF

-

-

AC

AB

AA

A9

A8

IE

A0

A7

A6

A5

A4

A3

A2

A1

A0

P2

98

9F

9E

9D

9C

9B

9A

99

98

SCON

90

97

96

95

94

93

92

91

90

P1

88

8F

8E

8D

8C

8B

8A

89

88

TCON

80

87

86

85

84

83

82

81

80

P0

                    Рис. 6.2. Карта адресуемых бит регистров специальных функций

2) именем или адресом регистра (ячейки ПД), содержащего данный бит, и позицией бита в регистре (ячейке ПД), разделенными точкой;

3) для определенных битов регистров специальных функций указанием символического имени.

Биты также могут обозначаться произвольными именами директивой Ассемблера  REG (для ассемблера фирмы  “2500 A.D.”).

Например, 5-й бит регистра PSW может быть сброшен (очищен) любой из четырех команд:

USER_FLAG:  REG    PSW.5        ; Описание символа пользователя

………………..

………………..

CLR    0D5H                 ; Абсолютная адресация

CLR    PSW.5                ; Использование точечного оператора

CLR    F0                       ; Использование собственного имени бита

CLR     USER_FLAG   ; Использование символа пользователя

Установить в единицу 3-бит ячейки ПД с адресом 20H можно любой из трех следующих команд:

FLAG1:     REG      20H.3                ; Описание флага пользователя

……………….

SETB     03H                   ; Абсолютная адресация

SETB     20H.3                ; Использование точечного оператора

SETB     FLAG1             ; Использование имени флага пользователя

                                                  3. Порядок выполнения работы

3.1. Управление отдельными битами ячеек ПД и регистров специальных функций

Запишите в память симулятора AVSIM51 коды команд:

SETB   ACC.7

CLR     ACC.7

CPL     ACC.7

NOP

SETB   C

CLR     C

CPL     C

NOP

CLR    PI.0

SETB  P1.0

CPL    P1.0

NOP

SETB  22H.0

CLR    22H.0

CPL    22H.0

NOP

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

3.2. Использование команд операций с битами для переключения регистровых банков

Выбор рабочего банка регистров осуществляется 3-м и 4-м битами регистра состояния PSW (биты PSW.3 и PSW.4), которые имеют собственные символические имена  RS0 и RS1 соответственно. Распределение банков регистров общего назначения в МК51 приведено в табл. 6.1.

Таблица 6.1   

Распределение банков МК51             

RS1

RS0

Номер банка

0

0

Банк  0

0

1

Банк  1

1

0

Банк  2

1

1

Банк  3

Во избежание нежелательного изменения других битов регистра PSW рекомендуется производить модификацию номера банка с использованием команд операций с битами. Напоминаем, что после сброса МК51 (обычно при включении электропитания) автоматически выбирается банк 0, при этом биты RS1 = RS0 = 0.

Запишите в память симулятора AVSIM51 следующие коды:

MOV    R0, #10H

SETB   RS1

SETB   RS0              ; Выбор банка 3 РОН

MOV    R0, #33H

CLR      RS0             ; Выбор банка 2 РОН

MOV    R0, #22H

CLR      RS1             ; Выбор  банка 0

MOV    R0, #0FFH

NOP

Выполните программу в пошаговом режиме, наблюдая за переключением банков РОН по изменению ячеек памяти данных, где располагаются РОН.

3.3. Вычисление логических функций с помощью команд операций с битами

Необходимо вычислить логическую (булеву) функцию трех переменных

Y = X  Ù  `Z  Ú   W  Ù  ( X  Ú  Z ).

Переменные  X, Z, W поступают на линии  2, 1 и 0 порта P1. Результат Y нужно вывести на линию 7 порта P1.

Программа вычисления логической функции имеет вид:

W:          REG     P1.0         ; Спецификация бит порта P1

Z:           REG     P1.1

X:           REG     P1.2

Y:           REG     P1.7

MOV   C, X         ; Пересылка X в С

ANL     C,/Z        ; Операция  X  AND  NOT(Z)

MOV   F0, C       ; Запоминания результата в бите F0

MOV   C, X         ; Пересылка  X в  C

ORL     C, Z         ; Операция  X  OR  Z

ANL     C, W       ; Операция  W  AND (X  OR  Z)

ORL     C, F0       ; Операция  OR, результат во флаге C

MOV    Y, C        ; Вывод результата Y

END

     Задание.  В своей папке создайте файл  с именем  log.asm. Запишите в него программу вычисления логической функции. Получите файлы log.obj  и  log.hex. Исследуйте работу программы в пошаговом режиме, задавая значения переменных на соответствующих линиях  порта P1 из табл. 6.2.

Таблица 6.2

Результаты исследования программы вычисления функции

Входные значения

Получено

Практически

Теоретически

X (P1.2)

Z (P1.1)

W (P1.0)

Y (P1.7)

Y

1

1

1

1

1

0

1

0

0

Проверьте результаты работы программы «вручную», произведя вычисления по правилам алгебры логики.

3.4.  Задания для самостоятельной работы

1.  Напишите программу, которая производит следующие действия: установить флаг переноса, сбросить бит 5 порта P2, проинвертировать бит 4 порта P1, сбросить флаг с именем ERR_FL, расположенный в 1-м разряде ячейки ПД с адресом 25H, установить флаг F0.

2.  Напишите программу, которая после сброса МК записывает в регистры R5, R6, R7 всех банков код FFH.

3.  Разработайте программу, которая вычисляет логическую функцию    

Q = X Ù ( Z Ú Y ) Ú`W.

Переменная X подается на вывод 1 порта P0, переменная Z подается на вывод 5 порта P1, переменная  Y  является флагом переполнения таймера/счетчика T/C1, переменная W является программным флагом с именем FLAG1, который хранится в 1-м разряде ячейки ПД с адресом 2FH. Результат вычисления функции - Q должен выдаваться на вывод 7 порта P2.

Программу запишите  в файл func.asm. Исследуйте работу программы с помощью симулятора AVSIM51 при нескольких значения входных переменных. Результаты занесите в таблицу по форме табл. 6.2. Проверьте правильность работы программы «вручную».

                                                           4.Содержание отчета

Наименование и цель работы. Краткое описание команд  операций с битами МК51. Таблицы с результатами исследования программ. Разработанные программы из заданий для самостоятельной работы.

                                                       Контрольные вопросы

1.  Какие команды операций с битами могут выполнять микроконтроллеры семейства МК51?

2.  Как влияют команды операций с битами на флаги МК?

3.  Как можно сбросить в 0, установить 1 и инвертировать определенный разряд порта P1?

4.  Как  можно проинвертировать  7-й бит аккумулятора?

5.  Как  выбрать 2-й банк регистров?

6.  Как можно установить, сбросить и проинвертировать флаг переноса?

7.  Программист решил использовать 0-й  бит ячейки 22H памяти данных

Похожие материалы

Информация о работе