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

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

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.

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

Основы телефонной коммутации
История освоения направления телекоммуникационного оборудования началась в далеком 1992г., когда на развалинах Советского Союза небольшая группа инженеров-энтузиастов во главе с будущим ...

Проектирование радиорелейной линии связи
Радиорелейная связь - один из видов радиосвязи, образованной цепочкой приёмо-передающих (ретрансляционных) радиостанций. Наземная радиорелейная связь осуществляетс ...

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

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

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