作者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