CSEG AT 000BH
JNB T_R,SOFT_RECEIVE
LJMP SOFT_SEND
/*********************************************/
CSEG AT 0040H
/*********************************************/
SOFT_RECEIVE:
JBC UART_Wait,SOFT_INITIAL
PUSH ACC
PUSH PSW
CLR A
MOV C,RXD2
RLC A
MOV C,RXD2 ;12
RLC A
MOV C,RXD2
RLC A
ADD A,#SOFT_TABLE-$-3
MOVC A,@A+PC
JBC UART_First,SOFT_START
MOV C,P
MOV A,rece_shift
RRC A
MOV rece_shift,A
DJNZ R8,SOFT_DIRECT_RETI
MOV r_data,A
; MOV SBUF2r,A
; SETB RI2
CLR TR0
MOV TMOD,#26H
MOV TL0,#0FFH
SETB TR0
SETB UART_Wait
PUSH P1
CLR SEL1
CLR SEL2
LCALL UARTreceiver
POP P1
SOFT_DIRECT_RETI:
POP PSW
POP ACC
RETI
SOFT_TABLE:
DB 00H ;00000000B
DB 00H ;00000001B
DB 00H ;00000010B
DB 01H ;00000011B
DB 00H ;00000100B
DB 01H ;00000101B
DB 01H ;00000110B
DB 01H ;00000111B
SOFT_START:
JB P,START_ERROR
MOV R8,#8
POP PSW
POP ACC
RETI
START_ERROR:
CLR TR0
MOV TMOD,#26H
MOV TL0,#0FFH
SETB TR0
SETB UART_Wait
POP PSW
POP ACC
RETI
SOFT_INITIAL:
CLR TR0
MOV TMOD,#22H
MOV TL0,#256 - 96 +29 ;10+12
SETB TR0
SETB UART_First
RETI ;13
/*********************************************/
SOFT_SEND:
RETI
|