Текст программы на языке ASSEMBLER

$nolist

$include (org.prc)

$include (pic_io.mac)

$include (lcd_io.mac)

$include (kbrd_io.mac)

$include (552asm.inc)

$listSTART; переход на основную программу8003h; подпрограмма обработки прерывания по INT0; выход из подпрограммы обработки прерывания по INT08013h; подпрограмма обработки прерывания по INT1A, TL1PSW.0, M11; переход если поступило прерывание останавливающее таймерTCON.4M12: CLR TCON.4; остановка таймераIEN0,#00h; блокировка прерыванийTL1,#00h; обнуление счётчика импульсов: RETI; выход из подпрограммы обработки прерывания по INT1: CALL I2cinit; проверка связи с сопроцессором

%PicGet (PIC_flg)PROG: %SEND_STR_LCD(ERR1)START: CLR CY; обнулить бит переносаLCDinit; инициализировать ЖКИACC, (Scan_8_lines+INTenable+AutoRepeat_en+Beep_enable); (8 линий + прерывание по INT0)initKBRD; инициализировать клавиатуру: %SEND_CMD_LCD(01h); очистить экран

CALL D; подпрограмма временной задержки

%PICGET (PIC_flg); проверка состояния сопроцессораACC.KBRDRQU, NEW; переход если клавиша не нажата

%PICGET (KBRD_STS); чтение кода нажатой клавиши

%KBRD_COD; преобразование в коды ЖКИLCDD; вывод на экран заданного числа тысяч об/минA, R0; преобразование кода нажатой клавиши в число об/мин

SUBB A,#30hR0, A

MOV R1,#64hUMR6, A; запись числа оборотов в регистры R6 и R7R7, B; в регистре R7 - старшие разряды, а в R6 - младшие

M1: %PICGET (PIC_flg)ACC.KBRDRQU, M1

%PICGET (KBRD_STS)

%KBRD_CODLCDD; вывод на экран заданного числа сотен об/минA, R0; преобразование кода нажатой клавиши в число об/мин

SUBB A,#30hR0, AR1,#0AhUMR0, A

MOV R1, R6SUM; операция сложения тысяч и сотен об/мин в регистах R6 и R7

M2: %PICGET (PIC_flg)ACC.KBRDRQU, M2

%PICGET (KBRD_STS)

%KBRD_CODLCDD; вывод на экран заданного числа десятков об/мин

MOV A, R0A,#30h

ADD A, R6; получение окончательногоR6, A; числа об/мин в регистрах R6 и R7R0,#00hLCDD; добавка нуля к полученному результату: MOV R3, R7; определение времени которое должно быть получено на счётчикеR2, R6; между двумя импульсами от датчика скоростиR0,#02hDEL; деление скорости на 2 (N/2)

MOV R0, R2R3,#27hR2,#10hDEL; 10000/(N/2)R1, R2R0,#05hUM; 10000*5/(N/2)

MOV R6, A; занесение в регистры R6 и R7 времениR7, B; скоторым будет сравниваться время полученное на счётчикеPWMP, 7Fh; задание начальной частоты повторения ШИМTCON,#01h; установка прерывания INT0 по уровню (переход из 1 в 0)IEN0,#81h; снятие блокировки прерываний и разрешение прерывания по INT0: JNB TCON.1, M3; ожидание прерывания по INT0 (включение двигателя)TMOD,#D1h; Разрешение управлять счётчиком 1 от INT1 и выбор 1 - ого режима счётчика 1 и таймера 0TCON,#44h; запуск счётчика 1 и установка прерывания INT1 по уровню (переход из 1 в 0)IEN0,#84h; снятие блокировки прерываний и разрешение прерывания по INT1: JNB TCON.3, M4; ожидание прерывания по INT1 (с датчика скорости запускающего таймер): JNB TCON.3, M5; ожидание прерывания по INT1 (с датчика скорости останавливающего таймер): MOV A, TH0; операция сравнения заданного времени и времени с счётчика

MOV B, TL0CYA, R7UVELA, BA, R6

JC UVEL

JMP UMEN

UVEL: MOV A, PWMP; операция увеличения скважности импульсов

CJNE A,#01h, M6PWMP M6

UMEN: MOV A, PWMP; операция уменьшения скважности импульсов

CJNE A,#FFh, M6PWMP: MOV R0,#02hR3, TH0R2, TL0DELR0, R2R3,#27hR2,#10hDEL R0, R2; преобразование времени счётчика в текущую скорость

MOV R1,#05h; двигателя и отображение её на ЖКИ

LCALL UMR4, AR5, BR0,#64h MOV R3, R5R2, R4DELA, R2A,#30hR0,#C0h

LCALL LCDC; установка курсора в начало второй строки ЖКИR0, ALCDD; вывод количества тысяч об/мин

MOV R1, R2R0,#64hUMR3, R5R2, R4VICHB,#0AhA, R2ABR0, AA,#30h

MOV R0, ALCDD; вывод числа сотен об/мин

MOV A, BA,#30hR0, A

LCALL LCDD; вывод числа десятков об/минR0,#30hLCDD; добавка нуля к полученному результату

Перейти на страницу: 1 2

Советуем почитать:

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

Домашние и офисные сети Home Lan - стандарты и оборудование (Home lan и интеллектуальный дом)
Система "Умный дом": Нужна для облегчения управления домашним хозяйством, а также для расширения его возможностей. Предлагаемая система является самой передовой технологией ...

Разработка микропроцессорной системы управления объектом
Микропроцессорная система (далее МПС) предназначена для управления некоторыми объектами. Рисунок 1 - Структурная схема связи МПС с внешними объектами. Согласно рисунку ...

Меню



© 2015 TechExternal