Проектирование системы сбора данныхРефераты >> Программирование и компьютеры >> Проектирование системы сбора данных
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 ;