tgs0910
|
分享:
▼
不好意思时常麻烦大大的帮忙 老大请教一下我18楼的程式对吗 就算用2颗8051对接也无法收到信号 谢谢 我今天又去买两个75176 我共有六个75176 但是只有一个可以这样接还收的到东西 程式是用大大帮小弟改的程式 ORG 00h MOV TMOD,#00100000B MOV TH1,#0FDH SETB TR1 ORL PCON,#80H MOV SCON,#01111000B clr 20h.0 START: jnb ri, checkp21 clr ri mov a, sbuf cjne a, #30h, chkrcv31h setb p1.1 setb 20h.0 jmp checkp21 chkrcv31h: cjne a, #31h, rcvother setb p1.2 jnb 20h.0, checkp21 setb p1.3 ; 收到 30h, 31h clr 20h.0 jmp checkp21 rcvother: clr 20h.0 ; 非 30h, 31h checkp21: setb p2.1 ; pull high p2.1 for input jnb p2.1, START_9 jmp START START_9: mov dptr, #table next: mov a,#0 movc a,@a+dptr cjne a,#'$',trans jmp START trans: mov sbuf,a jnb ti,$ clr ti inc dptr ajmp next table: DB 30h, 31h, '$' 谢谢
[ 此文章被tgs0910在2006-04-19 21:23重新编辑 ]
|
|
x0
[20 楼]
From:台湾中华电信
| Posted:2006-04-19 21:16 |
|
|
tgs0910
|
分享:
▲
▼
老大小弟终于找出问题的所在了 原来是小弟的面包版太旧了 有些接触不良 小弟换了一块就没这个问题了 谢谢大大的帮忙 不过小弟还有些问题 可否麻烦大大有空时帮帮小弟谢谢 ORG 00h MOV TMOD,#00100001B MOV TH1,#0FDH SETB TR1 ORL PCON,#80H MOV SCON,#01110000B ; LOOP: MOV P1,#11111111B JNB RI,K0 CLR RI ; MOV A,SBUF ; C1: CJNE A,#FFH,C2 CLR P1.0 JMP K0 ; C2: CJNE A,#31H,C3 CLR P1.1 JMP K0 ; C3: CJNE A,#32H,C4 CLR P1.2 JMP K0 ; C4: CJNE A,#33H,C5 CLR P1.3 JMP K0 ; C5: CJNE A,#34H,C6 CLR P1.4 JMP K0 ; C6: CJNE A,#35H,C7 CLR P1.5 JMP K0 ; C7: CJNE A,#36H,C8 CLR P1.6 JMP K0 ; C8: CJNE A,#37H,LOOP CLR P1.7 JMP K0 ; K0: MOV P2,#11111111B JB P2.0,K1 MOV A,#FFH ACALL DELAY JMP K8 ; K1: JB P2.1,K2 MOV A,#31H ACALL DELAY JMP K8 ; K2: JB P2.2,K3 MOV A,#32H ACALL DELAY JMP K8 ; K3: JB P2.3,K4 MOV A,#33H ACALL DELAY JMP K8 ; K4: JB P2.4,K5 MOV A,#34H ACALL DELAY JMP K8 ; K5: JB P2.5,K6 MOV A,#35H ACALL DELAY JMP K8 ; K6: JB P2.6,K7 MOV A,#36H ACALL DELAY JMP K8 ; K7: JB P2.7,K9 MOV A,#37H ACALL DELAY JMP K8 ; K9: JMP LOOP ; K8: MOV SBUF,A JNB TI,$ CLR TI JMP LOOP ; DELAY: MOV R4,#40 ; TIMER: MOV TH0,#3CH MOV TL0,#B0H SETB TR0 ; WAIT: JB TF0,OK AJMP WAIT ; OK: CLR TF0 DJNZ R4,TIMER RET ; END 小弟这样写哪里有问题请大大帮小弟看一下 为什么不能用 小弟看过可以用 一只脚来选择要用哪一段程式 然后把那一只脚接地就永远用那一段程式来执行 就是第一段把 P1.1 SETB 时就发射30H 第二段把 P1.1 SETB 时就发射31H
请问大大知道大概要如何写 谢谢
|
|
x0
[22 楼]
From:台湾
| Posted:2006-04-29 18:11 |
|
|
cmovies
|
分享:
▲
▼
小弟这样写哪里有问题请大大帮小弟看一下 为什么不能用 -> 我不晓得你所谓的不能用是指什么问题? 唯一能看出不太合理的地方是收到资料后, 如果 P2 没有被按下那么 P1 的动作立刻就消失了 LOOP: MOV P1,#11111111B <- 就是这行 就算 P2 有被按下, 两秒钟后 P1 得动作也会消失 (DELAY 在 12 MHz 应该是两秒吧!?)
如果你的程式是想要发送端的 P2 被按了哪些, 接收端的 P1 相对应的脚位就拉 High 其他为 Low. 那直接把 P2 送出去就好了 ORG 00h MOV TMOD,#00100001B MOV TH1,#0FDH SETB TR1 ORL PCON,#80H MOV SCON,#01110000B MOV P1,#11111111B LOOP: JNB RI,K0 CLR RI MOV A,SBUF MOV P1, A K0: MOV P2,#11111111B NOP MOV A,P2 CPL A MOV SBUF,A CALL DELAY JMP LOOP
DELAY: MOV R4,#40 TIMER: MOV TH0,#3CH MOV TL0,#B0H CLR TF0 SETB TR0 WAIT: JNB TF0,WAIT DJNZ R4,TIMER RET END
小弟看过可以用 一只脚来选择要用哪一段程式 然后把那一只脚接地就永远用那一段程式来执行 就是第一段把 P1.1 SETB 时就发射30H 第二段把 P1.1 SETB 时就发射31H -> 这跟你用 JB 来判别要送哪个资料有什么不一样吗??? LOOP: JB P0.0, CODE1 JMP CODE2 CODE1: ; JMP LOOP CODE2: ; JMP LOOP
|
|
x0
[23 楼]
From:台湾中华电信
| Posted:2006-04-30 23:52 |
|
|
|