QN 599 23 - 26 PSK 92 326 ; ; ;***************************************************************************************************** ; ;13.2.1987 ;VERZE 2.8 ; ; ; ;PRIRAZENI ADRES: LARAM EQU 3FH ;MAX. ADRESA V RAM LED1 EQU LARAM-6 ;KONEC POLE SVITIVYCH DIOD LKEY EQU LARAM-5 ;POSLEDNI PLATNA KLAVESA KDEB EQU LARAM-10 ;DEBOUNCE KLAVESNICE PARAM EQU LARAM-12 ;KONEC POLE NAVOLENYCH PARAMETRU VYSL EQU LARAM-15 ;KONEC POLE VYSLEDKU MERENI PVYS EQU LARAM-28 ;POCATEK POLE VYSLEDKU MERENI DITE EQU LARAM-30 ;NIZSI BYTE VYSLEDKU TESTU ; ; KSTART EQU 5 ;KLAVESA START KSTOP EQU 6 ;KLAVESA STOP ADISP EQU 0F0H ;DISPLEJ PA EQU 00 ;PORTY 8255 PB EQU 20H PC EQU 40H RREG EQU 60H ;RIDICI REGISTR 8255 ; ;KODY DISPLEJE: ;00 - KLAVESA NESTLACENA ;01 - TYP RELE DOPRAVA ;02 - TYP RELE DOLEVA ;03 - ZOBRAZENI DOPRAVA ;04 - ZOBRAZENI DOLEVA ;05 - START ;06 - STOP ;07 - ZMENA KOMPARACE ; ;NEJVYSSI BIT: 0 - START Z UPINKY ; 1 - STOP Z UPINKY ; ; ;KODY DISPLEJE: ;0 - 9 - CISLICE 0-9 ;A - ZHASNUTO ;B - ZNAK C ;C - ZNAK H ;D - ZNAK P ; ; ;KODY TYPU RELE: ;40 - 23 ;41 - 24 ;42 - 25 ;43 - 26 ; ; ;KODY ZOBRAZENI: ;80 - TEST ;81 - UP ;82 - UO ;83 - IR ;84 - R1P ;85 - R2P ;86 - R1O ;87 - R2O ; ; ;KODY KOMPARACE: ;20 - VYROBA ;21 - ORJS ; ;*************************************************************************************************** ; ORG 0 ; ; ; MOV R0,#LARAM-1 ;UKAZUJE NA ROTBIT MOV @R0,#0EFH ;NASTAVENI ROTBIT EN TCNTI ;POVOLENI PRERUSENI CITACEM JMP VPR1 ; ;PRERUSENI OD CITACE ;------------------------------------------------------------------------------------------------- ; ; ;ZOBRAZOVANI JE MULTIPLEXNI, PREPINANI JE USKUTECNOVANO POMOCI PROGRAMU, PRERUSENIM OD CITACE ;S PREPINACIM KMITOCTEM CCA 400 HZ. ;V OKAMZIKU PRERUSENI JE SOUCASNE SNIMANA A DEKODOVANA KLAVESNICE A VYHODNOCOVAN POVEL Z UPINKY. ;SIGNAL Z UPINKY MA VYSSI PRIORITU. DEKODOVANA KLAVESNICE JE ULOZENA DO LKEY, PRICEMZ NA NEJVYSSIM ;BITU LKEY JE OBSAZENA INFORMACE O STAVU UPINKY. PROGRAM POUZIVA BANKY RB1, REGISTRY R0,1,2,4. ;S KAZDYM PRERUSENIM OD CITACE JE INKREMENTOVAN OBSAH BUNKY CITAC. PRI PLATNOSTI KLAVESY ;SE NASTAVI F1. PRI CHODU MERENI MUSI BYT F0=H. V ROTBIT MUSI BYT 1 BIT NA L, OSTATNI NA H. ; ; SEL RB1 ; MOV R3,A ;USCHOVANI AKUMULATORU ORL P1,#40H ;ZHASNUTI LED + P16 NA H ANL P1,#40H ORL P2,,#0FFH ;VSTUPNI REZIM IN A,P2 ;CTENI PRVNI POLOVINY KLAVESNICE CPL A SWAP A ANL A,#0FH ;MASKA NA UPINKU JNZ KEY1 ;SKOK, KLAVESA JE STLACENA ANL P1,#0 ;PREPNUTI P1 NA SEJMUTI DRUHE POL. KLAV. IN A,P2 ;SEJMUTI DRUHE POL. KLAV. CPL A ANL A,#0F0H ;MASKA NA UPINKU KEY1: MOV R1,#8 ;PRO DEKOD. KLAVESNICE KEY2: RRC A JC DDAN ;DEKODOVANI SKONCEENO, SKOK DJNZ R1,KEY2 ;DALSI BIT DDAN: MOV A,R1 MOV R2,A ;V R2 JE DEKOD. KLAV. MOV R0,#LKEY ; MOV A,@R0 ;V A JE STARY STAV KLAVESNICE ANL A,#0FH ;MASKA NA UPINKU MOV R1,A ;ODLOZENI STAREHO STAVU KLAV. ADD A,#0FFH ;PRI NESTLACENE KLAVESE NENASTANE PRENOS CPL C ;PRI STLAC. KLAV. NENASTANE PRENOS MOV A,R1 ;OBNOVENI OBSAHU A MOV R1,#KDEB ;DEB. KLAVESNICE XRL A,R2 ;POROVNANI NOVEHO A STAREHO STAVU KLAV. RLC A ;TEST NA NESTLACENO ORL A,@R1 ;PRI PLATNOSTI KLAV. JE 0 CLR F1 ;NULOVANI PRIZNAKU PLATNOSTI KLAV. JNZ FORW1 ;SKOK PRI NEPLATNOSTI KLAV. CPL F1 ;NASTAVENI PLATNOSTI KLAV. FORW1: MOV A,@R0 ;V A JE MINULY STAV KLAV. ANL A,#0FH ;MASKA NA UPINKU JZ FORW2 ;PRI NESTLAC. KLAV. SKOK MOV A,#0FFH FORW2: ORL A,@R1 ;SOUCET S KDEBOU ANL A,#7FH ;SNIZENI POCTU CYKLU PRO PLATNOST DALSI KLAV. CLR C RRC A MOV @R1,A ;ULOZENI NOVEHO KDEBOU MOV A,@R0 ;V A JE STARY STAV KL. + STARY STAV UPINKY ANL A,#80H ;PLATI POUZE UPINKA ORL A,R2 ;V A JE NOVY STAV KLAV. SE STARYM STAVEM UPINKY MOV @R0,A ;ULOZENI DO LKEY ANL A,#80H ;STARY STAV UPINKY MOV R2,A ;V R2 JE STARY STAV UPINKY IN A,P2 ;SEJMUTI NOVEHO STAVU UPINKY SWAP A ANL A,#80H ;V A JE NOVY STAV UPINKY XCH A,R2 ;NOVY STAV UPINKY JE V R2 XRL A,R2 ;POROVNANI NOVEHO A STAREHO STAVU UPINKY JZ FORW3 ;SKOK PRI SHODE MOV @R1,#0FFH ;NAPLNENI KDEBOU FORW3: DEC R1 ;V R1 ADRESA UDEBOU JNZ FORW4 ;PRI NESHODE SKOK MOV @R1,#0FFH ;PRI SHODE NASTAVENI UDEBOU FORW4: ORL A,@R1 ;V A JE DEB. + 8. BIT ZESNIMANI CLR C RLC A ;V C JE BIT UPINKY MOV @R1,A ;ULOZENI NOVEHO UDEBOU JNZ DISPL ;SKOK, STAV UPINKY JE NEPLATNY MOV A,@R0 ;V A JE KLAVESNICE + UPINKA ANL A,#7FH ;NULOVANI BITU UPINKY ADD A,R2 ;VYTVORENI NOVE UPINKY A KLAVESNICE MOV @R0,A ;ULOZENI NOVE KLAV. A UPINKY RLC A ; V C JE PLATNY BIT 0 STAVU UPINNKY CLR A ;0=POZADAVEK START, 1=STOP CPL A JF0 FORW5 ;SKOK PRI STARTU CPL A FORW5: ADDC A,#0 ;VYTVORENI PRIZNAKU PRO VETVENI CLR F1 ;CLR= ZRUSENI PLATNOSTI KLAVESY NEBO UPINKY JNZ DISPL ;POZADAVEK NENI NUTNO AKCEPTOVAT,PZ. REZIM JE JIZ NASTAVEN CPL F1 ;PLATNY ZNAK MOV A,#KSTOP ;POZADAVEK STOP JC FORW6 ;SKOK PRI POZADAVKU STOP DEC A ;POZADAVEK START FORW6: RL A RRC A ;NASTAVENI NEJVYSSIHO BITU DLE STAVU UPINKY MOV @R0,A ;ULOZENI KLAVESY A UPINKY DISPL: MOV R0,#LARAM ;ZOBRAZENI INC @R0 ;INKREMENT CITACE POCTU ZOBRAZEI DEC R0 ;UKAZUJE NA ROTBIT (NA L) MOV A,@R0 RR A ;POSUN POZICE PRO DALSI ZOBR. JB3 FORW7 ;TEST NA KONEC CTVERICE ;NENI-LI, SKOK SWAP A ;NASTAVENI VSTUPNI CTVERICE FORW7: MOV @R0,A ;ULOZENI NOVEHO ROTBIT MOV R2,A ;ODLOZENI NOVEHO ROTBIT SWAP A LOOP1: RRC A DEC R0 JC LOOP1 ;PRIVYSTUPU R0 UKAZUJE NA PRISL.MISTO DISPL. MOV A,@R0 ;V A JE PRISL. BYTE DISPLEJE ORL A,#0F0H ;MASKOVANI DRUHHE POLOVINY BYTE ANL A,R2 ; V A JE BYTE PRO DISPL. MOV R1,#ADISP ;ADRESA DISPLEJE MOVX @R1,A ;ZAPIS DO EXTERNI PAMETI DISPLEJE MOV A,#0FCH ;DVOJKOVY DOPLNEK 4 ADD A,R0 ;V A JE ADRESA DIOD LED MOV R1,A ;ULOZENI ADRESY DO R1 MOV A,@R1 ;V A JE LED K ZOBRAZENI OUTL P1,A ;ZAPNUTI LED MOV A,#222 ;NOVE NASTAVENI CITACE PRO DALSI PRERUSENI MOV T,A MOV A,R3 ;OBNOVENI PUV. OBSAHU A RETR ;NAVRAT S OBNOVENIM PSW ; ; ;PODPROGRAM FILL, FILLZ ;----------------------------------------------------------------------------------------------- ; ;PLNI ZONU OD R0-1 DOLU ZNAKEM V A, DELKA ZONY V R2, FILLZ PLNI ZONU NULOU. ; FILLZ: CLR A FILL: DEC R0 MOV @R0,A DJNZ R2,FILL RET ; ; ;PODPROGRAM PAUSE ;------------------------------------------------------------------------------------------------- ; ;ZARADI CASOVOU PRODLEVU O DELCE V A A TESTUJE STLACENI LIBOVOLNE KLAVESY A STAV UPINKY. ;CAS MOZNO NASTAVIT PO 10 MS (PRERUSENI 400 HZ KMITOCTEM). POUZIVA A,R0 A R7. STAV CITACE SE NEMENI. ;PRI NAVRATU S JF1 JE V A POSL. KLAVESA. ; PAUSE: MOV R0,#LARAM RL A RL A ;NASOBENI 4X PRO PREVOD NA PRERUSENI 400 HZ ADD A,@R0 ;VYPOCET OKAMZIKU NAVRATU MOV R7,A ;VYSLEDEK JE V R7 PAUS: MOV A,@R0 ;STAV CITACE JE V A JF1 PAUS1 ;TAST NA PLATNOST KLAVESY XRL A,R7 ;CAS VYPRSEL? JNZ PAUS RET PAUS1: MOV R0,#LKEY MOV A,@R0 ;V A JE POSLEDNI KLAVESA ANL A,#7FH ;MASKA NA BIT UPINKY MOV R0,#LARAM RET ; ; ;PODPROGRAM SPAUS ;----------------------------------------------------------------------------------------------- ; ;ZARADI CAS PRODLEVU O DELCE V A A TESTUJE KLAVESU STOP. PRI STOP NAVRAT S A=0, JINAK A=1. ;POUZIVA A, R0 A R7. ; SPAUS: CALL PAUSE PAUS4: JF1 PAUS2 ;SKOK PRI PLATNOSTI KLAVESY INC A CLR C RET PAUS2: XRL A,#KSTOP ;TEST NA KLAVESU STOP JNZ PAUS3 ;SKOK POKUD NENI STOP RET ;NAVRAT PRI STOP PAUS3: CALL PAUS JMP PAUS4 ; ; ;PODPROGRAM LED ;----------------------------------------------------------------------------------------------- ; ;MENI STAV (ROZSVICENO X ZHASNUTO) U DIOD LED NA PANELU PRISTROJE. DIODU, KTERA MENI STAV, URCUJE OBSAH AKU. PRI ;NAVRATU JE V R2 A R1 INFORMACE O SLOUPCI A RADKU. POUZIVA R1 A R2. ; LED: MOV R1,#LED1+1 ;POCATEK POLE LED+1 RADEK: ADD A,#0F8H ;ODECTENI 8 DEC R1 JC RADEK ;VYTVORENI ADRESY RADKU MOV R2,#0 ADD A,#09H SLOUP: XCH A,R2 DEC R2 RLC A XCH A,R2 ;POSUV BITU JNZ SLOUP MOV A,R2 XRL A,@R1 ;ZMENA PRISLUSNEHO BITU MOV @R1,A RET ; ; ;PODPROGRAM ZMPAR ;----------------------------------------------------------------------------------------------- ; ;PROVEDE ZMENU PRISL. PARAMETRU (T.J. TYP RELE, ZOBRAZENI A KOMPARACE) A ZMENU JEHO INDIKACE NA PANELU PRISTROJE ;DLE KODU TLACITKA V R2. POUZIVA R0, R1, R2, R3, R4, R5. V POSLEDNI CASTI PROGRAMU ROZSVITI PRISLUSNOU ;JEDNOTKU, NALEZEJICI K MERENE VELICINE. ; ZMPAR: MOV A,R2 ;ZADANY KOD TLACITKA DO R2 A A DEC A ANL A,#6H ;A OBSAHUJE: 0-TYP RELE, 2-ZOBRAZENI, 6-KOMPARACE RL A ;V A JE RELATIVNI POCATEK TABULKY, PRISLUSEJICI K ZADANE KLAVESE MOV R3,A ADD A,#(TAB1 AND 0FFH) ;POCATEK TAB1 XCH A,R3 ;V R3 JE ABS. ADRESA POCATKU PRISL. TABULKY, V A JE RELATIVNI POC. TABULKY ADD A,#4 ANL A,#18H ;A=0 PRO TYP RELE, 8 PRO ZOBRAZENI, 10H PRO KOMPARACI RR A RR A RR A CPL A INC A MOV R0,#PARAM ;V R0 ADRESA TYPU RELE ADD A,R0 ;V A JE ADRESA PARAMETRU, KTERY SE BUDE MENIT MOV R0,A MOV A,@R0 ;V A JE STARY PARAMETR XCH A,R2 ;V A JE KOD ZADANE KLAVESY, V R2 JE STARA PROMENNA RRC A ;V C JE BIT, ROZHODUJICI O INC. NEBO DEC. PARAMETRU MOV A,R2 ;V A JE STARY PARAMETR ANL A,#0F0H ;MIN. HODNOTA PARAMETRU MOV R4,A ;ODLOZENI DO R4 SWAP A ORL A,R4 DEC A ;MAX. HODNOTA PARAMETRU MOV R5,A ;ODLOZENI DO R5 CLR A ADDC A,#0FFH ADDC A,#0 ;V A JE FFH PRI POSUNU DOLEVA, A 1 PRI POSUNU DOPRAVA ADD A,R2 ;INKREMENT NEBO DEKREMENT STAREHO PARAMETRU MOV @R0,A ;ULOZENI NOVE VYTVORENEHO PARAMETRU CPL A INC A ;V A JE DVOJKOVY DOPLNEK XCH A,R4 ;V A JE MIN. HODNOTA, V R4 JE DVOJK. DOPLNEK MOV R1,A ;V R1 JE MIN HODNOTA DEC A ADD A,R4 ;A-R4 MOV A,R5 ;V A MAX. HODNOTA JNC FORW8 ;PRI C JE NOVY PAR.>MIN. DOVOLENA HODNOTA MOV @R0,A ;ULOZENI NOVEHO PARAMETRU FORW8: ADD A,R4 ;MAX. HODNOTA-NOVY PARAMETR JC FORW9 ;PRI NC JE NOVY PAR. < MAX. HODNOTA MOV A,R1 ;V A JE MIN. HODNOTA ZESC: MOV @R0,A ;ULOZENI NOVEHO PARAMETRU FORW9: MOV A,R2 ;V A JE STARY PARAMETR ANL A,#0FH ;PLATI POUZE NIZSI POLOVINA ADD A,R3 ;V A JE ADRESA BYTE PRO ZHASNUTI STARE SIGNALIZACE MOVP3 A,@A ;V A JE PRISLUSNY BYTE CALL LED ;ZHASNUTI STAREHO PARAMETRU MOV A,@R0 ;V A JE NOVY PARAMETR ANL A,#0FH ;PLATI POUZE NIZSI POLOVINA ADD A,R3 ;ADRESA BYTE PRISLUSEJICI NOVEMU PARAMETRU MOVP3 A,@A ;PRISLUSNY BYTE JE V A CALL LED ;ROZSVICENI NOVE INDIKACE MOV A,#0F1H ;ZHASNUTI DIOD V, MA, MILIOHMY ; ----------------------------------- MOV R1,#LED1-2 ;POZICE TECHTO DIOD ANL A,@R1 ;VYNULOVANI ODPOVIDAJICICH POZIC MOV @R1,A ;ZPETNE ULOZENI MOV R0,#PARAM-1 ;NASLEDUJE ROZSVICENI PRISLUSNE DIODY (V, MA, MILIOHM) MOV A,@R0 ;V A JE NOVY PARAMETR ANL A,#07FH ;MASKA NA NEJVYSSI BIT JZ RETN ;JE TEST, NAVRAT ADD A,#0FDH ;DV. DOPLNEK 3 MOV R2,#12H ;ROZSVITI SE V JNC CLED ;SKOK, JE NAVOLENO UO NEBO UP INC R22 ;V R2 JE 13H=MA JZ CLED ;SKOK PRI MA DEC R2 DEC R2 ;PRO MILIOHMY CLED: MOV A,R2 CALL LED ;ROZSVICENI PRISL. JEDNOTKY CLR C ;PRO PODPROGRAM SCANR, SCANE CPL C MOV A,#1 RETN: RET ; ; ;PODPROGRAM CLRPZ ;--------------------------------------------------------------------------------------------- ; ;NULUJE ZONU, DO KTERE SE UKLADAJI VYSLEDKY MERENI. POUZIVA R0 A R2. ; CLRPZ: MOV R2,#16D MOV R0,#VYSL+1 CALL FILLZ ;NULOVANI ZONY RET ; ; ;PODPROGRAM CLRDCH ;---------------------------------------------------------------------------------------------- ; ;PODPROGRAM ZHASNE DISPLEJ A CHYBOVE LED. POUZIVA A, R0, R2 ; CLRDCH: CALL PRDI1 ;ZHASNUTI HL1, 2, 3 CLRCH: MOV R0,#LED1 ;ZHASNE CHYBOVE LED MOV @R0,#0 DEC R0 DEC R0 ;UKAZUJE NA BYTE S LED R20 MOV A,#0EFH ; ANL A,@R0 MOV @R0,A RET ; ; ;PODPROGRAM RCHH ;---------------------------------------------------------------------------------------------- ; ;PROVEDE ZOBRAZENI DLE NASTAVENEHO VYSLEDKU MERENI A ROZSVITI PRISLUSNE CHYBOVE DIODY ; DLE BITU 7 PRISLUSNYCH BYTE ZONY VYSLEDKU, POUZIVA A,R0,R1,R2,R3 ; RCHH: CALL CLRCH ;ZHASNUTI CHYBOVYCH LED MOV R0,#PVYS+1 ;UKAZUJE NA VYSSI BYTE VYSLEDKU UP MOV R3,#7 ;POCET DVOUBYTE VYSLEDKU RCH2: MOV A,@R0 ;VYSSI BYTE VYSLEDKU V A CALL POMPR1 DJNZ R3,RCH2 ;DALSI PARAMETR CHYBOVYCH LED DRCHH: MOV R0,#LED1+4 ;UKAZUJE NA HL3 MOV R1,#PARAM-1 ;PROMENNA ZOBRAZENI MOV A,@R1 ;KOD ZOBRAZENI V A RL A ;MASKA NA 7 BIT+NASOBENI DVEMA DEC A MOV R1,#DITE ;ADRESA ZONY TESTU ADD A,R1 MOV R1,A ;R1 UKAZUJE NA NIZSI BYTE VYSLEDKU, KTERY SE MA ZOBRAZIT MOV A,@R1 ;V A JE BYTE PRO HL2 A HL3 MOV @R0,A ;NAPLNENI HL3 DEC R0 SWAP A INC R1 MOV @R0,A ;NAPLNENI HL2 DEC R0 MOV A,@R1 MOV @R0,A ;NAPLNENI HL1 RET ; ; ;PODPROGRAM PREPL ;---------------------------------------------------------------------------------------------- ; ;PODPR. V ZAVISLOSTI NA BITU 6 VYSSIHO BYTE VYSLEDKU V CELE ZONE INVERTUJE SVIT PRISLUSNE ;CHYBOVE LED PRI 6 BIT=H , PRI 6 BIT=L NECHA BEZEZMENY. V DRUHE CASTI VYKONA PRDISP. ;POUZIVA A,R0,R1,R2,R3. ; PREPL: MOV R0,#VYSL-0CH ;ADRESA VYSSIHO BYTE VYSLEDKU UP. MOV R3,#7 ;POCET DVOUBYTE VYSLEDKU PREP1: MOV A,@R0 RL A CALL POMPR1 DJNZ R3,PREP1 ;DALSI PARAMETR CALL PRDISP RET POMPR1: RLC A JNC POMP1 MOV R1,#(0FFH AND TAB2-1) ;TABULKA PREVODU NA PRISLUSNOU LED MOV A,R3 ADD A,R1 ;V A JE ADRESA V TABULCE MOVP3 A,@A CALL LED ;INVERZE PRISLUSNE LED POMP1: INC R0 INC R0 ;DALSI PARAMETR RET ; ; ;PODPROGRAM PRDISP ;------------------------------------------------------------------------------------------------ ; ;ZHASNE DISPLEJ, POKUD JE ZOBRAZEN PARAMETR, U NEHOZ DOSLO K PREPLNENI. POUZIVA A, R0, R2. ; PRDISP: MOV R0,#LARAM-4 ;ADRESA HL1 MOV A,@R0 ;V A JE HHL1 JB6 PRDI1 ;SKOK PRI PREPLNENI MER. PARAMETRU RET PRDI1: MOV R0,#LARAM-1 ;ZHASNUTI DISPLEJE MOV R2,#3 MOV A,#0AH ;PRO ZHASNUTI CALL FILL RET ; ; ;PODPROGRAM DETE ;------------------------------------------------------------------------------------------------- ; ;V ZAVISLOSTI NA STAVU BITU 5 HL1 ROZSVITI (PRI H) NEBO ZHASNE (PRI L) DESETINNOU TECKU. ;POUZIVA A,R0,R1,R2. ; DETE: MOV R1,#LED1-1 ;ADRESA BYTE S DES. TECKOU MOV R2,#2 ;POCET PRUCHODU DETE2: MOV R0,#LARAM-4 ;ADRESA HL1 MOV A,@R0 CLR C CPL C ;NASTAVENI C JB5 DETE1 ;SKOK, POKUD MA TECKA SVITIT CLR C ;NEBUDE SVITIT DETE1: MOV A,@R1 ;LED2 JE V A RL A RRC A ;NEJVYSSI BIT JE NASTAVEN MOV @R1,A ;ZPETNE ULOZENI DEC R1 ;PRO DALSI PRUCHOD DJNZ R2,DETE2 ;NASTAVENI DALSIHO BITU RET ; ; ;PODPROGRAM ZAKPA ;------------------------------------------------------------------------------------------- ; ;DO PODPROGRAMU SE VSTUPUJE S REGISTREM R2 NAPLNENYM POCATECNIADRESOU PRISL. TABULKY ;(UP, UO, IR ATD.) NA P3. PODPR. NAPLNI R2 PRISLUSNOU HODNOTOU KOMPARACE DLE NAVOLENI NA PANELU ;A V R3 JE PRISLUSNY VSTUPNI PARAMETR. POUZIVA A,R0,R2,R3. ; ZAKPA: MOV R0,#PARAM ;ADRESA TYPU RELE MOV A,@R0 ;V A JE TYP RELE ANL A,#0FH ;PLATI NIZSI PULBYTE MOV R3,A RL A ;NASOBENI DVEMA ADD A,R3 ;KRAT TRI ADD A,R2 ;A UKAZUJE V P3 NA POCATEK PRISL. TABULKY DLE TYPU RELE MOV R2,A MOVP3 A,@A ; MOV R3,A ;V R3 JE PRISL. VSTUPNI PARAMETR DEC R0 DEC R0 ;UKAZUJE NA KOMPARACI MOV A,@R0 ;NASTAVENA KOMP. V A ANL A,#0FH INC A ADD A,R2 ;ADRESA PRISL. KOMPARACE MOVP3 A,@A MOV R2,A RET ; ; ;PODPROGRAM KLKO ;---------------------------------------------------------------------------------------------------- ; ;PROVEDE TEST R2>=A. POKUD PODMINKA NENI SPLNENA, NASTAVI NA H 7. BIT BYTE, ADRESOVANY R. ;JE-LI VYVOLAN S C=H, NASTAVI I 6. BIT @R0. VYVOLAVA SE S R0 UKAZUJICIM NA NEJVYSSI POZICI VYSLEDKU PRO HL1. ;OBNOVUJE PSW. POUZIVA R3,R4. ; KLKO: MOV R3,A ;PRO OBNOVENI A CPL A INC A ;DVOJK. DOPLNEK A MOV R4,A KLKO2: CLR A ;NAST. 6. BITU @R0 DLE STAVU C RRC A RR A ORL A,@R0 ;NASTAVENI BITU 6 @R0; DALSI BITY NEMENI MOV @R0,A MOV A,R2 ;VLASTNI TEST ADD A,R4 ;PRI C JE VSE OK JC KLKO1 MOV A,#80H ;7. BIT @R0 NA H ORL A,@R0 MOV @R0,A KLKO1: MOV A,R3 ;OBNOVENI A RETR ; ; ;PODPROGRAM ZLKO ;-------------------------------------------------------------------------------------------------- ; ;JAKO KLKO, ALE TESTUJE A<=R2. POUZIVA R3,R4 A LIKVIDUJE R2. OBNOVUJE PSW. ; ZLKO: MOV R3,A ;PRO OBNOVENI OBSAHU MOV A,R2 CPL A INC A ;DV. DOPLNEK R2 MOV R4,A MOV A,R3 MOV R2,A JMP KLKO2 ;PO SKOKU SE PROVEDE TEST ; ; ;PODPROGRAM ZPRVY, ZPPRVI ;---------------------------------------------------------------------------------------------- ; ;ZPRVI ZPRACUJE 10BITOVY VYSLEDEK (PRO ZOBRAZENI JE NUTNE OMEZENI NA MAX. 3E4H=996D) A ULOZI HO V BI- ;NARNE-DEC. TVARU NA POZICE, ADRESOVANE R0, (VETSINOU SE POUZIVA PRO HL1,2,3.). ; VYVOLAVA SE S R0 UKAZUJICIM NA HL1, ;NIZSI BYTE VSTUPU JE V A, VYSSI V R5. POZOR, PROVADI LOG. SOUCET S @R0, @R0+1. ;OBNOVUJE PSW. POUZIVA A,R0,R3,R5,R6. ;ZPRVY ZPRACOVAVA POUZE OBSAH A, JINAK JAKO ZPRVI. ZPRVY TAKE OBNOVUJE PSW. ; ZPRVY: MOV R5,#0 ZPRVI: MOV R3,#09CH ;STOVKY CALL PRBD XCH A,R6 ;PRI NULOVEM OBSAHU NEJVYSSI RAD NEBUDE SVITIT ANL A,#0FH ;MASKA NA VYSSI BITY JNZ FRW11 ;SKOK, OBSAH JE NENULOVY MOV A,#0AH ;ZNAK ZHASNUTO ORL A,@R0 ;SOUCET S VYSSIMI BITY MOV @R0,A ;ULOZENI ZNAKU FRW11: XCH A,R6 ;PUVODNI STAV DEC R0 ;ADRESA HL2 MOV R3,#0F6H ;DESITKY CALL PRBD SWAP A ;ADRESA HL3 ORL A,@R0 ;VYTVORENI JEDNOTEK A DESITEK V 1. BYTE SWAP A ; MOV @R0,A MOV A,#1 ;LIKVIDACE PRIP. NULOV. OBSAHU A - PRO SCANR, SCANO RETR PRBD: MOV R6,#0FFH PRBD1: INC R6 ADD A,R3 XCH A,R5 ADDC A,#0FFH XCH A,R5 JNC FRW10 JMP PRBD1 FRW10: XCH A,R3 CPL A INC A ADD A,R3 CPL C XCH A,R5 ADDC A,#1 XCH A,R5 XCH A,R6 ORL A,@R0 MOV @R0,A XCH A,R6 RET DB 0FFH,0FFH ; ; ;PODPROGRAM AD ;------------------------------------------------------------------------------------------------ ; ;PROVEDE PREVOD ANALOG. SIGNALU NA DIG. BIN. FORMU, VYSLEDEK PREVODU JE V A. POUZIVA A,R0,R3, ;VRACI SE S C=0 ; AD: MOV R3,#07FH MOV A,R3 ;PRO VSTUP DO TESTU MOV R0,#PB CLR C CPL C AD2: ANL A,R3 ;PRISL BIT NA L MOVX @R0,A ;ZAPIS DO PREVODNIKU XCH A,R3 ;V A JE ROTACNI BIT JNI AD1 CPL A ;OBNOVENI PUV. HODNOTY XCH A,R3 ORL A,R3 ;NASTAVENI AKT. BITU DO H XCH A,R3 CPL A AD1: RRC A XCH A,R3 JC AD2 RET ; ; ;PODPROGRAM TERE ;-------------------------------------------------------------------------------------------- ; ;TESTUJE TYP RELE, KTERY JE V PRISTROJI ZVOLEN. PO INVERZI BITU 0 JE V A PORADI ZVOLENEHO ;RELE OD 0 DO 4. POUZIVA A,R1. ; TERE: MOV R1,#PARAM ;ADRESA TYPU RELE MOV A,@R1 XRL A,#41H ;TEST NA RELE 24 RET ; ; ; ;PODPROGRAM SCANR ;------------------------------------------------------------------------------------------------ ; ;DO PODPR. SE VSTUPUJE S R1 UKAZUJICIM NA HL1 PRISL. VYSLEDKU MERENI A S ANAPLNENYM HODNOTOU PRO PC. ;PRI VSTUPU MUSI BYT NAVOLEN ROZSAH 25,5 MILIOHM, POKUD NA NEM CHCEME MERIT. ; PODPR. PROVEDE MERENI PARAMETRU,KONTROLU ;NA MEZNI HODNOTY, VOLBU PRISL. ROZSAHU A NAPLNENI HL1,2,3. NAVRAT SE Z-JE STOP, ;NEBO DOSLO K PREPLNENI (ODEZVU A NASTAVENI PROVADI PODPR. SAM).;SNIMANI ODPORU SE PROVADI DVAKRAT. ;VYSLEDEK SNIMANI SE POROVNA MEZI SEBOU SE ZANEDBANIM LSB. NENI-LI SHODA, POKUS SE 20X OPAKUJE, ;PAK JE NASTAVEN C A PROVEDE SE PRISLUSNE NASTAVENI PRO NAPIS PP-PORUCHA PRISTROJE, ;POPR. PRO BLIKANI DISPLEJE A PRISL. DIODY U PARAMETRU, SE KTERYM BYL PODPR. VYVOLAN. ;POUZIVA A A VSECHNY REGISTRY RB0, NAVIC R5 RB1. ; SCANR: MOV R4,A ;ODLOZENI DAT PRO PC MOV R2,#(TABR AND 0FFH) ;UKAZUJE NA PARAMETRY PRO NAPETI CIVKY A KOMPARACI CALL ZAKPA ;VYZVEDNUTI PARAMETRU MOV R0,#PA SCANO: MOV A,R3 MOVX @R0,A ;NASTAVENI NAPETI CIVKY MOV A,R4 ;DATA PRO PC CALL SCAR1 ;SEJMUTI ODPORU NA ROZSAHU 25,5 MILIOHMU JZ SCAN1 ;PRI KLAVESE STOP JC KSCAN ;SKOK, POKUD PRISTROJ NENI SCHOPEN MERIT INC A ;TST NA HODNOTU >25,5; JE-LI, PREPNE SE ROZSAH A MERI SE ;NA 255 MILIOHMECH JNZ KSC1 ;SKOK NA ZPRACOVANI VYSLEDKU MOV A,R4 ;DATA PRO PC ORL A,#04H ;NASTAVENI RELE K5 NA PRITAH - NAST. ROZSAHU 255 MILIOHMU MOV R4,A ;OBNOVENI R4 CALL SCAR1 ;SEJMUTI ODPORU NA 255 MILIOHMECH JZ SCAN1 JC KSCAN ;SKOK PRI STOP A PRI NESCHOPNOSTI MERIT ;TEST NA HODNOTU 255, JE-LI NASTAVI SE PREPLNENI ADD A,#1 JNC KSC1 ;SKOK NENAMERILALI SE HODNOTA 255 MOV @R1,#0C0H ;NAST. CHYBY + BLIKANI DISP. A DIODY KSC1: DEC A CALL ZPRVY ;ZPRACOVANI VYSLEDKU SCAN1: CLR C RET KSCAN: MOV A,#0CDH ;ZNAK "P" + NASTAVENI 6. A 7. BITU MOV @R1,A ;ULOZENI DO HL1 DEC R1 MOV A,#0DAH ;ZNAKY "P"," " MOV @R1,A MOV A,#PVYYS ;VYPOCET PARAMETRU, U KTEREHO DOSLO K CHYBE CPL A INC A ;DVOJKOVY DOPLNEK ADD A,R1 RRC A ;VYPOCET KODU PARAMETRU, ZE KTEREHO BYL PODPR. VYVOLAN INC A MOV R0,#PARAM-1 ;UKAZUJE NA ZOBRAZENI MOV R2,A ;NOVY PARAMETR V R2 MOV A,@R0 ;STARY PAR. V A XCH A,R2 ;A=NOVY PARAMETR, R2=STARY PARAMETR MOV R3,#(TAB1Z AND 0FFH) JMP ZESC ; ; ;PODPROGRAM SCANE ;------------------------------------------------------------------------------------------ ; ;PROVADI TOTEZ CO SCANR, POUZE TESTOVANE RELE JE NEPRITAZENO ; SCANE: MOV R4,A ;ODLOZENI DAT PRO PC MOV R2,#(TABR AND 0FFH) ;PAR. PRO KOMPARACI CALL ZAKPA ;VYZVEDNUTI PARAMETRU MOV R0,#PA MOV R3,#0 ;NAPETI CIVKY NULOVE JMP SCANO ;SKOK NA POKR. PROGRAMU ; ; ;PODPROGRAM SCAR1 ;--------------------------------------------------------------------------------------------- ; ;PROVEDE NASTAVENI PC DLE BYTE V A , SEJMUTI HODNOTY ODPORU -PROVADI SE POSLOUPNOST SNIMANI O DVACETI ;KROCICH, PRICEMZ SE POROVNAVAJI DVA VYSLEDKY PO SOBE SE ZANEDBANIM LSB. MERENI SE ;PROVADEJI V INTERVALU 20 MS. VYSLEDEK JE OBSAZEN V A. PROVADI SEE TESTOVANI STOP (NASTAVI SE Z) ;A POKUD NEJSOU DVA VYSLEDKY SHODNE, NASTAVI SE C ( PORUCHA PRISTROJE). ;R1 MUSI UKAZOVAT NA HL1 MISTA, KAM SE MA UKLADAT VYSLEDEK MERENI. V R4 MUSI BYT TAKE ;BYTE PRO PC ; SCAR1: MOV R0,#PC MOVX @R0,A ;NASTAVENI PORTU PC MOV A,#10 CALL SPAUS ;PAUSA 100 MS JZZ RRET1 ;NAVRAT PRI STOP MOV R6,#0 MOV R5,#20 ;BUDE SE PROVADET 20 MERENI ZNOVA: CALL RX ;SEJMUTI ODPORU JC RRET2 ;VYSSLEDEK MERENI JE NULOVY, JE PRAVDEPODOBNE PRERUSENY VODIC JZ RRET1 ;SKOK PRI STOP XRL A,R6 ;TEST NA SHODU DVOU VYSLEDKU ANL A,#0FEH ;MASKA LSB JZ SCR11 ;SKOK, DVE MERENI SE SHODUJI MOV A,R3 ;OBNOVENI VYSLEDKU MOV R6,A ;ODLOZENI DO R6 DJNZ R5,ZNOVA ;OPAKOVANI MERENI PRI NESHODE SCA12: CPL C ;NASTAVENI C, ODPOR NEJDE ZMERIT RRET2: RET SCR11: MOV A,R1 MOOV R0,A ;V R0 JE ADRESA HL1 MOV A,R4 ;PRESUN R4 DO R5 RB1 SEL RB1 MOV R5,A SEL RB0 MOV A,R3 ;OBNOVENI VYSLEDKU CALL KLKO ;KOMPARACE NA MAX. ODPOR (PRI DRUHEM PRUCHODU JE ;VYSLEDEK MENSI NEZ PRI 1. PRUCHODU A NEOVLIVNI TAK ;VYSLEDEK 1. KOMPARACE MOV R3,A ;ODLOZENII VYSLEDKU SEL RB1 ;OBNOVENI OBSAHU R4 RB0 MOV A,R5 SEL RB0 MOV R4,A MOV A,#20H ;PRO INVERZI DES. TECKY XRL A,@R0 MOV @R0,A ;ZMENA BITU DES. TECKY MOV A,R3 ;OBNOVENI VYSLEDKU RRET1: CLR C RET ; ; ;PODPROGRAM RX ;------------------------------------------------------------------------------------------- ; ;PROVEDE ZAPNUTI PROUD. ZDROJE, ODECET HODNOTY, VYPNUTI PROUD. ZDROJE. VYSLEDEK MERENI JE ULOZEN ;V AKU A V R3. PRI VYVOLANI MUSI BYT R4 NAPLNEN BYTE PRO PC. ;PRI CHYBNEM MERENI SE NASTAVI C. ; RX: MOV R0,#PC MOV A,#0F7H ;PRO ZAPNUTI PROUD. ZDROJE ANL A,R4 ;NULOVANI BITU 3 MOVX @R0,A ;ZAPNUTI PROUD. ZDROJE MOV A,#5 ;PAUZA 50MS CALL SPAUS JZ RX1 ;SKOK PRI STOP CALL AD ;AD PREVOD MOV R3,A ;ODLOZENI VYSLEDKU ANL A,#0FCH ;DVA LSB NEPLATI JZ RX2 ;SKOK, NAMERILA SE HODNOTA BLIZKO NULY, ;JE PRERUSENY VODIC NEBO SPATNY KONTAKKT RELE K4 MOV A,#08H ;VYPNUTI PROUD. ZDROJE ORL A,R4 MOV R0,#PC MOVX @R0,A ;VYPNUTI ZDROJE MOV A,#11 ;PAUZA 10MS CALL SPAUS MOV A,R3 ;OBNOVENI A RX1: RET RX2: CPL C INC A RET ; ; ;PODPROGRAM SDEB ;------------------------------------------------------------------------------------------------- ; ;NASTAVI DEBOUNCE NA FFH. ; SDEB: MOV R0,#PARAM+1 ;UKAZUJE NA U-DEBOUNCE MOV @R0,#0FFH INC R0 MOV @R0,#0FFH RET ; ; ;PODPROGRAM CHYTE ;----------------------------------------------------------------------------------------------- ; ;NASTAVI 7.BIT PAMETOVE BUNKY, NA KTEROU UKAZUJE R1 (CHYBOVE HLASENI) A DO ZONY DITE VLOZI ;TEXT "PP" (PORUCHA PRISTROJE). POUZIVA R1,, A. ; CHYTE: MOV A,#080H ;NASTAVENI CHYBOVEHO BITU ORL A,@R1 MOV @R1,A MOV R1,#DITE ;UKAZUJE DO ZONY TESTU MOV @R1,#0DAH ;ZNAKY "P " INC R1 MOV @R1,#0DH ;ZNAK "P" TSTR2: RET ; ; ;PODPROGRAM TESTR ;---------------------------------------------------------------------------------------------- ; ;POROVNA VYSLEDEK MERENI KONTROLNIHO ODPORU 200 MILIOHMU S MEZNIMI ;PRIPUSTNYMI HODNOTAMI 196 A 204 MILIOHMU. DO PODPROGRAMU SE ;VSTUPUJE S R4 NAPLNENYM ;BYTE PRO PC (PR. ZDROJ VYPNUT) A S R1 UKAZUJICIM NA VYSSI BYTE PRISLUSNE ZONY VYSLEDKU ;(PRO ROZSVICENI CHYBOVE DIODY). PRI NESHODE SE NASTAVI C. ; TESTR: MOV A,R4 ;DATA PRO PC TAKE DO A MOV R2,#204 ;MAX. MEZ ODPORU CALL SCAR1 ;NASTAVENI PC A SEJMUTI ODPORU JC TSTR2 ;SKOK,NEJDE MERIT XCH A,R1 MOV R0,A XCH A,R1 CALL KLKO MOV R2,#196D ;MIN. MEZ CALL ZLKO ;KOMPARACE NA MIN. HODNOTU CALL ZPRVY ;ZPRACOVANI VYSLEDKU INC R0 MOV A,@R0 ANL A,#8FH ;MAZANI DES. TECKY MOV @R0,A RLC A TSTR1: RET ; ; ;************************************************************************************************** ; ; ; ;POKRACOVANI VLASTNIHO PROGRAMU ;--------------------------------------------------------------------------------------------- ; ; VPR1: MOV R2,#8 CALL FILLZ ;NULOVANI HL1,2,3, LKEY+LED 1,2,3,4 DEC A ;V A JE FFH MOV R2,#2 ;NAPLNENI OBOU DEBOU FFH CALL FILL MOV A,#0BH ;ROZSVICENI INDIKACE TESTU CALL LED STRT T ;START CASOVACE-ZACINA ZOBRAZENI MOV R0,#RREG ;ADRESA RIDICIHO REGISTRU 8255 MOV A,#80H ;PA,PB,PC VYSTUP, REZIM 0 MOVX @R0,A MOV R0,#PC SWAP A MOVX @R0,A ;ZABLOKOVANI PROUD. ZDROJE MOV R0,#PARAM ;R0 UKAZUJE NA TYP RELE MOV @R0,#40H ;TYP RELE 23 DEC R0 ;R0 UKAZUJE NA ZOBRAZENI MOV @R0,#80H ;NAVOLENI TESTU DEC R0 ;UKAZUJE NA KOMPARACI MOV @R0,#20H ;KOMPARACE VYROBNI MOV A,#0CH ;ROZSVICENI TYPU REL 23 CALL LED MOV A,#15H ;ROZSVICENI KOMPARACE VYROBNI CALL LED CALL CLRPZ ;NULOVANI ZONY VYSLEDKU MERENI SMYCK: CALL RCHH CALL DETE ;ZOBRAZENI ZVOLENEHO VYSLEDKU MERENI, CHYB. DIOD A ;NASTAV. DES. TECKY MOV A,#25D ;PAUZA 250MS CALL PAUSE JF1 START CALL PREPL ;ZHASNUTI CHYB. DIOD A DISPLEJE PRI PREPLNENI ZOBR. PAR. MOV A,#20D ;PAUZA 200MS CALL PAUSE JF1 START NIKAM: JMP SMYCK ;SKOK, CEKA SE NA PLATNOST KLAVESY START: CLR F1 ;NULOVANI PLATNOSTI KLAVVESY CALL SDEB ;NASTAVENI DEBOU NA FFH MOV R2,A ;KOD TLACITKA JE V R2 XRL A,#KSTART ;TEST NA START MERENI JZ STRM ;SKOK NA START MERENI MOV A,R2 ;TEST NA KLAVESU STOP XRL A,#KSTOP JZ NIKAM CALL ZMPAR ;ZMENA PRISLUSNEHO PARAM. NA PANNELU PRISROJE JMP SMYCK STRM: CALL CLRDCH ;ZHASNE DISPLEJ A CHYBOVE LED CALL DETE ;ZHASNUTI DES. TECKY CALL CLRPZ ;NULOVANI ZONY VYSLEDKU MERENI MOV R0,#PC CLR F0 CPL F0 ;NASTAV. PRIZNAKU MERENI NA H MOV A,#48H ;PC3 NA H MOVX @R0,A ;ROZSVICENI INDIKACE MERENI, ZHASNUTI RELE VYHOVUJE MOV R1,#PARAM-1 ; MOV A,@R1 ;TYP ZOBRAZENI V A XRL A,#80H ;JE TEST? JNZ NETEST ;PRI TESTU SKOK NA START TESTOVANI JMP STEST ; ; ;TABULKOVE UDAJE ;--------------------------------------------------------------------------------------------------- ; TAB1: DB 0CH,09H,19H,1CH ;TYP RELE TAB1Z: DB 0BH,0AH,1AH,1BH ;ZOBRAZENI DB 08H,0DH,1DH,18H DB 15H,10H ;KOMPARACE ; TAB2: DB 14H,04H,01H,00H ;TAB PREVODU NA PRISL. LED DB 05H,03H,02H ; TABUP: DB 060,102,105,010 DB 033,036,030,078 DB 080,080,140,145 ; TABUO: DB 110,020,020,060 DB 006,006,090,015 DB 015,150,026,026 ; TABIR: DB 170,121,121,060 DB 143,143,135,184 DB 184,240,110,110 ; TABR: DB 170,200,250,060 DB 200,250,135,200 DB 250,240,200,250 ; TABPI: DB 109,104,134,080 ; ; ;------------------------- NETEST: MOV R2,#(TABUP AND 0FFH) ;POCATEK TAB. UP CALL ZAKPA ;VYZVEDNUTI VSTUPNIHO A KOMPARACNIHO PARAMETRU MOV R1,#PC ; MOV A,#05AH ;K2,K4 PRITAH, K1,K3,K5 ODPAD, PR. ZDROJ VYPNUT, SVITI MERENI MOVX @R1,A ;NASSTAVENI RELATEK MOV A,#50 ;PAUZA 500MS CALL SPAUS JZ JSTOP ;SKOK PRI KLAVESE STOP MOV A,#52H ;ZAPNUTI ZDROJE PROUDU MOVX @R1,A MOV A,#5 ;PAUZA 50MS CALL SPAUS JZ JSTOP ;SKOK PRI STOP MOV A,R3 ;HODNOTA, OD KTERE SE MA ZVYSOVAT NAPETI MOV R1,#PA DALUP: MOVX @R1,A ;NAVOLENI NAPETI PRO RELE MOV A,#1 CALL SPAUS ;PAUSA 10MS JZ JSTOP ;KLAVESA STOP XCH A,R3 JNT0 UPDAN ;SKOK PRI PRITAHU MER. RELE ADD A,R3 ;INKREMENTACE A MOV R3,A JNC DALUP ;DALSI ZVYSENI NAPETI DEC A ;V A JE 255, JE NASTAVEN C, RELE NEPRITAHLO UPDAN: MOV R0,#PVYS+1 ;UKAZUJE NA HL1 PRO UP CALL KLKO ;KOMPARACE NA R2>=A CALL ZPRVY ;ZPRACOVANI VYSLEDKU INC R0 ;TEST NA PREPLNENI MOV A,@R0 ORL A,#20H ;NAST. DES. TECKY MOV @R0,A RLC A RLC A JNC NESTOP ;PRI PREPLNENI SE NEPOKRACUJE V MERENI JSTOP: JMP JESTOP ;MERENI UO ;-------------------- NESTOP: MOV R1,#PC MOV A,#62H ;K2,3,5 ODPAD, K1,4 PRITAH, PROUD ZDROJ ZAPNUT, SVITI MERENI MOVX @R1,A ;NASTAVENI REELOVE MATICE MOV A,#5 CALL SPAUS ;PAUZA 50MS JZ JSTOP ;SKOK PRI KLAVESE STOP MOV R2,#(TABUO AND 0FFH) ;TABULKA ODPAD. NAPETI CALL ZAKPA ;VYZVEDNUTI PARAMETRU MOV R1,#PA ;NAVOLENI NAPETI OD KTEREHO SE BUDE SNIZOVAT MOV A,R3 DALVO: MOVX @R1,A ;ZAPIS DO PREVODNIKU MOV A,#1 CALL SPAUS ;PAUZA 10MS JZ JSTOP ;KLAVESA STOP XCH A,R3 JNT1 UODAN ;RELE ODPADLO? MOV R3,#0FFH ;PRO ODECITANI ADD A,R3 ;SNIZENI NAPETI MOV R3,A JNC FRW12 ;SKOK NA DALSI SNIZENI JMP DALVO FRW12: CPL C ;C NA H INC A ;V A JE 0 UODA: MOV R0,#PVYS+3 ;UKAZUJE NA HL1 UO CALL ZLKO ;KONTROLA NA A>=R2 CALL ZPRVY ;ZPRACOVANI VYSLEDKU INC R0 MOV A,#20H ORL A,@R0 MOV @R0,A JB6 JESTOP ;PRI VYSLEDKU 0 SE NEPOKRACUJE V MERENI ;MERENI IR ;--------------------------- CALL TERE ;TEST NA RELE 24 MOV R0,#PVYS+5 ;UKAZUJE NA HL1 IR JZ JER24 MOV A,#20H ;NASTAVENI DES. TECKY (BIT 5) ORL A,@R0 MOV @R0,A MOV A,#0FCH ;URCENI RELATEK V MATICI JER24: ADD A,#4EH ;4EH PRO RELE 24, 4AH PRO OSTATNI RELE MOV R0,#PC MOVX @R0,A ;NASTAVENI RELATEK MOV A,#5 ;PAUZA 50 MS CALL SPAUS JZ JESTOP ;SKOK PRI STOP MOV R2,#(TABIR AND 0FFH) ;VSTUPNI A MAX. KOMPARACNI PARAMETR CALL ZAKPA ;VYZVEDNUTI PARAMETRU MOV R0,#PA MOV A,R3 ;NASTAVENI JMENOV. NAPETI RELE MOVX @R0,A MOV A,#10D CALL SPAUS ;PAUZA 100 MS JZ JESTOP ;PRI STOP CALL AD ;ODECET PROUDU MOV R5,A ;ODLOZENI VYSLEDKU INC A JNZ IROK ;SKOK, POKUD HODNOTA NENI 255 CALL TERE ;TEST NA TYP RELE 24 JNZ IROK ;POKUD TYP RELE NENI 24, SKOK CPL C ;PRO NASTAVENI 6. BITU HL1 IR (PREPLNENI) IROK: MOV A,R5 ;OBNOVENI A MOV R0,#PVYS+5 ;UKAZUJE NA HL1 IR CALL KLKO ;KOMPARACE NA MAX. HODNOTU CALL TERE ;TEST NA TYP RELE XRL A,#1 ;V A JE TYP RELE 0 AZ 3 MOV R1,#(TABPI AND 0FFH) ;TABULKA MIN. HODNOT PROUDU ADD A,R1 ;ADRESA PRISL. UDAJE MOVP3 A,@A ;V A JE UDAJ MIN. HODNOTY MOV R2,A ;NAPLNENI R2 PRO VSTUP DO PODPROGRAMU MOV A,R5 ;OBNOVENI A CALL ZLKO ;KONTROLA NA MIN. HODNOTU PROUDU CIVKY RELE ADD A,#6 ;TEST, ZDA JE PROUD MENSI NEZ F9H CALL TERE ;TEST NA TYP RELE JNZ NE24 ;SKOK, POKUD NENI RELE 24 MOV A,#9DH ;TEST, ZDA JE PROUD MENSI NEZ 63H (99D) ADD A,R5 ;PRI < 63H NENI C MOV A,R5 ;OBNOVENI A MOV R5,#0 ;PRO PREVOD JC NZOBR ;SKOK NA NAPLNENI HL1-3 BEZ PREPOCTU (ROZSAH 255 MA) CLR A JMP JEZN ;SKOK NA ZMENU NA NIZSI ROZSAH NE24: JNC IZOBR ;SKOK NA NAPLNENI HL1-3 S PREPOCTEM (ROZSAH 102 MA) MOV A,#4 JEZN: ADD A,#4AH ;NASTAVENI REELOVE MATICE (NA PC 4AH NEBO 4EH) MOV R0,#PC MOVX @R0,A MOV A,#20 CALL SPAUS ;PAUZA 200MS JZ JESTOP ;SKOK PRI STOP CALL AD ;ODECET PROUDU MOV R5,A ;ODLOZENI A MOV R0,#PVYS+5 ;UKAZUJE NA HL1 IR MOV A,#20H ;INVERZE DES. TECKY XRL A,@R0 MOV @R0,A CALL TERE ;TEST NA TYP RELE JZ IZOBR ;JE-LI RELE 24, SKOK NA ZOBRAZENI S PREPOCTEM MOV A,R5 ;OBNOVENI A INC A ;TEST NA PROUD 255 PRO RELE <> 24 JNZ NES255 ;SKOK,VSE JE OK MOV A,#40H ;NASTAVENI 6. BITU HL1 IR ORL A,@R0 MOV @R0,A NES255: MOV A,R5 ;OBNOVENI A MOV R5,#0 JMP NZOBR ;SKOK NA NAPRNENI HL1-3 IR BEZ PREPOCTU IZOBR: MOV A,R5 ;OBNOVENI A CLR C MOV R5,#0 MOV R3,#2 ;PRO NASOBENI CTYRMI KRAT4: RLC A ;NASOBENI VYSLEDKU CTYRMI XCH A,R5 RLC A XCH A,R5 DJNZ R3,KRAT4 NZOBR: CALL ZPRVI ;NAPLNENI HL1-3 MOV R0,#PVYS+5 ;TEST, ZDA NEDOSLO K PREPLNENI DISPLEJE MOV A,@R0 JB6 JESTOP ;SKOK PRI PREPLNENI ;MERENI ODPORU KONTAKTU ;------------------------ ;MERENI R1P ;------------------------ MOV A,#58H ;PRO PC MOV R1,#PVYS+7 ;HL1 R1P CALL SCANR ;VLASTNI MERENI JZ JESTOP JC JESTOP ;SKOK PRI STOP NEBO PRI PORUSE PRISTROJE ;MERENI R2P ;-------------------------- MOV A,#69H ;PRO PC MOV R1,#PVYS+9 ;HL1 R2P CALL SCANR ;MERENI JZ JESTOP ;PRI STOP JC JESTOP ;NEFUNKCNI PRISTROJ ;MERENI R1O ;-------------------------- MOV A,#68H ;PRO PC MOV R1,#PVYS+0BH ;HL1 R1O CALL SCANE ;MERENI JZ JESTOP ;STOP JC JESTOP ;NEFUNKCNI PRISTROJ ;MERENI R2O ;------------------------- MOV A,#59H ;PRO PC MOV R1,#PVYS+0DH ;HL1 R2O CALL SCANE ;MERENI JZ JESTOP ;STOP JC JESTOP ;NEFUNKCNI PRISTROJ MOV R0,#PVYS+1 ;HL1 UP - POC TESTU NA CHYBU MOV R3,#07H ;POCET TEST. KROKU ZAVTE: MOV A,@R0 JB7 JESTOP ;SKOK PRI CHYBE, RELE OK NEBUDE SVITIT INC R0 ;DALSI PARAMETR INC R0 DJNZ R3,ZAVTE ;DALSI PARAMETR MOV A,#88H ;UVEDENI PC DO POC. STAVU, ROZSVICENI INDIKACE RELE VYHOVUJE, ;ZABLOKOVANI PROUD. ZDROJE JMP ZAVER JESTOP:: MOV A,#08H ;RELE OK NEBUDE SVITIT ZAVER: MOV R0,#PC MOVX @R0,A ;VYSTUPNI NASTAVENI MOV R0,#PA CLR A ;NULOVANI VYST. NAPETI PRO CIVKU RELE CLR F1 CLR F0 MOVX @R0,A CALL SDEB ;NASTAVENI DEBOUNCE NA 0FFH JMP SMYCK ;SKOK NA ZPRACOVANI VYSLEDKU ;TESTOVANI ;------------------------------- STEST: CALL SDEB ;DEBOUNCE KL. MOV A,#100D ;PAUZA 1S CALL PAUSE XRL A,#KSTART ;TEST NA KLAVESU START (OPETOVNE STISKNUTI) CLR F1 ;ZRUSENI PLATNOSTI KLAVESY NOP NOP JNZ NNAST ;SKOK NA REZIM NASTAVOVANI JMP NASTAV NNAT: MOV R0,#PC MOV A,#4EH ;KONTROLA PROUDU MOVX @R0,A ;NASTAVENI REELOVE MATICE MOV A,#47D ;NASTAVENI NAPETI NA 4,7V MOV R1,#PA MOVX @R1,A MOV A,#10D CALL SPAUS ;PAUZA 100 MS CALL AD ;ODECET HODNOTY PROUDU MOV R2,#102D ;KONTROLA NA MAX. PROUD (102 MA) MOV R0,#PVYS+5 ;HL1 IR CALL KLKO MOV R2,#98D ;KONTROLA NA MIN HODNOTU (98 MA) CALL ZLKO CALL ZPRVY ;PREPOCET A ZOBRAZENI INC R0 MOV A,@R0 ;TEST NA SPRAVNOST NAMERENE HODNOTY RLC A JNC TEOD ;SKOK, JE-LI VSE OK MOV R1,#PVYS+5 CALL CHYTE ;NAPIS PP A ROZSVICENI CHYBOVE DIODY TEOD: MOV R4,#4DH ;KONTROLA R1P MOV R1,#PVYS+7 ;UKAZUJE NA HL1 R1P CALL TESTR ;TEST NA SPRAVNOST ODPORU JNC NCHT ;SKOK, POKUD NENI CHYBA CALL CHYTE ;VYSKYTLA SE CHYBA NCHT: MOV R4,#7CH ;KONTROLA R2O MOV R1,#VYSL ;UKAZUJE NA HL1 R2O CALL TESTR ;TEST NA SPRAVNOST ODPORU JNC NCHT1 ;SKOK POKUD NENI CHYBA CALL CHYTE ;VYSKYTLA SE CHYBA NCHT1: CALL SDEB ;DEBOUNCE KLAV. SMTE1: MOV R2,#08H ;PRO BLIKANI LED MERENI CLR F1 ;ZRUSENI PLATNOSTI KLAVESY; CEKACI SMYCKA NA STLACENI KLAV. START ;PRO OTOCENI TESTOVACIHO PRIPRAVKU; BLIKA LED "MERENI" CLR F0 ;NEBEZI PROGRAM SMTE: MOV A,#40H XRL A,R2 ;ZMENA STAVU DIODY ORL A,#08H ;ZABLOK. PROUD. ZDROJE MOV R2,A MOV R1,#PC ; MOVX @R1,A ;ZMENA 6. BITU PC MOV A,#25D ;PAUZA 0,25 S CALL PAUSE JF1 CONTS ;SKOK PRI STLACENI KLAVESY JMP SMTE ;SKOK V CEKACI SMYCCE CONTS: XRL A,#KSTART ;TEST NA KLAVESU START JZ SMTE2 ;SKOK, BYLA STLACENA JINA KLAVESA JMP SMTE1 SMTE2: MOV A,#50D ;PAUZA 0.5 S CALL SPAUS MOV R4,#04CH ;KONTROLA R2P ;----------------------- CPL F0 ;PROGRAM BEZI MOV R1,#PVYS+9 ;UKAZUJE NA HL1 R2P CALL TESTR ;TEST NA SPRAVNOST ODPORU JNC NCHT2 ;SKOK, JE-LI VSE OK CALL CHYTE ;VYSKYTLA SE CHYBA NCHT2: MOV R4,#07DH ;KONTROLA RO ;----------------------- MOV R1,#VYSL-2 ;UKAZUJE NA HL1 R1O CALL TESTR ;TEST NA SPRAVNOST ODPORU JNC NCHT3 ;SKOK, NENI-LI CHYBA CALL CHYTE ;VYSKYTLA SE CHYBA NCHT3: JMP JESTOP ;SKOK NA ZAVERECNE NASTAVENI ; ; ;NASTAVOVACI PROGRAM ;------------------------------------------------------------------------------------------------------- ; ; NASTAV: CLR A ; MOV R0,#PC MOVX @R0,A ;NASTAVENI RELATEK DEC A ;V A JE FFH MOV R0,#PA MOVX @R0,A ;NASTAVENI ZDR. PRO RELE SMNA: CALL AD ;AD PREVOD MOV R0,#PVYS-2 ;HL2 TESTU MOV @R0,#0 ;NULOVANI ZONY DETE INC R0 MOV @R0,#0 CALL ZPRVY ;PREVOD NA DEC. TVAR CALL RCHH ;ZOBRAZENI MOV A,#20D CALL PAUSE JF1 NASTC ;SKOK NA 2.KROK PRI STLACENI KLAVESY JMP SMNA NASTC: MOV A,#04H ;2. KROK MOV R0,#PC MOVX @R0,A ;NASTAVENI PC CALL SDEB ;NAST. DEBOUNCE CLR F1 ;ZRUSENI PLATNOSTI KLAVESY MOV A,#100D ;VYSTUPNI NAPETI 10V MOV R0,#PA MOVX @R0,A ;NAVOLENI NAPETI 10V CALL CLRPZ ;NULOVANI ZONY VYSLEDKU MERENI CALL CLRDCH ;ZHASNUTI DISPLEJE NAST1: JF1 NCHT3 ;SKOK PRI STLACENI KLAVESY Z NASTAVOVACIHO REZIMU JMP NAST1 ; ; ;******************************************************************************************************* ; ; END