Разработка программы на языке ассемблера

Листинг программы на языке ассемблера

org 0; начало с 0 адреса

jmp START; переход на метку

ORG 0BH; после метки START, программа начинается в 0ВН

START: P0,#0; подаем нули на неиспользуемые контакты

mov P3,#00000011b; подаем нули на неиспользуемые контакты

mov SP,#80h; запись начинается с адреса 81h

mov 08h,#0FFh; запись в ОЗУ первоначального состояния порта Р1

mov 09h,#0h; запись в 0ЗУ первоначального состояния порта Р2

PROVERKA:TMOD,#00100001b; настройка ТС1 TH1,#0FDh; запись числа в старшие байты ТС

mov TL1,#0FDh; запись числа в младшие байты ТС

mov SCON,#01010000b; режим UART, передача 9 битного пакета

mov PCON,#10000000b; удвоение скорости

mov TCON,#01000000b; включение ТС1

nabor:

mov R0,#0

mov DPTR,#prer1

string:

mov A,R0; записываем значение из R0 в аккумулятор

movc A,@A+DPTR; загружаем байт в аккумулятор из DPTR

mov SBUF,A; записываем значения из А в буфер

again:

JNB TFI,again; ветвление по адресу, пока флаг таймера не переполниться

clr TFI

inc R0; увеличение значения регистра R0 на 1

mov R4,#0; флаг для прерывания от ТС0, который еще не включен

cjne A,#9,string PRIEM; должны принять "start

CJNE A,#'s',naborPRIEM A,#'t',nabor

LCALL PRIEM

CJNE A,#'a',nabor

LCALL PRIEM

CJNE A,#'r',nabor

LCALL PRIEM

CJNE A,#'t',nabor; если пришло start, то начинается выполнение операции

mov N, 1; Количество попыток запуска двигателя

Dvigatel:

CMP P1.1, #0, Dvigatel; Сравнивание D и 0 (двигатель заглушен)

JZ Korobka; Переход к проверке Korobka

Dvigatel: RETI; выход из цикла

Korobka:

CMP P1.2, #1, Korobka; Сравнивание KP и 0 (стоит нейтральная передача)

JZ Ruchnik; Переход к проверке Ruchnik

Korobka: RETI; выход из цикла

Ruchnik:

CMP P1.3, #1, Ruchnik; Сравнивание RT и 1 (ручной тормоз включен)

JZ Run; Переход к Run

Ruchnik: RETI; выход из цикла

Run:

mov P1.7, #1h; Подача наивысшего уровня для запуска двигателя

CMP P1.1, 1, Dvigatel; Сравнивание D и 1 (двигатель запущен)

JZ Answer_true; Переход на метку с положительным отчетом

inc N; увеличение N на единицу, для подсчета попыток

PRIEM:R4,#0,vyhod RI,PRIEM; Ждём пока придёт символ, и в регистр R1 установится 1

mov A,SBUF; Записываем в аккумулятор пришедший символ из буфера

CLR RI

vyhod: RETI:

inc R2R2,#70, ret_1R2,#0 R4,#1; задержка на 5 секунд

ret_1: RETI

mov P1.7, #0h; отмена запуска реле

CMP N, 3; проверка количества попыток

JBE Run

Dvigatel: RETI

JMP Answer_false; Переход на метку с отрицательным отчетом

Answer_true:: mov R0,#0; передача команды "AT+CMGS=89227157174", т.е. отправка SMS на номер абонента

mov DPTR,#prer2:TFI,againTFI R0

cjne A,#20,string R0,#10h; ввод в отчета о выполнении операции

string:A,@R0SBUF,A:TFI,againTFI R0

cjne A,#30,string:

LCALL PRIEM; принятине отчета о количестве отправленных смс

CJNE A,#30,kolvo; т.к. нам не понадобится данная информация, то ждем окончания строки

LCALL PRIEM; подтверждение отправки sms

CJNE A,#'O',smska

LCALL PRIEMA,#'K',smska;_false:: mov R0,#0; передача команды "AT+CMGS=89227157174", т.е. отправка SMS на номер абонента

mov DPTR,#prer2:TFI,againTFI R0

cjne A,#20,string

mov R0,#10h; ввод в отчет о выполнении операции

again:TFI,againTFI R0

cjne A,#30,kolvo: LCALL PRIEM; принятие отчета о количестве отправленных смс

CJNE A,#30,kolvo; т.к. нам не понадобится данная информация, то ждем окончания строки

LCALL PRIEM; подтверждение отправки sms

CJNE A,#'O',smska

LCALL PRIEMA,#'K',smska;: db ' AT+CMGR=1; ',9: db 'AT+CMGS=89227157174; ', 19;

Заключение

Разработанное в курсовой работе устройство, осуществляет запуск двигателя с помощью отправки SMS сообщения, отвечает требованиям технического задания. Разработана принципиальная электрическая схема и написана программа на языке ассемблера.

Главным модулем устройства является GSM модуль который принимает SMS сообщение, а также отправляет отчет о работе

Были получены практические знания, связанные с работой процессорной техники, для выполнения устройством заданного алгоритма работы использовали программу, которая написана на языке assembler для процессора серии MCS - 51.

Читайте также

Проект организации широкополосного доступа в коттеджном микрорайоне Чистопрудный г. Ижевска
Возможность в любое время в любом месте при любых условиях иметь доступ к неограниченным информационным ресурсам становится для современного человека одним из самых важных аспектов жизни ...

Разработка комплекта электрических схем маршрутной релейной централизации блочного типа
Целью дипломного проектирование являлась разработка комплекта электрических схем маршрутной релейной централизации блочного типа (БМРЦ) для использования их студентами техникума в качест ...

Построение внутренней памяти процессорной системы, состоящей из ПЗУ и статического ОЗУ
Построить внутреннюю память процессорной системы, состоящую из ПЗУ и статического ОЗУ. Процессорная система работает в реальном режиме. Разрядность ША - 20, ШД - 8. ИСХОДНЫЕ ДАННЫЕ: ...

Основные разделы

Все права защищены! (с)2025 - www.generallytech.ru