Скачиваний:
12
Добавлен:
01.05.2014
Размер:
70.66 Кб
Скачать

Государственный комитет Российской Федерации

по высшему образованию

Санкт-Петербургский государственный электротехнический университет

Кафедра ИИСТ

Лабораторная работа №6

Студенты: Виноградов К. ãð. 6561

Евдокимов С.

Преподаватель: Королев П.Г.

Санкт-Петербург

Задание.

Организовать сбор данных по указанным каналам АЦП. Каждый результат должен располагаться в ячейке памяти начиная с младшего бита и сопровождаться номером канала.

Параметр: 4

Разрядность: 10

Время выборки: 4.25

Время преобразования: 22.875

Память для результатов: внешняя

Количество отсчетов: 200

Номер канала: 6,7

Резим обмена: по готовности

Алгоритм.

Выбрать режим работы АЦП ( способ задания времени преобразования ):

  • режим совместимости с 80С196КВ;

  • регистр AD_TIME;

Выбор производится путем обращения к регистру управления IOC2. Для этого выбирается окно, в котором IOC2 доступен для записи ( Hwindow15 ). В нашем случае регистру IOC2 нужно присвоить значение #00001000h . Т. к. третий разряд регистра IOC2 отвечает за способ задания времени преобразования, для выбора регистра AD_TIME мы устанавливаеи его в единицу . Четвертый разряд нужен для работы в режиме, совместимом с 80С196КВ, поэтому в него мы записываем нуль.

Если мы используем регистр AD_TIME, нам нужно просчитать коды SAM и CONV, где SAM–биты с 7 по 5 регистра AD_TIME, точно определяющие время выборки. SAM должен быть от 1 до 7 включительно.

Для подсчета значения SAM используется формула: ,где -время выборки, в нашем случае 4,25 мкс; -частота XTAL1, равная 8 МГц. После подстановки заданных значений в формулу, получим SAM=4 (100).

CONV –биты с 4 по 0 регистра AD_TIME, точно определяющие время преобразования. CONV должен быть от 2 до 31 включительно.

Для подсчета значения CONV используется формула : ,где -время преобразования, в нашем случае 22,875 мкс. После подстановки заданных значений в формулу, получим CONV=9 (01001).

Далее требуется загрузить регистр AD_TIME, предварительно выбрав окно Hwindow1. В нашем случае регистру AD_TIME присваивается значение #11111h в соответствии с расчитанными значениями SAM и CONV.

С помощью регистра управления AD_COMMAND выбираем номер канала, способ запуска и разрядность. Для этого присваиваем ему значение #00001110h (6 канал) и #00001111h (7 канал).Т. к. 7-5 разряды зарезервированы, в них записываем 0. Четвертый разряд отвечает за разрядность, его устанавливаем в 0 (10 разрядное преобразование). Третий разряд определяет, когда начать преобразование, его устанавливаем в 1(немедленно). Разряды со 2 по 0 определяют номер канала. Обнаружить факт завершения преобразования:

  • готовность в регистре AD_RESULT;

  • флаг в INT_PEND;

  • запрос на прерывание.

Мы будем пользоваться битом состояния регистра AD_RESULT.

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

Листинг программы:

MCS-96 MACRO ASSEMBLER D_LAB 05/15/10

21:37:32 PAGE 1

DOS D.40 (046-N) MCS-96 MACRO ASSEMBLER, V1.3

SOURCE FILE: lab_4_4.a96

OBJECT FILE: lab_4_4.obj

CONTROLS SPECIFIED IN INVOCATION COMMAND: <none>

LOC OBJECT STMT SOURCE STATEMENT

1 ;****************************************************************************

2 d_lab MODULE main

3 ; Бригада ³4

4 ; Виноградов К.Ю & Евдокимов С.Н.

5 $nolist ; подавление листинга

71 ;****************************************************************************

72 ; внутренние параметры

73 ;****************************************************************************

9000 74 dseg at 9000h

9000 75 data_1: dsw 200 ; Массив 1 для результатов

9190 76 data_2: dsw 200 ; Массив 2 для результатов

0030 77 rseg at (30h) ; сегмент регистров

0030 78 count: dsw 1 ; счетчик

0032 79 ptr_1: dsw 1 ; указатель 1

0034 80 ptr_2: dsw 1 ; указатель 2

0036 81 buf: dsw 1 ; промежуточные данные

82

83 ;****************************************************************************

84 ;блок внешних связей

85 ;****************************************************************************

86 ;****************************************************************************

87 ;ââîä:

88 ;вывод:

89 ;****************************************************************************

8100 90 cseg at 8100h ; сегмент кода программы

8100 FA 91 di ; запретить прерывания

8101 A1640030 92 ld count,#100 ; счетчик на 100 элементов

8105 A1009032 93 ld ptr_1,#data_1 ; указатель на 1 элемент

массива 1

8109 A1909134 94 ld ptr_2,#data_2 ; указатель на 1 элемент

массива 2

810D B10014 95 ldb wsr, #0 ;

8110 B1080B 96 ldb ioc2, #00001000b ;

8113 B10114 97 ldb wsr, #01 ; в окне 1 доступен регистр

AD_TIME

8116 B18903 98 ldb ad_time, #10001001b ; Tsam Tconv

8119 B10F14 99 ldb wsr, #15 ;

811C B10014 100 loop1: ldb wsr, #0 ; 6 k

811F B10E02 101 ldb ad_command, #00001110b ; 8-битное

преобразование

8122 3B02FD 102 loop2: jbs ad_result, 3, loop2 ; переход

8125 A00236 103 ld buf, ad_result ; запись значения регистра

ad_result

8128 080636 104 shr buf, #6 ; сдвиг на 6 разрядов

812B C23336 105 st buf, [ptr_1]+ ; сохранение результата в

массиве

812E A1000036 106 ld buf, #0 ; обнуление

8132 B00236 107 ldb buf, ad_result ; запись значения регистра

ad_result

8135 710736 108 andb buf, #00000111b ; логическое сложение

8138 C23336 109 st buf, [ptr_1]+ ; сохранение результата в

массиве

813B A1000036 110 ld buf, #0 ; обнуление

813F B10F02 111 ldb ad_command, #00001111b ; 8-битное

преобразование

8142 3B02FD 112 loop3: jbs ad_result, 3, loop3 ; переход

8145 A00236 113 ld buf, ad_result ; запись значения регистра

ad_result

8148 080636 114 shr buf, #6 ; сдвиг на 6 разрядов

814B C23536 115 st buf, [ptr_2]+ ; сохранение результата в

массиве

814E A1000036 116 ld buf, #0 ; обнуление

MCS-96 MACRO ASSEMBLER D_LAB 05/15/10

21:37:32 PAGE 2

LOC OBJECT STMT SOURCE STATEMENT

8152 B00236 117 ldb buf, ad_result ; запись значения регистра

ad_result

8155 710736 118 andb buf, #00000111b ; логическое сложение

8158 C23536 119 st buf, [ptr_2]+ ; сохранение результата в

массиве

815B A1000036 120 ld buf, #0 ; обнуление

815F E130BA 121 djnzw count, loop1 ; счетчик сравнивается с 0,

вычитается 1 и выполняет

ñÿ loop1.

8162 F0 122 ret ;

123 ;*****************************************************************************

8163 124 END

MCS-96 MACRO ASSEMBLER D_LAB 05/15/10

21:37:32 PAGE 3

SYMBOL TABLE LISTING

--------------------

N A M E VALUE ATTRIBUTES

AD_COMMAND. . . . . . . . . . . 0002H NULL ABS BYTE

AD_RESULT . . . . . . . . . . . 0002H NULL ABS BYTE

AD_RESULT_HI. . . . . . . . . . 0003H NULL ABS BYTE

AD_RESULT_LO. . . . . . . . . . 0002H NULL ABS BYTE

AD_TIME . . . . . . . . . . . . 0003H NULL ABS BYTE

BAUD_RATE . . . . . . . . . . . 000EH NULL ABS BYTE

BUF . . . . . . . . . . . . . . 0036H REG ABS WORD

COUNT . . . . . . . . . . . . . 0030H REG ABS WORD

D_LAB . . . . . . . . . . . . . ----- MODULE MAIN STACKSIZE(0)

DATA_1. . . . . . . . . . . . . 9000H DATA ABS WORD

DATA_2. . . . . . . . . . . . . 9190H DATA ABS WORD

HSI_MODE. . . . . . . . . . . . 0003H NULL ABS BYTE

HSI_STATUS. . . . . . . . . . . 0006H NULL ABS BYTE

HSI_TIME. . . . . . . . . . . . 0004H NULL ABS WORD

HSO_COMMAND . . . . . . . . . . 0006H NULL ABS BYTE

HSO_TIME. . . . . . . . . . . . 0004H NULL ABS WORD

IMASK1. . . . . . . . . . . . . 0013H NULL ABS BYTE

INT_MASK. . . . . . . . . . . . 0008H NULL ABS BYTE

INT_MASK1 . . . . . . . . . . . 0013H NULL ABS BYTE

INT_PEND. . . . . . . . . . . . 0009H NULL ABS BYTE

INT_PEND1 . . . . . . . . . . . 0012H NULL ABS BYTE

INT_PENDING . . . . . . . . . . 0009H NULL ABS BYTE

IOC0. . . . . . . . . . . . . . 0015H NULL ABS BYTE

IOC1. . . . . . . . . . . . . . 0016H NULL ABS BYTE

IOC2. . . . . . . . . . . . . . 000BH NULL ABS BYTE

IOC3. . . . . . . . . . . . . . 000CH NULL ABS BYTE

IOPORT0 . . . . . . . . . . . . 000EH NULL ABS BYTE

IOPORT1 . . . . . . . . . . . . 000FH NULL ABS BYTE

IOPORT2 . . . . . . . . . . . . 0010H NULL ABS BYTE

IOS0. . . . . . . . . . . . . . 0015H NULL ABS BYTE

IOS1. . . . . . . . . . . . . . 0016H NULL ABS BYTE

IOS2. . . . . . . . . . . . . . 0017H NULL ABS BYTE

IPEND1. . . . . . . . . . . . . 0012H NULL ABS BYTE

LOOP1 . . . . . . . . . . . . . 811CH CODE ABS ENTRY

LOOP2 . . . . . . . . . . . . . 8122H CODE ABS ENTRY

LOOP3 . . . . . . . . . . . . . 8142H CODE ABS ENTRY

PTR_1 . . . . . . . . . . . . . 0032H REG ABS WORD

PTR_2 . . . . . . . . . . . . . 0034H REG ABS WORD

PTSSEL. . . . . . . . . . . . . 0004H NULL ABS WORD

PTSSRV. . . . . . . . . . . . . 0006H NULL ABS WORD

PWM_CONTROL . . . . . . . . . . 0017H NULL ABS BYTE

PWM1_CONTROL. . . . . . . . . . 0016H NULL ABS BYTE

PWM2_CONTROL. . . . . . . . . . 0017H NULL ABS BYTE

R0. . . . . . . . . . . . . . . 0000H NULL ABS WORD

SBUF. . . . . . . . . . . . . . 0007H NULL ABS BYTE

SP. . . . . . . . . . . . . . . 0018H NULL ABS WORD

SP_CON. . . . . . . . . . . . . 0011H NULL ABS BYTE

SP_STAT . . . . . . . . . . . . 0011H NULL ABS BYTE

T2CAPTURE . . . . . . . . . . . 000CH NULL ABS WORD

T2CONTROL . . . . . . . . . . . 000CH NULL ABS BYTE

TIMER1. . . . . . . . . . . . . 000AH NULL ABS WORD

TIMER2. . . . . . . . . . . . . 000CH NULL ABS WORD

WATCHDOG. . . . . . . . . . . . 000AH NULL ABS BYTE

MCS-96 MACRO ASSEMBLER D_LAB 05/15/10

21:37:32 PAGE 4

N A M E VALUE ATTRIBUTES

WSR . . . . . . . . . . . . . . 0014H NULL ABS BYTE

ASSEMBLY COMPLETED, NO ERROR(S) FOUND.

Соседние файлы в папке Лабораторная работа №6
  • #
    01.05.201470.66 Кб12LAB4_4.DOC
  • #
    01.05.20143.11 Кб9LAB_4_4.A96
  • #
    01.05.20149.13 Кб9LAB_4_4.LST