hello sir/madam , i am doing project on serial communication between pc and 89c52.all the connections are correct. but the problem is with the receiving of the data in the hyperterminal. when i press some letters in hypeterminal some other letter will be displayed; i am not getting what is the and where is the fault.. could you suggest me some solutions.. thanking you
Give some details of connection & your code.
code: ORG 0030h MOV SP,#07H CLR P0.0; CLR P0.1; CLR P0.2; CLR P0.4; CLR P0.6; CLR P0.7; ACALL DELAY;
SETB P0.4 ;PULSE FOR ALE ACALL DELAY;
CLR P0.4 ; MAIN:MOV TMOD,#20H;; MOV TH1,#0FDH; MOV SCON,#50H; SETB TR1; HERE:JNB RI,HERE; MOV A,SBUF; MOV R7,A MOV R2,#30H MOV R1,#0AH MOV R0,#39H BACK:CJNE A,00H,LOOP CLR C SUBB A,R2 MOV R3,A SJMP END1 LOOP:DEC R0 DJNZ R1,BACK MOV R0,#39H MOV R4,#06H MOV R5,#46H MOV R6,#37H BACK1:CJNE A,05H,LOOP1 CLR C SUBB A,R6 MOV R3,A SJMP END1 LOOP1:DEC R5 DJNZ R4,BACK1 MOV R5,#46H CLR C MOV 08H,A SUBB A,R7 JZ MAIN MOV A,08H END1: NOP MAIN1:CLR RI SETB TR1 HERE1:JNB RI,HERE1 MOV A, SBUF MOV R7,A MOV R2,#30H MOV R1,#0AH MOV R0,#39H BACK2:CJNE A,00H,LOOP2 CLR C SUBB A,R2 MOV R4,A MOV A,R3 SWAP A ADD A,R4 SJMP END2 LOOP2:DEC R0 DJNZ R1,BACK2 MOV R0,#39H MOV R4,#06H MOV R5,#46H MOV R6,#37H BACK3:CJNE A,05H,LOOP3 CLR C SUBB A,R6 MOV R4,A MOV A,R3 SWAP A ADD A,R4 SJMP END2 LOOP3:DEC R5 DJNZ R4,BACK3 MOV R5,#46H CLR C MOV 08H,A SUBB A,R7 JZ MAIN1 MOV A,08H END2: NOP MOV P2,A
; A1:MOV R0,#0FFH ;DELAY OF 15 ; A2:DJNZ R0,A2
SETB P0.6 ;PULSE FOR SOC A3:MOV R1,#0FH A4:DJNZ R1,A4
CLR P0.6 ;CLEAR SOC
;; MOV R1,#69H ; A5:DJNZ R1,A5 LOOP4:JB P0.7,LOOP4 ; MONITOR EOC ; ANL A,#80H ; JZ LOOP4 ; ACALL DELAY ; ACALL DELAY SETB P0.5 ;PULSE FOR OE ; MOV R1,#0FH ; A5:DJNZ R1,A5 ; transmit to pc
MOV TMOD,#20H MOV TH1,#0FDH MOV SCON,#50H SETB TR1 MOV A,P1 ; CLR P0.5 ;LOW THE OE SIGNAL AFTER COMPLETE RECEPTION OF THE DATA MOV R3,A ANL A,#0F0H SWAP A MOV R2,#30H MOV R1,#0AH MOV R0,#09H BACK4:CJNE A,00H,LOOP5 CLR C ADD A,R2 SJMP END3 LOOP5:DEC R0 DJNZ R1,BACK4 MOV R0,#09H MOV R4,#06 MOV R5,#0FH MOV R6,#37H BACK5:CJNE A,05H,LOOP6 CLR C ADD A,R6 ; MOV P2,A ; SJMP END3 LOOP6:DEC R5 DJNZ R4,BACK5 MOV R5,#0FH END3:NOP MOV SBUF,A HERE2:JNB TI,HERE2 CLR TI MOV A,R3 ANL A,#0FH MOV R2,#30H MOV R1,#0AH MOV R0,#09H BACK6:CJNE A,00H,LOOP7 CLR C ADD A,R2 ; MOV P2,A SJMP END4 LOOP7:DEC R0 DJNZ R1,BACK6 MOV R0,#09H MOV R4,#06 MOV R5,#0FH MOV R6,#37H BACK7:CJNE A,05H,LOOP8 CLR C ADD A,R6 MOV R3,A SJMP END4 LOOP8:DEC R5 DJNZ R4,BACK7 MOV R5,#0FH END4:NOP MOV SBUF,A HERE3:JNB TI,HERE3 CLR TI LJMP MAIN
;DELAY SUBROUTINE DELAY:MOV R0,#0FFH DELA:MOV R1,#0FFH DEL:DJNZ R1,DEL DJNZ R0,DELA RET
END; the coneection goes like this: form pc to max232,max232 to mc,mc to dac,dac to adc,adc back to mc, and mc to max 232 and to pc...could you tell me where is the falult.. i am getting the wrong result in hyperterminal. all connections are correct...
the code is
ORG 0030h MOV SP,#07H CLR P0.0 CLR P0.1 CLR P0.2 CLR P0.4 CLR P0.6 CLR P0.7 ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY SETB P0.4 ;PULSE FOR ALE ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY CLR P0.4 MAIN:MOV TMOD,#20H MOV TH1,#0FDH MOV SCON,#50H SETB TR1 HERE:JNB RI,HERE MOV A,SBUF MOV R7,A MOV R2,#30H MOV R1,#0AH MOV R0,#39H BACK:CJNE A,00H,LOOP CLR C SUBB A,R2 MOV R3,A SJMP END1 LOOP:DEC R0 DJNZ R1,BACK MOV R0,#39H MOV R4,#06H MOV R5,#46H MOV R6,#37H BACK1:CJNE A,05H,LOOP1 CLR C SUBB A,R6 MOV R3,A SJMP END1 LOOP1:DEC R5 DJNZ R4,BACK1 MOV R5,#46H CLR C MOV 08H,A SUBB A,R7 JZ MAIN MOV A,08H END1: NOP MAIN1:CLR RI SETB TR1 HERE1:JNB RI,HERE1 MOV A, SBUF MOV R7,A MOV R2,#30H MOV R1,#0AH MOV R0,#39H BACK2:CJNE A,00H,LOOP2 CLR C SUBB A,R2 MOV R4,A MOV A,R3 SWAP A ADD A,R4 SJMP END2 LOOP2:DEC R0 DJNZ R1,BACK2 MOV R0,#39H MOV R4,#06H MOV R5,#46H MOV R6,#37H BACK3:CJNE A,05H,LOOP3 CLR C SUBB A,R6 MOV R4,A MOV A,R3 SWAP A ADD A,R4 SJMP END2 LOOP3:DEC R5 DJNZ R4,BACK3 MOV R5,#46H CLR C MOV 08H,A SUBB A,R7 JZ MAIN1 MOV A,08H END2: NOP MOV P2,A ; A1:MOV R0,#0FFH ;DELAY OF 15 ; A2:DJNZ R0,A2 SETB P0.6 ;PULSE FOR SOC A3:MOV R1,#0FH A4:DJNZ R1,A4 CLR P0.6 ;CLEAR SOC ;; MOV R1,#69H ; A5:DJNZ R1,A5 LOOP4:JB P0.7,LOOP4 ; MONITOR EOC ; ANL A,#80H ; JZ LOOP4 ; ACALL DELAY ; ACALL DELAY SETB P0.5 ;PULSE FOR OE ; MOV R1,#0FH ; A5:DJNZ R1,A5 ; transmit to pc MOV TMOD,#20H MOV TH1,#0FDH MOV SCON,#50H SETB TR1 MOV A,P1 ; CLR P0.5 ;LOW THE OE SIGNAL AFTER COMPLETE RECEPTION OF THE DATA MOV R3,A ANL A,#0F0H SWAP A MOV R2,#30H MOV R1,#0AH MOV R0,#09H BACK4:CJNE A,00H,LOOP5 CLR C ADD A,R2 SJMP END3 LOOP5:DEC R0 DJNZ R1,BACK4 MOV R0,#09H MOV R4,#06 MOV R5,#0FH MOV R6,#37H BACK5:CJNE A,05H,LOOP6 CLR C ADD A,R6 ; MOV P2,A ; SJMP END3 LOOP6:DEC R5 DJNZ R4,BACK5 MOV R5,#0FH END3:NOP MOV SBUF,A HERE2:JNB TI,HERE2 CLR TI MOV A,R3 ANL A,#0FH MOV R2,#30H MOV R1,#0AH MOV R0,#09H BACK6:CJNE A,00H,LOOP7 CLR C ADD A,R2 ; MOV P2,A SJMP END4 LOOP7:DEC R0 DJNZ R1,BACK6 MOV R0,#09H MOV R4,#06 MOV R5,#0FH MOV R6,#37H BACK7:CJNE A,05H,LOOP8 CLR C ADD A,R6 MOV R3,A SJMP END4 LOOP8:DEC R5 DJNZ R4,BACK7 MOV R5,#0FH END4:NOP MOV SBUF,A HERE3:JNB TI,HERE3 CLR TI LJMP MAIN ;DELAY SUBROUTINE DELAY:MOV R0,#0FFH DELA:MOV R1,#0FFH DEL:DJNZ R1,DEL DJNZ R0,DELA RET END
...is to go through that code and provide comments that describe what you think it is supposed to be doing!
Also strip-out all the redundant text.
This exercise alone may well take you to your mistake!
View all questions in Keil forum