Подробная структурная схема алгоритма работы системы
На основе укрупнённой структурной схемы алгоритма и распределения ресурсов создадим подробную структурную схему алгоритма. Подробная структурная схема алгоритма представлена на рисунках 3, 4, 5.
Рис.3. Подробная структурная схема алгоритма
Рис.4. Подробная структурная схема алгоритма
Рис.5. Подробная структурная схема алгоритма
Алгоритм формирования числа для индикатора
Рис. 5. Подробная структурная схема алгоритма
Программа работы МПС
Метка
Мнемоника и операнды
Кол-во тактов
Комментарии
NAME Voltmeter V 1.0
CSEG AT 0000H
Задание сегмента памяти программ
ORG 0000H
Задание адреса начала программы
M4:
MOV 20H,#64H
Сохранения коэффициента деления делителя = 100
M3:
MOV A,20H
Передача коэффициента деления на делитель
MOV P3,A
SETB P3.6
Формирование на входе Start импульса запуска
CLR P3.6
M1:
MOV C,P3.5
Непрерывное опрашивание выхода готовности
JNC M1
MOV A,P0
Считывание данных с АЦП в МП
MOV R0,A
MOV A,P1
MOV R1,A
CJNE R0,#0AH,M2
Сравнение кода АЦП с 10
M6:
CJNE R1,#3H,M5
Проверка на переполнение
CJNE R0,#0E9H,M5
M2:
JC M6
Переход на метку при с = 1
MOV A,20H
Уменьшение коэффициента деления делителя в 2 раза
RR A
MOV 20H,A
LJMP M3
Переход на метку М3
M5:
JC M6
Переход на метку при с = 1
MOV B,20H
Умножение входного напряжения на коэффициент деления и сохранение в регистрах R6 и R7
MOV A,R0
MUL AB
MOV R5,B
MOV B,20H
MOV R7,A
MOV B,#100
Выделение первой десятичной цифры напряжения и сохранение ее в регистре R2
MOV A,R6
DIV AB
MOV R2,A
MOV A,B
ADD A,R7
MOV B,#10
Выделение второй и третьей десятичной цифр и сохранение их в регистрах R3 и R4
DIV AB
MOV R3,A
MOV R4,B
MOV P2,R2
Перенос цифры из R2 в порт P2
SETB P1.2
Установка бита в 1
Метка
Мнемоника и операнды
Кол-во тактов
Комментарии
CLR P1.3
Установка бита в 0
CLR P1.4
Установка бита в 0
CLR P1.5
Установка бита в 0
CLR P1.6
Установка бита в 0
Ssi
Cjne R2,#00h,a
Проверка считанного числа на 0 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#3Fh
Ljmp ind_end
Переход на метку ind_end
A
Cjne R2,#01h,b
Проверка считанного числа на 1 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#06h
Ljmp ind_end
Переход на метку ind_end
B
Cjne R2,#02h,c
Проверка считанного числа на 2 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#5Ch
Ljmp ind_end
Переход на метку ind_end
C
Cjne R2,#03h,d
Проверка считанного числа на 3 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#4Fh
Ljmp ind_end
Переход на метку ind_end
D
Cjne R2,#04h,e
Проверка считанного числа на 4 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#66h
Ljmp ind_end
Переход на метку ind_end
E
Cjne R2,#05h,f
Проверка считанного числа на 5 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#6Dh
Ljmp ind_end
Переход на метку ind_end
F
Cjne R2,#06h,g
Проверка считанного числа на 6 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#7Dh
Ljmp ind_end
Переход на метку ind_end
G
Cjne R2,#07h,h
Проверка считанного числа на 7 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#07h
Ljmp ind_end
Переход на метку ind_end
H
Cjne R2,#08h,i
Проверка считанного числа на 8 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#7Fh
Ljmp ind_end
Переход на метку ind_end
I
Cjne R2,#09h,i
Проверка считанного числа на 9 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#6Fh
ind_end
MOV P2,R3
Перенос цифры из R3 в порт P2
CLR P1.2
Установка бита в 0
SETB P1.3
Установка бита в 1
CLR P1.4
Установка бита в 0
CLR P1.5
Установка бита в 0
CLR P1.6
Установка бита в 0
Ssi
Cjne R2,#00h,a
Проверка считанного числа на 0 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#3Fh
Ljmp ind_end
Переход на метку ind_end
A
Cjne R3,#01h,b
Проверка считанного числа на 1 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#06h
Ljmp ind_end
Переход на метку ind_end
B
Cjne R3,#02h,c
Проверка считанного числа на 2 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#5Ch
Ljmp ind_end
Переход на метку ind_end
C
Cjne R3,#03h,d
Проверка считанного числа на 3 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#4Fh
Ljmp ind_end
Переход на метку ind_end
D
Cjne R3,#04h,e
Проверка считанного числа на 4 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#66h
Ljmp ind_end
Переход на метку ind_end
E
Cjne R3,#05h,f
Проверка считанного числа на 5 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#6Dh
Ljmp ind_end
Переход на метку ind_end
F
Cjne R3,#06h,g
Проверка считанного числа на 6 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#7Dh
Ljmp ind_end
Переход на метку ind_end
G
Cjne R3,#07h,h
Проверка считанного числа на 7 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#07h
Ljmp ind_end
Переход на метку ind_end
H
Cjne R3,#08h,i
Проверка считанного числа на 8 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#7Fh
Ljmp ind_end
Переход на метку ind_end
I
Cjne R3,#09h,i
Проверка считанного числа на 9 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#6Fh
ind_end
MOV P2,R4
Перенос цифры из R4 в порт P2
CLR P1.2
Установка бита в 0
CLR P1.3
Установка бита в 0
SETB P1.4
Установка бита в 1
CLR P1.5
Установка бита в 0
CLR P1.6
Установка бита в 0
Ssi
Cjne R4,#00h,a
Проверка считанного числа на 0 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#3Fh
Ljmp ind_end
Переход на метку ind_end
A
Cjne R4,#01h,b
Проверка считанного числа на 1 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#06h
Ljmp ind_end
Переход на метку ind_end
B
Cjne R4,#02h,c
Проверка считанного числа на 2 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#5Ch
Ljmp ind_end
Переход на метку ind_end
C
Cjne R4,#03h,d
Проверка считанного числа на 3 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#4Fh
Ljmp ind_end
Переход на метку ind_end
D
Cjne R4,#04h,e
Проверка считанного числа на 4 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#66h
Ljmp ind_end
Переход на метку ind_end
E
Cjne R4,#05h,f
Проверка считанного числа на 5 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#6Dh
Ljmp ind_end
Переход на метку ind_end
F
Cjne R4,#06h,g
Проверка считанного числа на 6 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#7Dh
Ljmp ind_end
Переход на метку ind_end
G
Cjne R4,#07h,h
Проверка считанного числа на 7 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#07h
Ljmp ind_end
Переход на метку ind_end
H
Cjne R4,#08h,i
Проверка считанного числа на 8 и формирование управляющего числа для ИНДИКАТОРА
Mov A,#7Fh
Ljmp ind_end
Переход на метку ind_end
I
Cjne R4,#09h,i
Проверка считанного числа на 9 и формирование управляющего числа для ИНДИКАТОРА