;------------------------------------------------------ ; V51.ASM TEST IO51 KEY4 CONTROL VCM VIA SERIAL PORT ; SERIAL PORT:9600,N,8,1 ASM : 2500 A.D. ;------------------------------------------------------ CLIS EQU 'l' ;LISTEN CODE CREC EQU 'r' ;RECOG CODE CTR EQU 't' ;TRAIN CODE CMOD EQU 'm' ;MODIFY CODE ; KEYS..... K1 REG P2.4 ; K1: TRAIN K2 REG P2.5 ; K2: MODIFY K3 REG P2.6 ; K3: LISTEN K4 REG P2.7 ; K4: RECOG WLED REG P3.7 ANS EQU 30H ; RECOG ANSWER ;--------------------------------- ORG 0H JMP BEGIN ;----------------------------- BEGIN: CALL INIT_RS232 CALL LED_BL CALL TEST_LED LOOP: JB K1,L1 JNB K1,$ ; K1 KEYED ................. MOV A,#CTR CALL TX_CHAR CALL LED_BL JMP LOOP ;.................... L1: JB K2,L2 JNB K2,$ ; K2 KEYED.................. MOV A,#CMOD CALL TX_CHAR CALL LED_BL JMP LOOP ;..................... L2: JB K3,L3 ; JNB K3,$ ; K3 KEYED .......... MOV A,#CLIS ; SEND LISTEN COMMAND CALL TX_CHAR CALL LED_BL JMP LOOP ;..................... L3: JB K4,L4 ; K4 KEYED............. CALL RECOG CALL LED_BL JMP LOOP ;........................................ L4: JMP LOOP ;------------------------------- ; DELAY R5*10 ms DELAY: MOV R6,#50 D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,DELAY RET ;-------------------------------- LED_BL: MOV R4,#4 LE1: CPL WLED MOV R5,#5 CALL DELAY DJNZ R4,LE1 RET ;----------------------------------- INIT_RS232: ;<9600 N 8 1> MOV SCON,#50H MOV TMOD,#20H MOV TH1,#0FDH SETB TR1 SETB TI RET ;------------------------------------ TX_CHAR: JNB TI,$ CLR TI MOV SBUF, A RET ;------------------------------------- RECOG: MOV A,#CREC ; SEND RECOG. COMMAND CALL TX_CHAR ; VCM ENTER RECOG MODE....... MOV R5,#100 ; 1.0 SEC WAITING CALL DELAY ; WAIT FOR ANSWER............. CALL RXA ; RX ANSWER CALL OP ; TRIGGER LED ON OFF RET ;------------------------------------ ; O/P SIGNAL ....... OP: MOV A,ANS CJNE A,#'0', $1 CPL P1.0 RET $1: CJNE A,#'1', $2 CPL P1.1 RET $2: CJNE A,#'2', $3 CPL P1.2 RET $3: CJNE A,#'3', $4 CPL P1.3 RET $4: CJNE A,#'4', $5 CPL P1.4 RET $5: RET ;---------------------------- TEST_LED: MOV P1,#0 MOV R5,#50 CALL DELAY MOV P1,#0FFH RET ;-------------------- ; RX ANSWER '@0x' x=ANSWER INDEX NO 0--4 ; WAIR RX '@' OR 'X' TO.....EXIT RXA: MOV ANS,#255 ; RESET ANSWER ; WAIR FOR '@' OR 'X' TO EXIT................. JNB RI,$ CLR RI MOV A,SBUF CJNE A,#'@',$1 ; NOT '@' SKIP ; RX '0'........ JNB RI,$ ; WAIT RX CLR RI MOV A,SBUF ; RX 'x'........ JNB RI,$ ; WAIT RX CLR RI MOV A,SBUF MOV ANS,A $1: RET ;----------------------------------------------