عزیز من نگاه کن شما دوتا پایه به نام D0 و D1 دارید باید یک برنامه بنویسید که در یک حلقه منتظر صفر شدن ودر بعضی
حالات خاص منتظر یک بودن باشید احتمال دارد D0 صفر شود و یا D1 اگر D1 صفر شد اولین بیت وارده یک است .D0 یک شد اولین
بیت صفر است در این حلقه مدت T0 صبر می کنیم بعد از حلقه خارج می شویم بعد از مدت T1 هردو تا پایه خوانده می شود
اگرD0 صفر شد دومین بیت صفر است واگر D1 صفر شد دومین بیت یک است باز T1 مکث می کنیم و بیت سوم را می خوانیم واگر داده ایی نبود پس خواندن تمام شده است البته باید چهار بایت شیفت هم طراحی کنی تا هر داده ای که وارد شد به این
چهار بایت وارد شود اینهم برنامه برای 2051 و نمایش اطلاعات ویگاند در کامپیوتر از طریق پورت سریال 9600 موفق باشی
در ضمن ِD0 و D1 به پایه های P1.0 و 1.P1 وصل می شود
ORG 0
TANZIM:
TL00 EQU R2
TH00 EQU R3
AA BIT P1.0
BB BIT P1.1
;CC BIT P1.2
MUSTINC BIT 10H;IN 22H
MOV TMOD ,#21H
MOV TH1,#-3;;;33
MOV SCON,#50H;;36
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#0
MOV R6,#0
MOV R7,#0
MOV P0,#11111111B
MOV P1,#11111111B
MOV P2,#11111111B
MOV P3,#0FFH
SETB TR1
;------------------------------------MAIN
MAIN:
MOV R4,P1
CJNE R4,#11111101B,AFTER
CLR C
CALL SHIFTT
LJMP MAIN
AFTER:
CJNE R4,#11111110B,AFTER1
SETB C
CALL SHIFTT
LJMP MAIN
AFTER1:
CALL ONEINC
CJNE R6,#50,MAIN
CALL SEND
MOV R5,#0
MOV R6,#0
MOV R7,#0
ENDINC:
JMP MAIN
;---------------------------------------HARAKAT
SEND:
CLR TI
MOV SBUF,50H
JNB TI,$
CLR TI
MOV SBUF,51H
JNB TI,$
CLR TI
MOV SBUF,52H
JNB TI,$
CLR TI
MOV SBUF,53H
JNB TI,$
CLR TI
MOV 50H,#0
MOV 51H,#0
MOV 52H,#0
MOV 53H,#0
CLR MUSTINC
RET
;-----------------------------------------GETBUFFERSUB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKS:
SHIFTT:
CALL MAKS
MOV R5,#0
MOV R6,#0
MOV R7,#0
SETB MUSTINC
MOV A,50H
RLC A
MOV 50H,A
MOV A,51H
RLC A
MOV 51H,A
MOV A,52H
RLC A
MOV 52H,A
MOV A,53H
RLC A
MOV 53H,A
RET
;;;;;;;;;;;;;;;;;
MAKS:
MOV TL0,#0
MOV TH0,#255
CLR TF0
SETB TR0
JNB TF0,$
CLR TF0
CLR TR0
RET
;--------------------------------ONEINC
ONEINC:
JNB MUSTINC,INCEND
INC R5
CJNE R5,#0,INCEND
INC R6
CJNE R6,#0,INCEND
INC R7
INCEND:
RET
END
END[/align][/code]