
;=======================================================;
; UART interrupt routine				;
;=======================================================;
PUBLIC	INT_UART
INT_UART:
#ifdef _AT89S2051_
; workaround of errata 2 (RMW SCON)
	PUSH	ACC
	MOV	A,#01010000b			; current UART mode
	XCH	A,SCON
	JB	ACC.0,INT_UART_RX		; RI
	JNB	ACC.1,INT_UART_END		; ! TI
; end of transmit a byte
INT_UART_TX:
;
; check transmit counter,
; initiate new transmit or finish current packet here
;
	JMP	INT_UART_END
; new byte has been received
INT_UART_RX:
; save it to a buffer (keep ACC not touched!)
	JB	ACC.1,INT_UART_TX		; TI was done as well
INT_UART_END:
	POP	ACC
	RETI
#else
; standart routine for AT89C2051

#endif
