Разработка микроконтроллера сбора данных о температуре печи для плавки металла, страница 12

Work_PD     ds    2               ; макс. диаст.    │ рабочие

Work_PSmin  ds    2               ; мин.  систол.   │ переменные

Work_PSmax  ds    2               ; сред. систол.   │

Work_PS     ds    2               ; макс. систол.  ─┘

;

Count1sec   ds    1               ; счетчики

Count1min   ds    1               ; времени

Count15min  ds    1               ;

            org   _STATbase-4     ;

StatBase    ds    2               ; указ. на начало стат. за сутки

StatPoint   ds    1               ; указатель хвоста (последний + 1)

            org   _STATbase       ;

Statistics  ds    1152            ; статистика за сутки. Формат

; - по 12байт, как тек. значения

; записей: 24ч*60мин/15мин = 96

;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

;----------------------------------

; Инверсный семисегментный знакогенератор

;----------------------------------

org   ROMend-0Fh      ; в самом конце ПЗУ

;,gfedcba

Z_GEN:      db    NOT(00111111b)  ; 0     ┌─A─┐

db    NOT(00000110b)  ; 1     F   B

db    NOT(01011011b)  ; 2     ├─G─┤

db    NOT(01001111b)  ; 3     E   C

db    NOT(01100110b)  ; 4     └─D─┘ H

db    NOT(01101101b)  ; 5

db    NOT(01111101b)  ; 6

db    NOT(00000111b)  ; 7

db    NOT(01111111b)  ; 8

db    NOT(01101111b)  ; 9

db    NOT(00110111b)  ; A

db    NOT(01111100b)  ; b

db    NOT(00111001b)  ; C

db    NOT(01011110b)  ; d

db    NOT(01111001b)  ; E

db    NOT(01110001b)  ; F


;----------------------------------

;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

; Стартпрограммы                 ;

;----------------------------------

            org   0000h           ;

ZERO:       di

JMP   ReST7           ; на инициализацию и тесты

;---------------------------------            org   0008h           ;

ReST1:      MOV   A,L             ; HL=HL+DE

ADD   E               ; 16-битное сложение

MOV   L,A             ;

MOV   A,H             ;

ADC   D               ;

MOV   H,A             ;

RET                   ;

;---------------------------------            org   0010h           ;

ReST2:      MOV   A,L             ; HL=HL-DE

SUB   E               ; 16-битное вычитание

MOV   L,A             ;

MOV   A,H             ;

SBB   D               ;

MOV   H,A             ;

RET                   ;

;---------------------------------            org   0018h           ;

ReST3:      XRA   A               ; HL=-HL

SUB   L               ; 16-битная инверсия

MOV   L,A             ;

MVI   A,00H           ;

SBB   H               ;

MOV   H,A             ;

RET                   ;

;---------------------------------            org   0020h           ;

ReST4:      MOV   A,H             ; сравнение HL, DE.

CMP   D               ; HL<DE =>  CF=1, ZF=0

RC                    ; HL=DE =>  CF=0, ZF=1

RNZ                   ; HL>DE =>  CF=0, ZF=0

MOV   A,L             ;

CMP   E               ;

RET                   ;

;---------------------------------            org   0028h           ;

ReST5:      RET                   ;

;---------------------------------            org   0030h           ;

ReST6:      RET                   ;

;----------------------------------


;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

            org   0038h

ReST7:      di                    ; запрет прерываний

lxi   sp,_STATbase-10h; загрузка указателя стека

mvi   a,PPIinit       ; настройка

out   Port1RCW        ; микросхем ППИ

out   Port2RCW        ;

xra   a

out   Port1C          ; обнулить выходы

out   Port2C          ;

cma            ; (A) <- FF

out   Ind1            ;

out   Ind10           ; погасить

out   Ind100          ; индикаторы

;----------------------------------

; Модуль проверки ОЗУ

;----------------------------------

; проверка ОЗУ

lxi   h,RAMbase       ; начало ОЗУ

mvi   b,0FFh          ;

MEMload2:   mov   M,b             ; загрузка ЕДИНИЦаМИ

inx   h               ;

mov   M,b             ; addr+1

inx   h               ;

mov   M,b             ; addr+2

inx   h               ;

mov   M,b             ; addr+3

inx   h               ;

mov   a,h             ;

cpi   HIGH(RAMend)+1 ;

JNZ   MEMload2        ; поиск 2049-го прохода

lxi   h,RAMbase       ; начало ОЗУ

MEMread2:   mov   a,M             ; чтение