Global Informatics

- Информатика и вычислительная техника

Листинг ПО

контроль температура метрологический микроконтроллер

В данном разделе представлен листинг разработанной программы. Программа написана на языке ассемблер.

Листинг ПО:

$NOLIST

$NOMOD51

$LIST

$include(fp51s.lib)

;======================================================

=====================AT 0START0x0BPORT_PRER

;======================================================

=====================_main segment CODEPR_main AT 0x15: ds 1;флаг(0=номер датчика для вывода на дисплей не введен,

;1=запрос на вывод Тх 1-го датчика, 2=запрос Tx ;второго .5=запрос Tx

-го датчика): ds 1;флаг В и Н уставок(0=Н уставка, 1=В уставка): ds 1;флаг-номер датчика(для передачи номера датчика на

;котором обнаружена ошибка в П/П вывода сообщения об ;ошибке)

;======================================================

=====================

;Начальные установки

;Fsys=500 Khz

;======================================================

=====================

INIT:MOV CKCON,#00000111b ;T/C TAKT F/12

MOV SCON,#000000000b ;Fxtal/12IEN1,#00000001b ;use interrapt from keyboardKBE,#00001111b ;ENABLE INTERRUPR REQUEST FOR P0.4-.7TCON,#01010000b ;T/C1 - ON, T/C2 - ON

MOV TMOD,#00010001b ;оба таймеры в 16разр режиме

CLR TH0TL0TH1

CLR TL1:

;======================================================

=====================

;MAIN

;программа измерения температуры

;P0.2-START PIN

;P0.1-END PIN

;R6-DATA ADRESS

;R7-IMPULSE COUNTER

;R4 - BUF FOR SAVE TX

;======================================================

=====================:INIT0R7,#5;загрузка счетчика импульсов

MOV R5,#20 ;начальный адрес хранения Тх

NEW: SETB P0.2;START-IMPULSE

NOPP0.2P0.1,#1,$;ожидание 1-го уровня на Р0.1TR1: MOV R6,#0X47h;начальный адрес хранения Nl и NhP0.1,#0,$;ожидание 0-го уровня на Р0.1TR1TR0@R6,TH1;запись в память Nh для периода высокого уровняR0,R6 ;запись в R0 адреса ячейки (для П/П MAKE_TEMP)R6@R6,TL1;запись в память Nl для периода высокого уровняR1,R6 ;запись в R1 адреса ячейки (для П/П MAKE_TEMP)

INC R6TH1TL1

CJNE P0.1,#1,$;ожидание 1-го уровня на Р0.1TR0TR1@R6,TH0;запись в память Nh для периода низкого уровняR2,R6 ;запись в R3 адреса ячейки (для П/П MAKE_TEMP)R6@R6,TL0;запись в память Nl для периода низкого уровняR3,R6 ;запись в R3 адреса ячейки (для П/П MAKE_TEMP)MAKE_TEMP;вызов П/П вычисления Tx для измеренного

импульса

;на вых - 0х40h адрес ячейки с целым Tx

; 0x41h адрес ячейки с дес. остатком Tx

MOV R4,@40@R5,R4R5R4,@41@R5,R4

LCALL CHECH_Tx;вызов П/П сравнения Tx с уставками

INC R6TH0TL0R7,CICLE: MOV A,FLAG1

JNB NODISPOUT;проверка флага запроса вызова, если flag=0 то не

;надо выводитьDISP_TEMP;вызов П/П вывода Tx N-го датчика на дисплей: JMP START

;======================================================

==================

;П/П вывода Тх на дисплей

;входные переменные:

;flag1 - значение флага определяет для какого датчика выводить tx

;результат выполнения П/П - вывод Тх N-го датчика на дисплей

;======================================================

==================_TEMP:USING 3

;проверка какая кнопка нажата

MOV A,FLAG1A,#1,NED1R0,@0X20hR1,@0X21h:CJNE A,#2,NED2R0,@0X22hR1,@0X23h:CJNE A,#2,NED3R0,@0X24hR1,@0X25h:CJNE A,#2,NED4R0,@0X26hR1,@0X27h:CJNE A,#2,NED5R0,@0X28hR1,@0X29h:MOV R0,@0X30hR1,@0X31h

;преобразование Tx(разбиение числа на цифры)

MOV A,R0B,#00001010bABR6,BA,BB,#00001010bABR5,BR4,A

MOV R7,R1

;В РЕЗУЛЬТАТЕ R4 R5 R6 - ЦИФРЫ ЦЕЛОГО

;R7 - ЦИФРА ДЕСЯТИЧНОГО ОСТАТКА Тх

;преобразование r4-r7 в когды для пересылки(ДОПИСЫВАЕМ 3 В

СТАРШУЮ ТЕТРАДУ)

ORL R4,#00110000b

ORL R5,#00110000b

ORL R6,#00110000b

ORL R7,#00110000b

;ПЕРЕСЫЛКА КОДОВ

1SIMV:MOV P2,R4P0.7P0.7P2,#11111111b,#1d

SIMV:MOV P2,R5P0.7P0.7P2,#11111111b,#1d

SIMV:MOV P2,R6P0.7P0.7P2,#11111111b,#1d

SIMV:MOV P2,#00101110b ;POINTP0.7P0.7P2,#11111111b,#1d

SIMV:MOV P2,R7P0.7P0.7P2,#11111111b,#1d

RETI

;======================================================

==================

Перейти на страницу: 1 2 3 4 5 6

Статья в тему

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

Главные разделы


www.globalinformatics.ru © 2024 - Все права защищены!