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

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

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

Приложение 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