| Testy |
|
ZBIOR TESTOW DLA ZESTAWU M535
LCALL INIT_LCD LCALL CURSOR_OFF MOV DPTR,#LOGO_535 LCALL PUT_STR LCALL WAIT_FOR_KEY MOV DPTR,#LOGO_KEY_T LCALL PUT_STR LCALL WAIT_FOR_NONE LCALL WAIT_FOR_KEY PUSH PSW PUSH ACC PUSH B LCALL INIT_DISP LCALL CURSOR_OFF CLR A LCALL GOTO_X_Y MOV DPTR,#KEY_CODE LCALL PUT_STR POP B POP ACC POP PSW LCALL KEY_TEST_L1  ;PROGRAM TESTOWANIA KLAWIATURY LCALL INIT_DISP LCALL CURSOR_OFF    ;TEST PRZETWORNIKOW A/D I D/A: MIERZY NAPIECIE NA WEJSCIU;  KANALU 1 A/C, PODAJE   WARTOSC HEX REJESTRU PRZETWORNIKA ADDAT;  PODAJE NA LED NAPIECIE PROPORCJONALNE DO ZMIERZONEJ WARTOSCI        LCALL WAIT_FOR_NONE ;CZEKAJ NA ZWOLNIENIE KLAWIATURY MOV DPTR,#AD_TEST_STR LCALL PUT_STR LCALL WAIT_FOR_KEY LCALL WAIT_FOR_NONE ;CZEKAJ NA ZWOLNIENIE KLAWIATURY LCALL INIT_DISP LCALL CURSOR_OFF MOV DPTR,#LOGO_AD_T LCALL PUT_STRAD_TEST: MOV A,#48H LCALL GOTO_X_Y CLR ADM            ;PRZYGOTOWANIE PRZETWORNIKA A/C ORL ADCON,#CHANN_7 MOV DAPR,#0        ;Uref=5V, START PRZETWARZANIA NOP JB BSY,$           ;CZEKAJ NA WYNIK PRZETWARZANIA MOV A,ADDAT PUSH ACC LCALL DISP_2_DIGITS MOV DPTR,#DA_ADDR POP ACC MOVX @DPTR,A       ;WYSLIJ DO PRZETWORNIKA C/A LCALL CHECK_IF_ESC ;CZY SKONCZYC PROGRAM? JNC AD_TEST ANL TMOD,#00001111B ORL TMOD,#00100000B ANL PCON,#7FH SMOD=0 MOV TH1,#BAUD MOV TL1,#BAUD SETB TR1 MOV SCON,#01010000B SETB TI CLR RI CLR A LCALL GOTO_X_Y MOV  DPTR, #DIPSW_TEST LCALL PUT_STR LCALL WAIT_FOR_NONE MOV  A,#01000000B LCALL GOTO_X_Y MOV DPTR,#DIP_INFO LCALL PUT_STR START:       INC P5 MOV DPTR,#SWTCH MOVX A,@DPTR MOV R3,A MOV A,P5 MOVX @DPTR,A MOV A,R3 JNB TI,$ CLR TI MOV SBUF,A MOV A,#01001000B LCALL GOTO_X_Y MOV A,R3 LCALL DISP_2_DIGITS LCALL CHECK_IF_ESC JC SKIP_DSW_T CJNE A,#0FFH,$+3 MOV REDLED,C JNC NO_KEY_PR LCALL DELAY NO_KEY_PR:        MOV C,P3.0 MOV DIS555 SJMP START SKIP_DSW_T: LCALL INIT_DISP MOV A,#00H LCALL GOTO_X_Y MOV DPTR,#TERM_TEST LCALL PUT_STR LCALL WAIT_FOR_NONE LCALL WAIT_FOR_KEY             LCALL INIT_DISP             LCALL CURSOR_ON TTY_LOOP:  JNB RI,CHK_BRK_KEY             CLR RI             MOV A,SBUF            PUSH ACC             LCALL CONOUT_F             POP ACC            CJNE A,#1AH,SIMPLE_ECHO SJMP E_O_TEST SIMPLE_ECHO: JNB TI,$ CLR TI              MOV SBUF,A             MOV A,#10H             LCALL DELAY CHK_BRK_KEY:             LCALL CHECK_IF_ESC             JC E_O_TEST             SJMP TTY_LOOP E_O_TEST: LCALL INIT_DISP        LCALL CURSOR_OFF IF IN_SYSTEM<>0 LCALL MONITOR      ;POWROT DO MONITORA ELSE             LJMP PROCS               ;TO SAMO ENDIF DELAY:             ANL A,#00011111B MOV R7,A DLY2: MOV R6,#0H        SETB BUZZER DJNZ R6,$ CLR BUZZER        DJNZ R7,DLY2        RET  ;+++++++PROCEDURY UZYTKOWE TESTU ;-------TEST KLAWIATURY  KEY_TEST_L: LCALL WAIT_FOR_NONE ;CZEKAJ NA ZWOLNIENIE KLAWIATURY        LCALL WAIT_FOR_KEY ;KONCZYC PROCEDURE CZY KONTYNUOWAC?        JC KEY_TEST_EX KEY_TEST_L1:        PUSH ACC           ;KOD WCISNIETEGO KLAWISZA        MOV A,#4BH        LCALL GOTO_X_Y     ;USTAW KURSOR (11,1)        POP ACC PUSH ACC LCALL DISP_2_DIGITS ;WYSWIETL KOD SCANNINGOWY        MOV A,#40H         ;(0,1)        LCALL GOTO_X_Y        POP ACC        PUSH ACC        MOV DPTR,#KEY_NAMES ;WYSWIETL NAZWE KLAWISZA..        RL A               ;..JAKO ODPOWIEDNIE 2 ZNAKI ASCII MOVC A,@A+DPTR     ;..Z TABLICY KEY_NAMES INDEKSOWANEJ KODEM       LCALL CONOUT_F        POP ACC        RL A        INC A        MOVC A,@A+DPTR        LCALL CONOUT_F        SJMP KEY_TEST_L KEY_TEST_EX:        RET ;---   CZEKAJ NA ZWOLNIENIE KLAWISZA  MOV R4,#0              ;256* TO SAMO W_F_N_L0: MOV DPTR,#IN_R0 MOVX A,@DPTR        MOV B,A                ;PIERWSZY WIERSZ        MOV DPL,#LOW(IN_R1)        MOVX A,@DPTR           ;DRUGI WIERSZ        ANL A,B        CJNE A,#0FFH,WAIT_FOR_NONE        DJNZ R4,W_F_N_L0       ;STABILNY PRZEZ 5ms RET ;-------CZEKAJ NA KLAWISZ (ACC), C=0 : 1 KLAWISZ, C=1 : F2F6 ;      A,B,R4 + IN_KEY WAIT_FOR_KEY:        MOV R4,#0 W_F_K_L:        LCALL IN_KEY        JNC ONE_PRESSED IF JM_MODE<>0             ANL A,B             XRL A,#0FH   ;ABY UZYSKAC 1 ELSE        ORL A,B ENDIF        CJNE A,#ESCAPE_CODE,WAIT_FOR_KEY        SETB C                 ;KOD SCANNINGOWY 0 i 1        SJMP W_F_K_EX ONE_PRESSED:        CLR C DJNZ R4,W_F_K_L W_F_K_EX:        RET ;-------USTAW C JESLI KOMBINACJA "ESCAPE" CHECK_IF_ESC: LCALL IN_KEY        JNC NOT_ESC1   ;POPRAWNY 1 KLAWISZ             CJNE A,#0FFH,TWO_KEYS SJMP NOT_ESC1 TWO_KEYS: IF JM_MODE<>0 ANL A,B XRL A,#0FH   ;ABY UZYSKAC 1 DLA ESC   ELSE        ORL A,B   ENDIF             CPL C             XRL A,#1             JNZ NOT_ESC1 NOT_ESC2:             CPL C NOT_ESC1:        RET ;-------WYSLIJ NA LCD 2 CYFRY HEX JAKO ZNAKI ASCII DISP_2_DIGITS:        XCH A,R7               ; PUSH R7        PUSH ACC MOV A,R7        SWAP A                 ;STARSZA CYFRA        LCALL DISP_1_DIGIT        POP ACC                ; POP R7        XCH A,R7 DISP_1_DIGIT: ANL A,#0FH             ;MLODSZA CYFRA ADD A,#90H             ;KONWERSJA NIBLA NA HEX-ASCII DA A        ADDC A,#40H        DA A        LCALL CONOUT_F         ;WYPROWADZ ZNAK ASCII NA LCD        RET ;-------ZROB KONWERSJE BIN-HEX(ASCII) CONV_1_DIGIT:        ANL A,#0FH             ;MLODSZA CYFRA ADD A,#90H             ;KONWERSJA NIBLA NA HEX-ASCII        DA A        ADDC A,#40H        DA A        RET ;-------ROZNE KOMUNIKATY LOGO_535: ;         '0123456789ABCDEF'        DB 'uKOMPUTER 80535 ' DB 'wcisnij klawisz$' LOGO_KEY_T:        DB 0DH,0AH        DB 'TEST KLAWIATURY:' IF JM_MODE<>0        DB '14 i 15: koniec$'   ELSE        DB 'F2 i F6: koniec$'   ENDIF KEY_CODE:        DB 'KLAWISZ   KOD $' KEY_NAMES: IF JM_MODE<>0        DB '0 1 2 3 4 5 6 7 8 9 101112131415$' ELSE        DB 'F6F2F10 F53 2 1 F46 5 4 F39 8 7 $'   ENDIF ;------- AD_TEST_STR: ;         '0123456789ABCDEF' DB 0DH,0AH        DB 'Test A/C i C/A ' IF JM_MODE<>0        DB '14 i 15: koniec$'   ELSE        DB 'F2 i F6: koniec$'   ENDIF LOGO_AD_T:        DB 0DH,0AH        DB 'Test A/C i C/A ' DB 'ADDAT =       $' DIPSW_TEST: DB 0DH,0AH DB 'Test DIPSW/RS232' IF JM_MODE<>0 DB '14 i 15: koniec$' ELSE        DB 'F2 i F6: koniec$'   ENDIF DIP_INFO:    DB 'DIPSW =       $' TERM_TEST:;         '0123456789ABCDEF'        DB 0DH,0AH DB 'MINI "TERMINAL" '        DB '14 i 15: koniec$'
|
;



