Hi Aidi, Just a couple of things, you should set CREN before clearing SREN, I also found that toggling CREN after receive to clear any rx errors. See code below. You also must wait for the byte to actually be received. > Hi, > >I'm using the code below to receive a byte from the US ART. When I get the >byte I display it on the LED's and echo it back. >This code is not working for me. Can anybody tell me what I'm doing wrong. > Thanks > > > list p=16c74 > Title "first aidi Program" > > include <P16C74.INC> > > org 00h > >Start > clrf PORTB ;Clear PORT_B output latches > > bsf STATUS,RP0 ;Go to Bank1 > > clrf TRISB ;Config PORT_B as all outputs > > > movlw 19h ;Set Band rate (9600 baud @4MHz) > movwf SPBRG > movlw b'00100100' ;8-bit transmit, transmitter enable > movwf TXSTA ;Asynchronous mode, High baud rate > > bcf STATUS,RP0 ;Go to Bank0 > > movlw b'10010000' ;8-bit receive, receiver enabled > movwf RCSTA ;serial port enabled > ; ADDED THE FOLLOWING LINES *****; ; RxTest ; ; BSF RCSTA,4 ;set CREN BCF RCSTA,5 ;clear SREN ; RxWait ; BTFSS PIR1,5 ;RxBuffer Full when PIR,5=1 GOTO RxWait ; ; BCF RCSTA,4 ;toggle CREN to clear any Rx BSF RCSTA,4 ;errors. You could choose to ;handle Rx errors differently ;for a "real" application. ; *******************************; > movf RCREG,W ;Get input data > movwf PORTB ;Display on LEDs > movwf TXREG ;Echo character back > goto RxTest ; ***Changed here also. > > end >Aidi Moubhij > >aidi@mjr.com Hope that helps. Ray Gardiner ray@hdc.com.au