| 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$'
|
;



