Подпрограмма, выполняющая преобразование двухбайтного двоичного числа в эквивалентное пятиразрядное десятичное число. Подпрограмма взята из книги «Программы для микропроцессоров» А.Л. Гуртовцев, С.В. Гудыменко и переведена на ассемблер МК51.
Входные параметры: регистры R0,R1.
Выходные параметры: регистры R4,R5.
Используются: регистры R0, R1, R2, R3 ,R4 ,R5.
HEXBCD:
CLR A;
MOV R4,A;
MOV R5,A;
MOV R3,R1;
MOV R2,R0;
MOV R1,16h; счетчик циклов.;
CYCL: MOV R4,A сдвиг двоичного числа влево;
RLC A;
MOV R4,A;
MOV A,R5;
RLC A;
MOV R5,A;
MOV A,R4;двоично-десятичное удвоение суммы с учетом переноса.
ADDC A,R4;
DA A;
MOV R4,A;
MOV A,R5;
ADDC A,R5;
DA A;
MOV R5,A;
MOV A,R0;
ADDC A,R0;
DA A;
MOV R0,A;
DJNZ R1,CYCL;проверка конца цикла
MOV A,R0;
RET.
Подпрограмма, выполняющая кодирование двухбайтного десятичного числа в код для отображения на ЖК-дисплее.
Входные параметры: регистры R4,R5.
Выходные параметры: ячейки резидентной памяти данных 30h,31h,32h.
Используются: регистры R0, R4 ,R5.
PERECOD:
MOV R0,30h; загрузка адреса числа сотен
MOV A,R5;
ANL A,0Fh; перекодировка числа сотен
ORL A,30h;
MOV @R0,A;
MOV A,R4;
SWAP A;
ANL A,0F; перекодировка числа десятков
ORL A,30h;
INC R0;
MOV @R0,A;
MOV A,R4;
ANL A,0F; перекодировка числа единиц.
ORL A,30h;
INC R0;
MOV @R0,A;
RET;
Подпрограмма, выполняющая отображение на ЖК-дисплее показаний первого канала.
Входные параметры: регистры ячейки внешней памяти данных 04h,05h, коды надписи выводимой на дисплей («Разность давлений »)в ячейках ВПК 801h-812h.
Выходные параметры: показания на ЖК-дисплее.
Используются: регистры R0, R1,R2,R4 ,R5,R6,R7.
OUTPUT1:
SETB P1.3 ;подключение внешней памяти данных
CLR P1.4 ;
MOVX A,#04h ;загрузка последнего измерения первого канала
MOVX R0,@A ;разность давлений
INC A ;
MOVX R1@,A ;
ACALL HEXBCD;перекодировка
ACALL PERECODE;
SETB P1.4 ;подключение PIO
CLR P1.3 ;
MOV R6,#O6h ;режим инструкции
MOV A,#80h ;
MOV R0,#02h ;адрес стартового знакоместа
ORL A,R0;
MOV R7,A ;
ACALL WRT ;
ACALL BUSY ;
MOV R6,#07 ;режим «Данные»
MOV DPTR,#0801h;загрузка начального адреса надписи
MOV R2,#11;установка счетчика байт
LBL1: MOV A,@DPTR;запись
MOV R7,A ;очередного кода символа
ACALL WRT ;в ОЗУ дисплея.
INC DPTR ;
DJNZ R2,LBL1 ;конец массива
MOV R2,#03h ;установка счетчика байт
MOV R0,#30h ;загрузка начального адреса значения разности давления
MOV A,@R0 ;
MOV R7,A ;
ACALL WRT ;
INC R0 ;
DJNZ R2,LBL2 ;конец цикла?
SETB P1.3 ;отключить PIO
RET ;
Подпрограмма, выполняющая отображение на ЖК-дисплее показаний второго канала.
Входные параметры: регистры ячейки внешней памяти данных 06h,07h, коды надписи выводимой на дисплей («Давление в магистрали :»)в ячейках ВПК 81D-838h.
Выходные параметры: показания на ЖК-дисплее.
Используются: регистры R0, R1,R2,R4 ,R5,R6,R7.
OUTPUT2:
SETB P1.3 ;подключение внешней памяти данных
CLR P1.4 ;
MOVX A,#06h ;загрузка последнего измерения первого канала
MOVX R0,@A ;
INC A ;
MOVX R1,A ;
ACALL HEXBCD;перекодировка
ACALL PERECODE;
SETB P1.4 ;подключение PIO
CLR P1.3 ;
MOV R6,#O6h ;режим инструкции
MOV A,#80h ;
MOV R0,#02h ;адрес стартового знакоместа
ORL A,R0;
MOV R7,A ;
ACALL WRT ;
ACALL BUSY ;
MOV R6,#07 ;режим «Данные»
MOV DPTR,#081Dh;загрузка начального адреса надписи
MOV R2,#1B;установка счетчика байт
LBL1: MOV A,@DPTR;запись
MOV R7,A ;очередного кода символа
ACALL WRT ;в ОЗУ дисплея.
INC DPTR ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.