作者chung017 (JING)
看板ASM
标题[请益] 8051与8051沟通...
时间Fri Jul 18 01:15:11 2008
最近遇到了一个问题...
我们希望8051能够与8051作沟通,
意即
2颗8051都分别接上4*4键盘及7段显示器,
当我们按下第1颗8051所接的4*4键盘上的数字键後,
第2颗8051的七段显示器会显示我们所按下的数字,
反之,
按下第2颗8051所接的4*4键盘上的数字後,
第1颗的8051的七段显示器也会显示出所按的数字。
有找到是用C语言写成的程式,
(C语言的程式我们有成功)
但我们希望能够用组语完成,
因为这样的之後要修改比较好修改。
我们有试着自己打过一个组语的程式,
可是 失败了,
所以想请大家可以帮我们修改看看哪里有问题...
ORG 0000H
MOV TMOD,
#00100000B ;令计时器1工作於模式2
MOV TH1,#253 ;┐设定计数值,令鲍率为9600BPS
MOV TL1,#253 ;┘
SETB TR1
MOV SCON ,
#01110000B
LOOP:
MOV P2,
#01111111B ;令P2.7=0
JNB P2.3,KEY0 ;0键有闭合吗?
JNB P2.2,KEY1 ;1键有闭合吗?
JNB P2.1,KEY2 ;2键有闭合吗?
JNB P2.0,KEY3 ;3键有闭合吗?
MOV P2,
#10111111B ;令P2.6=0
JNB P2.3,KEY4 ;4键有闭合吗?
JNB P2.2,KEY5 ;5键有闭合吗?
JNB P2.1,KEY6 ;6键有闭合吗?
JNB P2.0,KEY7 ;7键有闭合吗?
MOV P2,
#11011111B ;令P2.5=0
JNB P2.3,KEY8 ;8键有闭合吗?
JNB P2.2,KEY9 ;9键有闭合吗?
AJMP LOOP ;重覆检测键盘
KEY0: MOV P0,
#11000000B ;0键被压下时之对应程式
MOV A,#30H
ACALL SENDOUT
AJMP LOOP
KEY1: MOV P0,
#11111001B ;1键被压下时之对应程式
MOV A,#31H
ACALL SENDOUT
AJMP LOOP
KEY2: MOV P0,
#10100100B ;2键被压下时之对应程式
MOV A,#32H
ACALL SENDOUT
AJMP LOOP
KEY3: MOV P0,
#10110000B ;3键被压下时之对应程式
MOV A,#33H
ACALL SENDOUT
AJMP LOOP
KEY4: MOV P0,
#10011001B ;4键被压下时之对应程式
MOV A,#34H
ACALL SENDOUT
AJMP LOOP
KEY5: MOV P0,
#10010010B ;5键被压下时之对应程式
MOV A,#35H
ACALL SENDOUT
AJMP LOOP
KEY6: MOV P0,
#10000010B ;6键被压下时之对应程式
MOV A,#36H
ACALL SENDOUT
AJMP LOOP
KEY7: MOV P0,
#11111000B ;7键被压下时之对应程式
MOV A,#37H
ACALL SENDOUT
AJMP LOOP
KEY8: MOV P0,
#10000000B ;8键被压下时之对应程式
MOV A,#38H
ACALL SENDOUT
AJMP LOOP
KEY9: MOV P0,
#10010000B ;9键被压下时之对应程式
MOV A,#39H
ACALL SENDOUT
AJMP LOOP
SENDOUT:CLR TI
MOV SBUF,A
JNB TI,$
CALL DELAY
RET
DELAY:
MOV R6,#50
DL1: MOV R7,#200
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
END
或者
有相关的程式的书籍可以推荐给我们吗?
先谢过大家的帮忙...
如果这不适合在这询问的话,
那我会自删的...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.88.178
※ 编辑: chung017 来自: 118.170.88.178 (07/18 01:17)
1F:推 typeotoco:两颗之间沟通的桥梁是? 07/18 10:17
2F:→ dexders:讯号直接从8051 bypass过去比较快 XD 07/18 10:54
3F:推 ruemann:程式看起来是用 UART 来传资料,but...怪怪的 07/18 11:03