سلام.من می خواهم دو عدد میکروی 89C51 را از طریق پورت سریال به هم وصل کنم.به این صورت که میکرو اولی نوشته ای را از طریق پورت سریال بفرستد و میکرو دوم ان را دریافت کند و روی LCD نمایش دهد و برنامه ای هم برای این کار نوشتم.اما نمی دانم که مشکل این برنامه از کجاست که وقتی مدار را توی پروتئوس بستم روی LCD چند تا حرف را پشت سرهم نشان می دهد و جمله را همانطور که بصورت DB ذخیره کرده ام نشان نمی دهد.اگر ممکن است برنامه را چک کنید و اشکالاتش را بگویید و مهمتر از همه شکل درست برنامه را بنویسید چون یه مقدار عجله دارم.ممنون.
این برنامه میکرو اولی که اطلاعات را می فرستد:
ORG 00H
MOV SCON,#53H
MOV TMOD,#20H
MOV TL1,#-13
MOV TH1,#-13
SETB TR1
MOV R0,#00H
MOV DPTR,#MYDATA
LOOP1: JNB TI,LOOP1
CLR TI
LOOP2: CLR A
MOVC A,@A+DPTR
JZ LOOP2
MOV SBUF,A
INC R0
INC DPTR
CJNE R0,#21,LOOP1
MYDATA: DB 'ALI REZA BABAEI 9557',0
END
اینم برنامه میکرو دوم که اطلاعات را می گیرد:
ORG 00H
MOV SCON,#53H
MOV TMOD,#20H
MOV TL1,#-13
MOV TH1,#-13
SETB TR1
MOV A,#38H
ACALL FARMAN
ACALL DELAY
MOV A,#0EH
ACALL FARMAN
ACALL DELAY
MOV A,#01
ACALL FARMAN
ACALL DELAY
MOV A,#06H
ACALL FARMAN
ACALL DELAY
MOV A,#84H
ACALL FARMAN
ACALL DELAY
MOV R0,#00H
LOOP1: JNB RI,LOOP1
CLR RI
LOOP: MOV A,SBUF
ACALL DATA1
ACALL DELAY
INC R0
CJNE R0,#21,LOOP1
MOV R0,#00H
FARMAN:
ACALL AZADILCD
MOV P2,A
CLR P1.0
CLR P1.1
SETB P1.2
CLR P1.2
RET
DATA1:
ACALL AZADILCD
MOV P2,A
CLR P1.0
SETB P1.1
SETB P1.2
CLR P1.2
RET
AZADILCD:
SETB P2.7
CLR P1.1
SETB P1.0
CLR P1.2
SETB P1.2
LOOP: JB P2.7,LOOP
RET
DELAY: MOV 7FH,#200
M0: MOV 7EH,#200
M1: DJNZ 7EH,M1
DJNZ 7FH,M0
RET
END
البته همانطور که می دانید وقتی این کدها را کپی کنید و تو نت پد PASTE کنید درست می شوند.
این برنامه میکرو اولی که اطلاعات را می فرستد:
ORG 00H
MOV SCON,#53H
MOV TMOD,#20H
MOV TL1,#-13
MOV TH1,#-13
SETB TR1
MOV R0,#00H
MOV DPTR,#MYDATA
LOOP1: JNB TI,LOOP1
CLR TI
LOOP2: CLR A
MOVC A,@A+DPTR
JZ LOOP2
MOV SBUF,A
INC R0
INC DPTR
CJNE R0,#21,LOOP1
MYDATA: DB 'ALI REZA BABAEI 9557',0
END
اینم برنامه میکرو دوم که اطلاعات را می گیرد:
ORG 00H
MOV SCON,#53H
MOV TMOD,#20H
MOV TL1,#-13
MOV TH1,#-13
SETB TR1
MOV A,#38H
ACALL FARMAN
ACALL DELAY
MOV A,#0EH
ACALL FARMAN
ACALL DELAY
MOV A,#01
ACALL FARMAN
ACALL DELAY
MOV A,#06H
ACALL FARMAN
ACALL DELAY
MOV A,#84H
ACALL FARMAN
ACALL DELAY
MOV R0,#00H
LOOP1: JNB RI,LOOP1
CLR RI
LOOP: MOV A,SBUF
ACALL DATA1
ACALL DELAY
INC R0
CJNE R0,#21,LOOP1
MOV R0,#00H
FARMAN:
ACALL AZADILCD
MOV P2,A
CLR P1.0
CLR P1.1
SETB P1.2
CLR P1.2
RET
DATA1:
ACALL AZADILCD
MOV P2,A
CLR P1.0
SETB P1.1
SETB P1.2
CLR P1.2
RET
AZADILCD:
SETB P2.7
CLR P1.1
SETB P1.0
CLR P1.2
SETB P1.2
LOOP: JB P2.7,LOOP
RET
DELAY: MOV 7FH,#200
M0: MOV 7EH,#200
M1: DJNZ 7EH,M1
DJNZ 7FH,M0
RET
END
البته همانطور که می دانید وقتی این کدها را کپی کنید و تو نت پد PASTE کنید درست می شوند.
دیدگاه