Листинг программы на языке ассемблера
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.
Читайте также
Проектирование сооружений городской районной телефонной сети
Основными
задачами, стоящими перед отраслью связи на городской телефонной сети (ГТС),
являются улучшение характеристик качества обслуживания и предоставление новых
видов услуг св ...
Проектирование и расчет электрической сети 110-220 кВ
Проектирование электроэнергетических систем требует комплексного подхода
к выбору и оптимизации схем электрических сетей и технико-экономическому
обоснованию решений, определяющих состав ...
Проектирование РЭА
При конструкторском проектировании РЭА (радиоэлектронной
аппаратуры) решаются задачи, связанные с поиском наилучшего варианта
конструкции, удовлетворяющего требованиям технического задан ...