Проектирование системы сбора данных
Рефераты >> Программирование и компьютеры >> Проектирование системы сбора данных

SMOD=1

Кратность

Скорость передачи

(Кбод)

Частота кварца (МГц)

SMOD=0 (1/64)

SMOD=1 (1/32)

1

115,2

3,683252

3,689363

2

57,6

1,836904

1,849126

3

38,4

1,219356

1,237689

4

28,8

0,909007

0,933452

5

23,04

0,721539

0,752095

6

19,2

0,595511

0,632178

7

16,457142

0,504592

0,547369

8

14,4

0,435615

0,484504

9

12,8

0,381267

0,436267

10

11,52

0,337159

0,398270

12

9,2

0,269422

0,342756

Приложение 3 ОБОБЩЕННЫЙ АЛГОРИТМ РАБОТЫ

Нет

Да

Приложение 5

Подпрограмма инициализации

MOV SCON,#10010000b ; устанавливается второй режим УАПП

SETB 87h,1 ;SMOD=1

MOV IP,#00010000b ;высокий уровень приоритета прерывания у приема передатчика

MOV IE,#10010000b ; разрешаем прерывания

Подпрограмма записи 12-ти бит в управляющий регистр AD7890

SETB P1.2 ;Устанавливаем линию SCLK

SETB P1.4; Устанавливаем линию TFS

MOV R1,0Ch ; организовываем счетчик переданных бит (12)

MOV A,R0 ; загружаем а аккумулятор передаваемые биты

MET0: RRC A ; проталкиваем во флаг С передаваемый бит

MOV P1.1,C ; выставляем передаваемый бит на Р1.1

ACALL DELAY ;ожидаем

CPL P1.2 ;инверсия Р1.2

ACALL DELAY ;ожидаем

CPL P1.2 ; инверсия Р1.2

DJNZ R2,MET0

CPL P1.4

Подпрограмма задержки на 0.006 сек.

DELAY: MOV R0,C8h

MET1: NOP

DJNZ R0,MET1

RET

Подпрограмма задержки на 0.6 сек.

DELAY2: MOV R0,Ah

` MOV R1,Ah

MET1: NOP

MET2: NOP

DJNZ R1,MET2

DJNZ R0,MET1

RET

Подпрограмма работы сWDT

ACALL DELAY2 ;ожидаем

CPL P1.6

ACALL DELAY2 ;ожидаем

CPL P1.6

Подпрограмма чтения 15-ти бит с линии DATA OUT AD7890

SETB P1.2 ;Устанавливаем линию SCLK

SETB P1.3; Устанавливаем линию RFS

MOV R2,08h ; организовываем счетчик принятых бит в аккумулятор (если R2=0 – аккумулятор полный

ACALL DELAY ;ожидаем

CPL P1.2 ;инверсия Р1.2

ACALL DELAY ;ожидаем

CPL P1.2 ;инверсия Р1.2

MET0: MOV C,P1.0 ; принимаем бит на Р1.0 и отправляем его во флаг

RLC A ; достаем из флага С принятый бит

DEC R2

JZ MET2 ; если байт принят R2=0

MOV R3,A ; тогда занесем из А в R3 принятый байт

CLR A ; и обнулим аккумулятор, если не принят то -

MET2: ACALL DELAY ;ожидаем

CPL P1.2 ; инверсия Р1.2

ACALL DELAY ;ожидаем

DJNZ R2,MET0

MOV R2,07h ;приняли первые восемь бит, теперь приймем еще семь

CPL P1.2 ;инверсия Р1.2

MET3: MOV C,P1.0 ; принимаем бит на Р1.0 и отправляем его во флаг

RLC A ; достаем из флага С принятый бит

DEC R2

JZ MET4

MOV R4,A

CLR A

MET4: ACALL DELAY ;ожидаем

CPL P1.2 ; инверсия Р1.2

ACALL DELAY ;ожидаем

DJNZ R2,MET3 ;ну вот, и все готово младшая часть посылки находится (8 бит) в R3, а старшая (7 бит) в R4

CPL P1.4

;Подпрограмма выбора коэффициентов нелинейного датчика

MOV DPL,00h

MOV DPH,04h

MOV A,#00001100b

ANL A,R0

RL A

RL A

CLR 0D4H

CLR 0D3H

MOV R0,#0AH

MOV R1,#04H

M1: MOV A,#06H

MOVC A,@A+DPTR

MOV @R0,A

INC R6

INC R0

DJNZ R1,M1

END

;Подпрограмма умножения двух байт (регистры R0, R1 - 1-ый банк) на три (регистры ;R2, R3, R4 - 1-ый банк ), результат помещается в R3, R4, R5, R6, R7 - 0-ой ;банк.

MOV R4,#0h

MOV R5,#0h

MOV R6,#0h

MOV R7,#0h

MOV R3,#0h

MOV R0,#10h

me1: SETB 0D3h

CLR 0D4h

MOV A,R0

RRC A

MOV R0,A

MOV A,R1

RRC A

MOV R1,A

JNC me2

MOV A,R4

ADD A,5h

MOV 5h,A

MOV A,R3

ADDC A,4h

MOV 4h,A

MOV A,R2

ADDC A,3h

MOV 3h,A

me2: CLR 0D4h

CLR 0D3h

MOV A,R4

RRC A

MOV R4,A

MOV A,R5

RRC A

MOV R5,A

MOV A,R6

RRC A

MOV R6,A

MOV A,R7

RRC A

MOV R7,A

DJNZ r0,MET1

;Подпрограмма сложения пяти байт(R3, R4, R5, R6, R7 - 0-ой банк.

;) с двумя (R2(0Dh),R3(0Eh) - 0-ый банк), результат помещается в R3(13h), ;R4(14h), R5(15h), R6(16h), R7(17h) - 2-ой банк.

CLR 0D3H ;


Страница: