J陑yk polski Historia WOS Sztuka (plastyka i muzyka) J陑yki obce Religia i etyka
Matematyka Fizyka i astronomia Chemia Biologia Przyroda Geografia Technika Informatyka
Przedmioty zawodowe WF ie縦i edukacyjne Wychowanie przedszkolne Nauczanie zintegrowane Wi阠ej
Start arrow Szczeg贸艂owy test systemu
Szerokie procedury testowe Drukuj Email
Wpisa艂: Robert Stasiak   
29.11.2007.
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$'

Zmieniony ( 02.12.2007. )
 
« poprzedni artyku艂   nast臋pny artyku艂 »