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
;======================================================
==================
Статья в тему
Системы спутникового мониторинга Глонасс на автотранспорте
Теория нечетких множеств (fuzzy sets theory) ведет свое
начало с 1965г., когда профессор Лотфи Заде (Lotfi Zadeh) из университета
Беркли опубликовал основополагающую работу “Fuzzy Sets” в журнале “Information
and Control”. Прилагательное "fuzzy", которое можно перевест ...