;--------------------------------------------------- ; VCM.ASM RSC364 VC DEMO ; INCLUDE : CO.ASM ... RS232 COMMAND <9600 N 8 1> ; VC3.OBJ ... RSC364 VC COMMAND code ; ; 8051 ASM USE: 2500 A.D. 4.02A ; USE VCM.BAT TO ASSEMBLER ; USAGE : VCM VCM ; ; V1.0 COPYRIGHT VICTOR uP LAB. 2002 ; URL : vic.seeder.net ;---------------------------------------------------- ; K1 : TRAIN 1 ; K2 : MODIFY 1 ; K3 : LISTEN 1 ; K4 : RECOG. ; RESET+K1 --> INIT SYSTEM AND BE ; RESET+K3 --> TEST DTMF TEL DIAL ;-------------------------------------------- LF EQU 0AH CR EQU 0DH OKF REG 20H.0 ; COMMAND OK FLAG ; KEY4..... K1 REG P3.2 K2 REG P3.3 K3 REG P3.4 K4 REG P3.5 ; LCD ..... RS REG P0.0 EN REG P3.6 WLED REG P3.7 ;************************************ MNO EQU 5 ; NO:0 1 2....MNO-1 ;************************************ BU EQU 30H ; 30H--37H DATA PACKET BUF SUM EQU 38H ; CHECK SUM ANS EQU 39H ; RECOG. ANSWER TA EQU 3AH ; TEMP. A CO EQU 3BH ; COUNTER X EQU 3CH ; LCD X POS CP EQU 3DH ; VC CP LNO EQU 3EH ; LISTEN INDEX NO TRNO EQU 3FH ; HAVE TRAINED NO ; USER RAM .....5FH 60H-->SP ;--------------------------------------- RNO EQU 5 ; MAX RECOG. WORDS MHS REG P1.0 SHS REG P1.1 DAT REG P1.2 RESETP REG P1.3 ;----------------------------------------------------- ORG 0H JMP BEGIN ;--------------------------- BEGIN: CALL INIT_PORT MOV LNO,#0 CALL RESET_CHIP CALL LED_BL CALL INIT_RS232 ; MOV DPTR,#MESS ; CALL TX_STR ; MOV DPTR,#MESS1 ; CALL TX_STR ;..................................................... JB K1,$1 ; RESET+K1 --> INIT ALL................. CALL INIT_ALL JMP $2 ;.................... $1: JB K3,$2 ; RESET+K3 --> TEST DIAL LOOP CALL LED_BL CALL LED_BL CALL LED_BL CALL BEEP $11: JB K3,$ ; TEST DIAL "117" CALL DIAL CALL LED_BL JMP $11 ; RUN CODE............... $2: LJMP MLOOP ;----------------------------------------------------------------- INCLUDE CO.ASM ;----------------------------------------------------------------- RESET_CHIP: CLR RESETP ; SVC RESET LOW MOV R5,#30 CALL DELAY SETB RESETP RET ;---------------------------- INIT_PORT: SETB RESETP CLR EN ; LCD OFF SETB MHS SETB SHS SETB DAT RET TITLE: DB "VCM VC MODULE V1.0 " ;------------------------------------------------------------- INIT_ALL: CALL STORE CALL DEL_DB CALL BEEP CALL LED_BL CALL BEEP CALL LED_BL CALL BEEP RET ;-------------------------------- MLOOP: LOOP: JNB RI,$0 CLR RI MOV A,SBUF CALL FILTER ; RUN COMMAND FORM SERIAL PORT JMP LOOP ; POOLING OTHERS............ $0: ; TEST KEY ..................... JB K1,$1 ;********************************* ; K1 KEYED ................. CALL TRAIN1 JMP LOOP ;.................... $1: JB K2,$2 ;********************************* ; K2 KEYED.................. CALL MODIFY CALL LED_BL JMP LOOP ;..................... $2: JB K3,$3 ; JNB K3,$ ;************************************ ; K3 KEYED .......... CALL LIST CALL LED_BL ;..................... $3: JB K4,$4 ;************************************* ; K4 KEYED............. CALL LED_ON CALL RECOG ; CHECK OKF=1 THEN SAY......... JNB OKF,$31 MOV ANS,CP CALL SAY_NAME JMP $32 ; RECOG. ERROR ................... $31: CALL LED_BL CALL LED_BL $32: CALL LED_OFF JMP LOOP ;......................................... $4: JMP LOOP ;-------------------------------------------- TRAIN1: CALL LED_ON CALL TRAIN CALL LED_OFF CALL SAY_NAME ; SAY CP NAME CALL LED_BL RET ;-------------------------------- DIAL: MOV A,#1 CALL DIAL_DIG CALL LED_BL MOV A,#1 CALL DIAL_DIG CALL LED_BL MOV A,#7 CALL DIAL_DIG CALL LED_BL RET ;---------------------------------------------------------------- ; DELAY R5*10 ms DELAY: MOV R6,#50 $1: MOV R7,#100 $2: DJNZ R7,$2 DJNZ R6,$1 DJNZ R5,DELAY RET ;-------------------------------- LED_ON: CLR WLED RET ;--------------------- LED_OFF:SETB WLED RET ;--------------------- LED_BL: MOV R4,#4 $0: CPL WLED MOV R5,#5 CALL DELAY DJNZ R4, $0 RET ;---------------------------------------------------------- ; SERIAL PORT O/P MESSAGE RSOP: CALL TX_STR RET ;----------------------------------------------------------------------- ; LISTEN 1 DB 0--MNO-1 VALID LIST: ; IF LNO=MNO LNO=0 INC LNO MOV A,LNO CJNE A,#MNO,$1 MOV LNO,#0 $1: MOV A,LNO CALL SET_CP CALL SAY_NAME ; SAY CP NAME RET ;-------------------------------------------- MODIFY: ; MODIFY: DEL 1 AND ADD 1 MOV A,LNO CALL SET_CP ; SET NEW CP TO DEL. CALL DEL1 CALL BEEP MOV R5,#100 CALL DELAY CALL LED_ON CALL TRAIN1 ; MODIFY NOW CP'S DB CALL LED_OFF RET ;---------------------------------