Листинг программы. Главная программа. Определение вершины стека. Переход на подпрограмму MAIN. Вектор прерывания по входу INT0

Страницы работы

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

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Приложение 1. Листинг программы

Главная программа

ORG 0000H                ;

MOV SP, #70H           ;     Определение вершины стека

JMP MAIN                 ;     Переход на подпрограмму MAIN

ORG 03H                     ;     Вектор прерывания по входу INT0

JMP RS                        ;     (запрос INT0)

MAIN:    MOV R0, # 20H

CALL VZVESH; подпрограмма взвешивания

MOV R0, # 20H

MOV R1, # 21H

CALL YM100; умножение на 100

CALL DIV2; деление на 273

MOV A, R2

MOV R1, #20H

MOVX @R1, A

INC R1

MOV A, R3

MOV A, R2

MOV R0, #20H

MOVX @R0, A

CALL BDC; вычисление двоично-десятичного кода

MOV A, R6

MOV R1, # 22H

MOVX @R1, A

MOV A, R7

INC R1

MOVX @R1, A

SETB P1.6                 ; подключить регистр индикации грамм и килограмм

MOVX @R1, A

MOV A, # 1000000B; отключить регистр индикации грамм и килограмм и подключить регистр индикации десятков и сотен килограмм

MOV P1, A

MOV A, R6

MOVX @R1, A

MOV A, # 00000100B; отключить регистр индикации десятков и сотен килограмм и подключить регистр светодиодов

MOV P1, A

MOV A, # 00000001B

MOVX @R1, A; зажечь светодиод «Вес тары»

MOV A, # 00100000B

MOV P1, A; отключить регистр светодиодов и подключить регистр управления

; ожидание запуска конвейера

M1:        MOVX A, @R1

RLC A

JNC M1

; взвешивание тары с грузом

VZVESTAR: MOV A, # 00000100B

MOV P1, A ;подключить регистр светодиодов и отключить   регистр управления

MOV A, # 00000010

MOVX @R1, A ; зажечь светодиод «Тара с грузом»

CLR P1.0

MOV R0, # 30H

CALL VZVESH; подпрограмма взвешивания

MOV R0, # 30H

MOV R1, # 31H

CALL YM100; умножение на 100

CALL DIV2; деление на 273

MOV A, R2

MOV R0, # 20H

MOV @R0, A

MOV A, R3

MOV R1, # 21H

MOV @R1, A

CALL BCD; вычисление двоично-десятичного кода

SETB P1.6B; подключить регистр индикации грамм и килограмм

MOV A, R6

MOVX @R1, A

CLR P1.7; отключить регистр индикации грамм и килограмм и подключить регистр индикации десятков и сотен килограмм

MOV A, R7

MOVX @R1, A

CLR P1.0

; вычисление чистого веса

MOV R0, # 20H

MOV A, @R0

MOV R7, A

MOV R1, # 21H

MOV A, @R1

MOV R6, A

MOVX A, @R1

CPA A

ADD A, # 01H

MOV R5, A

MOVX A, @R0

CPA A

JNC M2

ADD A, # 01H

M2:         MOV R4, A

MOV A, R7

ADD A, R4

MOV @R0, A

MOV A, R6

JC M3

DEC A

M3:         ADD A, R5

MOV @R1, A

CALL BCD; вычисление двоично-десятичного кода

; запись в память чистого веса

MOV R0, # 00H

MOV R1, # 02H

MOV R2, # 08H

M4:         MOVX A, @R1

MOVX @R0, A

INC R0

INC R1

MOV A, R2

ADD A, 0FFH

MOV R2, A

JNZ M4

MOV A, R7

MOVX @R0, A

MOV A, R6

MOVX @R1, A

; ожидание 2 минуты с проверкой запроса прерывания и нажатия кнопки

«Тест»

SETB EA ; разрешение прерывания

MOV R1, # 01H

MOV R2, # D4H

MOV R3, # C0H

M6:         MOV R4, # 03H

MOV R5, # E8H

CLR P1.5

MOVX A, @R1

RRC

RRC

RRC

JC TECT; нажата кнопка «Тест»

M5:        DJNZ R5, M5

MOV R5, # FFH

DJNZ R4, M5

DJNZ R3, M6

MOV R3, # FFH

DJNZ R2, M6

MOV R2, # FFH

DJNZ R1, M6

DIS I

CLR P1.0

JMP VZVESTAR;

; Подпрограмма обработки нажатия клавиши «Тест»

TEST:     SETB P1.2

MOV A, # 01H

MOVX @R1, A; зажечь светодиод «Вес тары»

CLR P1.0

MOV R0, # 22H

MOV R1, # 23H

MOVX A, @R0

MOV  R2, A

MOVX A, @R0

SETB P1.6; подключить регистр индикации грамм и килограмм

MOVX @R0, A

MOV A, # 10000000B

MOV P1, A; ; отключить регистр индикации грамм и килограмм и подключить регистр индикации десятков и сотен килограмм

MOV A, R2

MOVX @R0, A

MOV A, # 00100000B

MOV P1,A;  отключить регистр индикации десятков и сотен килограмм и подключить регистр управления

MOV R0, # 00H

MOV R2, # 05H

M1:         MOVX A, @R0

RRL

RRL

JNC M1

MOV A,  # 00000100B

MOV P1, A; зажечь светодиод «Чистый вес»

CLR P1.0

MOVX A, @R0

MOV R3, A

INC R0

MOVX A, @R0

INC R0

SETB P1.7; подключить регистр индикации десятков и сотен килограмм

MOVX @R0, A

MOV A, # 01000000B

MOV P1,A; отключить регистр индикации десятков и сотен килограмм и подключить регистр индикации грамм и килограмм

MOV A, R3

MOVX @R0, A

MOV A, # 00100000B

MOV P1,A; отключить  регистр индикации грамм и килограмм и подключить регистр управления

DJNZ R2, M1

M2:         MOVX A, @R0

RRL

RRL

JNC M2

JMP MAIN;

; Подпрограмма обработки прерывания

EQU            30H                   ; начальный адрес

EQU            6                        ; число байт

MOV           R7,#N               ; счётчик

MOV R0,# DATA                ; начальный адрес

MOVX        A@R0

Похожие материалы

Информация о работе

Тип:
Написанные программы на языках программирования
Размер файла:
58 Kb
Скачали:
0

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

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.