Как да напишем съберат програма за контрол на 12bit КПР

C

cyw1984

Guest
Реша 8051 използва за контрол на 12-битов ЦАП AD667, продукция обхват е от 0-10V
Някой знае ли как да се напише програма?

Ако просто искате да въведете 4096 ~ ~ ~ ~
тогава как изхода на КПР настъпи 4096 (10V)<img src="http://img2.imageweb.info/img2/EzN84016.jpg" border="0" alt="How to write a assemble program to control 12bit DAC" title="Как да напишем съберат програма за контрол на 12bit КПР"/>Благодаря много

 
някой може да ми помогне??? Много благодаря***** P1 ...свържете 12bit КПР
p3.2 е ЦС
P3.0 е A0, A1
P3.1 е A2, A3

Моята програма:
ogh 00h
ЬОМР ОСНОВНИ

Начало: MOV а, # 0ffh <---- тест ценности

MOV P1, А
SETB P3.2
SETB P3.0
CPL P3.1

КРАЙ

Аз не знам как да wirte ... програмата не може да не работи .. някой да ми помогне .. благодаря

Искам да 111111111111B

продукция = 10V

HELPHELPHELPHELPHELP

 
Здрасти,
The Circuit изглежда картирани памет.В този случай
Да предположим, че / CS линия е ниска, когато A15-A2 = 10000000000000.

Според страницата 8 от ad667.pdf документ за право оправдано 8-битов интерфейс
X01 товари товари 8 LSBs и X10 натоварвания 4 MSBs където Х = 15-A2 и 0 / 1 = A1 & A0

Така че на адреса на LSB е 0x8001 и MSB е 0x8002
както и на Fig7 на страница 7, D11, D10, D9, D8 трябва да бъдат представени в по-ниски хапане.

И накрая, както не знам много за събрание, ще напиша кода на езика C.Можете да го конвертирате в събранието.Мога да ви обясни логиката събрание също.

Код:# определят DAC_LSB (грозен Чар xdata *) 0x8001

# определят DAC_MSB (грозен Чар xdata *) 0x8002нищожен update_DAC (грозен кратко value12bits)

(

* (DAC_LSB) = (грозен Чар) value12bits;

* (DAC_MSB) = (грозен сЬаг) (value12bits>> 8);

)

 
Ако имате всички 8051 на отделните портове на разположение, щях да се свържат всички 12 бита се използват, т.е. P1 като DB0 - DB7 и долната част на P2 като DB8 - DB11.
В този случай A3, А2, А1 и A0 са обвързани ниско (до 0V).
Можете да използвате T0 (Р3.4) за контрол на ВС ..

Ако R6 съдържа D0-D7 и R7 0000 D11-D8 можете да направите следното:

код ....

MOV P1, R6
MOV P2, R7
CLR Р3.4
NOP; остана с CS ниски за известно време ..
NOP
..
NOP
SETB Р3.4; CS отива високо ..

Очевидно това е само част от код, който изпраща до 12 бита ADC, и вие ще се нуждаете от повече, но мисля, че това е най-лесният начин за взаимодействие един 8051-compatibile устройство към AD667 ..С уважение,
IanP

 
IanP написа:

Ако имате всички 8051 на отделните портове на разположение, щях да се свържат всички 12 бита се използват, т.е. P1 като DB0 - DB7 и долната част на P2 като DB8 - DB11.

В този случай A3, А2, А1 и A0 са обвързани ниско (до 0V).

Можете да използвате T0 (Р3.4) за контрол на ВС ..

IanP
 
idlebrain написа:IanP написа:

Ако имате всички 8051 на отделните портове на разположение, щях да се свържат всички 12 бита се използват, т.е. P1 като DB0 - DB7 и долната част на P2 като DB8 - DB11.

В този случай A3, А2, А1 и A0 са обвързани ниско (до 0V).

Можете да използвате T0 (Р3.4) за контрол на ВС ..

IanP
 
cyw1984 написа:

.., но това е използването на 17pin до .......

Също така, защо не използвам AD767 ... това не е памет карта .....

като прост КПР ~ ~

 
1.Ако използвате само една AD667
Мога ли да използвам 8051 за контрол задейства CS?
Пристанище 3.2, става ли?
БлагодарностиAdded след 2 минути:Как да се зареди с ВРТК 0x8001 ... Това не е необходимо да се задейства AD667?

В equialant в събрание може да бъде
1) Поставете ACC с 8 бита LSB
1) Поставете ВРТК с 0x8001
2) използване MOVX да се актуализира LSB
3) Поставете ACC с 4 MSB бита
4) Поставете ВРТК с 0x8002
5) използвайте MOVX вик актуализация MSBAdded след 16 минути:Оправих си програма ............(p3.2 е ЦС
P3.0 е A0, A1
P3.1 е A2, A3) <--- става ли??? Имам проблема??

ogh 00h
ЬОМР ОСНОВНИ

Начало: MOV а, # 111111111111B; тест ценности

MOV P1, А
РЛО P3.2; задейства AD667
NOP
NOP
SETB P3.1
CPL P3.0; позволи 8 LSB първо капаче
CPL P3.1
SETB P3.0; позволи 4 MSB първо капаче и натоварване на първото до второто резе резе
NOP
NOP
SETB P3.2, без операция на AD667

КРАЙМоже ли правилно?

 
Според информационния лист за написването на ключалки настъпва при нарастващия фронт на сигнала на ВС.А0-A3 се отнася само за игли и затова не са използвани при преместване / писмено цикъл.
Така че първо трябва да зададете ниски, CS, после данни за DB0-DB7/DB8-DB11 автобус и задайте адрес игли и след това на ВС високи, и това трябва да се случи два пъти ..

P3.2 = CS
P3.0 = A0/A1
P3.1 = A2/A3

След като върнете всички PX.X са високи ..

CLR P3.2; CS отива НИСКО
CLR P3.0
MOV P1, DATALOW
NOP
NOP
SETB P3.2; CS отива високо
SETB P3.0
NOP
NOP
CLR P3.2
CLR P3.1
MOV P1, DATAHIGH
NOP
NOP
SETB P3.2
SETB P3.1
NOP
SJMP $; безкраен цикъл
КРАЙ

Сега, това решение изисква MCU 11 пина.Другият вариант с всички данни 12 пина нуждите 13 пина (12 за данни и един за CS, А0-A3 са свързани с 0V).Защо не ти ли харесва?

С уважение,
IanP

 
Разтвор IanP's / програма е 100% верни.Надявам се това да реши проблема си.

BTW, тук е инструкция как да се зареди ВРТК
Код:MOV ВРТК, # 08000H

 

Welcome to EDABoard.com

Sponsor

Back
Top