Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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

Пример выполнения работы | Краткие теоретические сведения | Регистр приоритетов прерываний | Начальные адреса прерываний | Краткие теоретические сведения | Структура регистра IE | Адреса векторов прерывания | Регистр приоритетов прерываний | Пример выполнения работы | Краткие теоретические сведения |


Читайте также:
  1. Fill in the missing numerals in the following sentences as in the example given for the first sentence. (Вставьте пропущенное имя числительное как в примере.)
  2. Gt; Часть ежегодно потребляемого основного напитала не должна ежегодно воз­мещаться в натуре. Например, Vu стойкости машины в течение года перенесена на
  3. I. ЗАДАНИЯ ДЛЯ АУДИТОРНОЙ РАБОТЫ
  4. I. Итоговая государственная аттестация включает защиту бакалаврской выпускной квалификационной работы
  5. I. Цель работы
  6. I. Цель работы
  7. I. Цель работы

В качестве примера ниже приведена программа, реализующая измеритель напряжения с использованием алгоритма аналого-цифрового преобразования по методу дифференциального кодирования с индикацией полученного результата на статических индикаторах стенда. Поскольку в стенде использован восьми разрядный ЦАП на который подано опорное напряжение 5,12 В, вес младшего значащего разряда составляет 5,12 / 256 = 0,02 В. Поэтому после выполнения аналого-цифрового преобразования, для получения достоверных результатов, полученный код перед выводом на индикаторы необходимо масштабировать результат: умножить на 0,02 В.

 

;*******ЛАБОРАТОРНАЯ РАБОТА 12*************

;*****Программа изучения аналого-цифрового преобразования *********

; Реализуется способ следящего АЦП

; с последующим преобразованием результата в BCD формат для

; вывода на индикацию на статич. индикаторах HG1.1, HG1.2, HG1.3

; составил А. Н. Алаев

; ********************************************************

.ORG 0; установка указателя сч команд для ассемблера на 0

ADC:; программа преобразования напряжения в 8-ми разр. дв. код

;результат преобразования в регистре R0

mov A,R0; переслать в акк. содерж. регистра преобр.

mov DPTR,#0F000h; переслать в DPTR адрес ЦАПа

movx @DPTR,A; переслать содержимое регистра преобр. в регистр ЦАПа

; т.е. произвести перобразование код-напряжение

call delay; вызвать п-п задержки для ожидания окончания переходных

; процессов в ЦАПе

jnb P1.7, decr; если сработал компаратор, подключенный выходом к порту

;Р1.7, а входами к ЦАП и преобр. напряжению переход к уменьш.

; на "1" содерж. в рег. R0

cjne A,#0FFh,i1; сравнение содерж. акк с FFh и переход если не равно

; (блокировка переполнения регистра)

sjmp i2;абсолютный переход на сегмент индикации без увеличения

; содержимого регистра

i1: inc A; увеличение содержимого акк. на "1" т. к. компаратор

; не сработал

i2: mov R0,A; пересылка акк. в регистр преобр.

sjmp ind; абсолютный переход на сегмент индикации

decr:

cjne A,#000h,i3; сравнение содерж. акк. с 00h и переход если не равно

; (блокировка переполнения регистра)

sjmp i4; абсолютный переход на сегмент индикации без уменьшения

; содержимого регистра

i3: dec A; уменьшение содержимого акк. на "1"

i4: mov R0,A; пересылка акк. в регистр. преобр.

sjmp ind; абсолютный переход на сегмент индикации

ind:; сегмент индикации R1-упакованные единицы (ст. тетрада)

; и десятки, R2 - сотни ст. тетрада

call preobr; вызов подпрограммы масштабирования и преобразования

; в упакованный BCD формат

mov A,#00100001b; подготовка включения трех левых разр. стат. инд. и

; второй слева точки

mov DPTR,#0A004h; адрес анодов и точек индикаторов в DPTR

movx @DPTR,A; включение соотв. разрядов и точки

mov A,R1; единицы и десятки в акк.

mov DPTR,#0B000h; адрес двух правых инд. в DPTR

movx @DPTR,A; высветить десятки и единицы

mov A,R2; сотни в акк.

mov DPTR,#0A000h; адрес двух левых индикаторов в DPTR

movx @DPTR,A; высветить сотни

sjmp ADC; абсолютный переход на начало программы

;**************************************************************

;ПОДПРОГРАММА ЗАДЕРЖКИ НА 200 мкс

;****************************************************************

delay:

mov R3,#200;* организация 200 машинных циклов

djnz R3,$;* переход на саму себя с уменьшением содержимого R3 на «1»

ret

;********************************************************************

;*********************************************************************

;Подпрограмма умножения на 2 и преобразования 8-ми разрядного

; двоичного кода

;в двоично-десятичный (BCD) упакованный, в R1 записываются младшие

; разряды

;числа в R2 (старшую тетраду) – старший

preobr:

mov A,R0; код АЦП в акк.

mov R7,A; запоминание масштабированного результата

mov B,#100; заносим во вспомогательный регистр делитель

div AB; делим преобр. число на 100

rl A; умножаем на 2 код сотен

mov R2,A; переписываем код (старший двоично десятин.

; разряд) в регистр R2 мл. тетрада (код сотен)

mov A,B; переписываем в акк. остаток от деления

mov B,#10; заносим во вспомогательный регистр делитель

div AB; делим на 10, в результате в акк.

; в мл. тетраде хранится код десятков

; в ст. тетраде нули

 

; а в рег. В в мл. тетраде –код единиц

mov R1,B; переписываем код единиц в регистр R1

rl A; умножение на 2 кода десятков

mov R4,A; запоминание кода десятков во вспомогат. регистре R4

mov A,R1; пересылка в акк. кода единиц

rl A; умножение на 2 кода единиц

mov B,#10;* формирование переноса в байт десятков, если число

;* превышает «9»

div AB;* деление кода единиц на «10»

mov R1,B;* пересылка остатка (фактический код единиц)

;* в регистр кода ед.

add A,R4; прибавление переноса к коду десятков

; (перенос содержится в акк.)

mov B,#10;* формирование переноса в байт сотен,

;* если код десятков превышает «9»

div AB;* деление кода десятков на «10»

mov R4,B;* запоминание фактического кода десятков во вспом. регистре

add A,R2; прибавление переноса к коду сотен

mov R2,A; запоминание фактического кода сотен

mov A,R4; пересылка в акк. фактического кода десятков для упаковки

pack: swap A; меняем местами ст. и мл. тетраду акк.

; в результате в ст. тетраде хранится код десятков

; в мл. записаны нули

xrl A,R1; логическое суммирование регистров

; в результате получили упакованный BCD в акк.

; - в ст. тетраде находится код десятков, а в мл.

; - код единиц

mov R1,A; переписываем результат в регистр для индикации

; десятков и единиц

ret

end

 


Дата добавления: 2015-07-20; просмотров: 44 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
К- аналоговый компаратор, РС- реверсивный счетчик, ГТИ- генератор тактовых импульсов, ЦАП- цифро-аналоговый преобразователь.| ГРУЗОВЫЕ ПЕРЕВОЗКИ

mybiblioteka.su - 2015-2024 год. (0.017 сек.)