flag bit 00H ORG 0000H JMP CONFIG ORG 23H ORG 0100H HEAD EQU 300H ;-> Starting address of the messages ORG 0100H ;------------------------------------- ;--------------LCD SETUP-------------- ;------------------------------------- CONFIG: NOP NOP NOP MOV OSCXCN,#0E7H ;> SETTING FOR EXTERNAL OSCILLATOR CONTROL NOP NOP NOP NOP ORL OSCXCN,#00H ;-> POLL FOR XTLVLD '0' TO '1' TO SWITCH TO EXTERNAL OSCILLATOR NOP NOP MOV OSCICN,#08H ;-> INTERNAL OSCILLATOR OFF NOP NOP MOV PRT0CF,#03H ;-> PORT 0 CONFIG - MOV P0MODE,#0FFH ;-> PORT 0 MODE REGISTER - DIGITAL INPUT IS ENABLE MOV PRT0MX,#01H ;-> PORT 0 MUX CONFIG REGISTER - UART I/O ENABLE FOR TX & RX MOV P0,#0FCH ;-> PORT 0 REGISTER - MOV PRT1CF,#0FFH ;-> PORT 1 CONFIG - OUTPUT MODE SET AS PUSH-PULL MOV P1MODE,#0FFH ;-> PORT 1 MODE REGISTER - DIGITAL INPUT IS ENABLE MOV P1,#0FFH MOV PRT2CF,#0E0H ;-> PORT 2 CONFIG - OUTPUT MODE SET AS PUSH-PULL MOV P2MODE,#0E0H ;-> PORT 2 MODE REGISTER - DIGITAL INPUT IS ENABLE MOV P2,#1FH MOV WDTCN,#0DEH MOV WDTCN,#0ADH CLR P2.5 ;Send command CLR P2.6 ;Write command MOV A,#38H ;??? font LCALL STROBE MOV A,#0CH ;Cursor off LCALL STROBE MOV A,#06H ;Display pattern LCALL STROBE MOV A,#01H ;Clear display LCALL STROBE MOV A,#02H ;Return home LCALL STROBE SETB P2.5 ;RS send data MOV DPTR,#HEAD ACALL MESS ;------------------------------------- ;--------Serial Communication--------- ;------------------------------------- MOV PCON,#80H ;DOUBLE THE BAUD RATE BY SETTING SMOD TO 1 MOV TMOD,#20H ;Set Timer 1 to 8 bits auto-reload timer MOV SCON,#70H ;Serial Port Control Register 8-bit UART MOV TH1,#0FDH ;9600bps * (SMOD+1) = 19200bps SETB TR1 ;Start the timer 1 ;---------------------------------------- ;-----------------MAIN PROGRAM----------- ;---------------------------------------- ;MAIN: MOV DPTR,#HEAD ;ACALL MESS ;---------------------------------------- ;------------TRANSMITTING STRING--------- ;---------------------------------------- Mess: ;PUSH ACC MOV R0,#0 ;R0 is character pointer (string MSS: MOV A,R0 ; length is to 256 bytes). MOVC A,@A+DPTR ;Get byte to send. CJNE A,#0DH,TX ;End of string is indicated by a 0DH. ;POP ACC CHECK: JNB TI,CHECK CLR TI CALL DELAY TX: MOV SBUF,A ;Send a character. INC R0 ;Next character. SJMP MSS JMP CHECK ;CALL DELAY ;WAIT: JNB TI,WAIT ;CLR TI ;INC DPTR ;------------------------------------- ;-----------Phrase Storage------------ ;------------------------------------- ORG 300H DB 'HOW ARE YOU',0DH ;------------------------------------- ;----------DISPLAY IN LCD------------- ;------------------------------------- LCD: CLR A MOVC A,@A+DPTR CJNE A,#0DH,LOOP RET LOOP: LCALL STROBE INC DPTR LJMP LCD STROBE: SETB P2.7 ;Set E to high MOV P1,A ;Send to port 1 LCALL DELAY CLR P2.7 RET ;------------------------------------- ;-----------Standard DELAY------------ ;------------------------------------- DELAY: MOV R6,#10H AA: MOV R7,#0EFH BB: DJNZ R7,BB DJNZ R6,AA RET END i tried to transmit the string and show it on the LCD at the same time but i don receive the same string on the LCD ( PC1604A-L 16x4 P-TEC ). IS the error in this program??
Why did you start a new thread and post exactly the same code in your old thread?! Now you have to take care to monitor replies in both threads! http://www.keil.com/forum/postmsg.asp?ReplyTo=22335&ThreadID=5143