Hi Guys I am using serial ADC ADS1240 I have connected DRDY to Port P1.2,Sclk to P1.3,Dout to P1.4,Din to P1.5 of 89s52. I have initialsed all Registers but the output i am getting as FFh. can any one help what would be the problem. The following is the code AD_VALUE_00 EQU 30H ; R:30H AD_VALUE_01 EQU 31H ; R:31H AD_VALUE_02 EQU 32H ; R:32H ; ADS1240 serial communication definitions DRDY BIT P1.2 AD_SK BIT P1.3 ; ADS1240 CLOCK PORT AD_DO BIT P1.4 ; ADS1240 OUTPUT PORT AD_DI BIT P1.5 ; ADS1240 INPUT PORT ; ADS1240 Register Definitions SETUP EQU 00h MUX EQU 01h ACR EQU 02h ODAC EQU 03H DIO EQU 04H DIR EQU 05H IOCON EQU 06H OCR0 EQU 07H OCR1 EQU 08H OCR2 EQU 09H FSR0 EQU 0AH FSR1 EQU 0BH FSR2 EQU 0CH DOR0 EQU 0FH DOR1 EQU 0EH DOR2 EQU 0DH ; ADS1240 Commands RDATA EQU 01h RDATAC EQU 03H WREG EQU 50h RREG EQU 10h SELFOCAL EQU 0F1h SELFGCAL EQU 0F2h SYSOCAL EQU 0F3H SYSGCAL EQU 0F4H RST EQU 0FEh MOV P1,#14H ; INPUT PORT ACALL SETUP_ADC MOV A,#RDATAC ACALL AD_WRITE MAIN_LOOP: ACALL ADC_SCAN MOV A,AD_VALUE_00 MOV 60H,A LCALL 019BH MOV A,AD_VALUE_01 MOV 60H,A LCALL 019BH MOV A,AD_VALUE_02 MOV 60H,A LCALL 019BH SJMP MAIN_LOOP ;****************************************************** ;SetupADC ; Routine to setup the ADS1240 ADC ;****************************************************** SETUP_ADC: MOV A,#RST ;Issue reset command ACALL AD_WRITE MOV A,#MUX ;Selecting channels ACALL AD_WRITE MOV A,#00H ;Selecting channel one ACALL AD_WRITE MOV A,#80H ;Selecting Ang Common ACALL AD_WRITE MOV A,#ACR ;Setup up Data rate with ACR register ACALL AD_WRITE MOV A,#SETUP ACALL AD_WRITE MOV A,#00H ACALL AD_WRITE MOV A,#SELFGCAL ;Issue self Gain SYSGCAL command. ACALL AD_WRITE LO: JB DRDY,LO MOV A,#WREG ;MOVE WRITE REGISTER ACALL AD_WRITE MOV A,#SETUP ;ISSUE SETUP REGISTER ACALL AD_WRITE MOV A,#07H ;setting PGA to 128 ACALL AD_WRITE MOV A,#SELFOCAL ;Issue Offset CAL ACALL AD_WRITE LO1: JB DRDY,LO1 RET ;****************************************************** ; Routine to READ FROM ADS1240 ADC ;****************************************************** ADC_SCAN: ;MOV A,#RDATA MOV A,#DOR2 ACALL AD_WRITE ACALL AD_READ MOV AD_VALUE_02, A MOV A,#DOR1 ACALL AD_WRITE ACALL AD_READ MOV AD_VALUE_01, A MOV A,#DOR0 ACALL AD_WRITE ACALL AD_READ MOV AD_VALUE_00, A RET ;****************************************************** ; Routine to WRITE TO ADS1240 ADC ;****************************************************** AD_WRITE: MOV B,#08 WRITE_NEXT_BIT: CLR AD_SK RLC A MOV AD_DI,C SETB AD_SK NOP DJNZ B,WRITE_NEXT_BIT RET ;****************************************************** ; Routine to READ FROM ADS1240 ADC ;****************************************************** AD_READ: MOV B,#08 READ_NEXT_BIT: CLR AD_SK NOP MOV C,AD_DO RLC A SETB AD_SK NOP NOP DJNZ B,READ_NEXT_BIT RET end