線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1990
推到 Plurk!
推到 Facebook!

如何不用RXD和TXD作74LS595的傳輸

答題得分者是:kaust541109
tai012
一般會員


發表:3
回覆:0
積分:0
註冊:2007-12-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-04 13:50:30 IP:124.244.xxx.xxx 訂閱
如何不用RXD和TXD作74LS595的傳輸
小弟要作一個6個16x16LED顯示屏和電腦溝通,
8051的RXD接去74LS595的14腳(SER)
8051的TXD接去74LS595的11腳(SRCLK)
程式凡的TIMER0中斷如下:
TIMER0: PUSH ACC
MOV TH0,#0FCH ;1ms
MOV TL0,#18H
MOV A,#97
ADD A,DPL
MOV DPL,A
MOV A,#0
ADDC A,DPH
MOV DPH,A
MOV A,#0
MOVC A,@A DPTR
MOV SBUF,A
WAIT: JBC TI,GO
AJMP WAIT
GO: MOV A,DPL
SUBB A,#1
MOV DPL,A
MOV A,DPH
SUBB A,#0
MOV DPH,A
MOV A,#0
MOVC A,@A DPTR
MOV SBUF,A
WAIT1: JBC TI,GO1
AJMP WAIT1
GO1: MOV R0,#03H
MLOOP: MOV A,DPL
SUBB A,#31
MOV DPL,A
MOV A,DPH
SUBB A,#0
MOV DPH,A
MOV A,#0
MOVC A,@A DPTR
MOV SBUF,A
WAIT2: JBC TI,GO2
AJMP WAIT2
GO2: MOV A,DPL
SUBB A,#1
MOV DPL,A
MOV A,DPH
SUBB A,#0
MOV DPH,A
MOV A,#0
MOVC A,@A DPTR
MOV SBUF,A
WAIT3: JBC TI,GO3
AJMP WAIT3
GO3: DJNZ R0,MLOOP ;loop 3 times
SETB P1.7 ;74LS154 pin 18(G1) = high
NOP
SETB P1.6 ;595(RCLK) = high
NOP
NOP
CLR P1.6 
MOV A,R2
ORL A,#0F0H
MOV R2,A
MOV A,P1
ORL A,#0FH
ANL A,R2
MOV P1,A
CLR P1.7
INC R2
INC DPTR
INC DPTR
MOV A,R2
ANL A,#0FH
JNZ GO4
SETB 00H
MOV A,DPL
SUBB A,#32
MOV DPL,A
MOV A,DPH
SUBB A,#0
MOV DPH,A
CLR TR0
GO4: POP ACC
RETI
這樣我要如何修改其他PORT位代替TXD和RXD
編輯記錄
 重新編輯於 2008-04-05 15:58:17, 註解 分類為問題非求才. 問題說明仍不清楚‧
harrypp
中階會員


發表:7
回覆:124
積分:61
註冊:2006-08-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-06 02:41:34 IP:220.132.xxx.xxx 訂閱
你的8051只需要輸出到LED嗎?
為什麼不用port直接output?
編輯記錄
harrypp 重新編輯於 2008-04-06 03:00:23, 註解 無‧
kaust541109
一般會員


發表:2
回覆:7
積分:6
註冊:2008-04-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-04-14 11:09:07 IP:61.62.xxx.xxx 訂閱
可以用其他的PORT代替TXD跟RXD的動作,但執行速度會比寫入SBUF慢,畢竟SBUF是用硬體處理,在Clock上要省很多,
Send_To_74LS595:
MOV R2, #8
$Loop:
RRC A
MOV P2.0, C ;;隨便那個IO Port,代替RXD送出資料
CLR P2.1 ;;隨便那個IO Port,代替TXD送出CLK
SETB P2.1
DJNZ R2, $Loop
RET
編輯記錄
kaust541109 重新編輯於 2008-04-14 11:13:21, 註解 無‧
harrypp
中階會員


發表:7
回覆:124
積分:61
註冊:2006-08-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-04-14 11:55:15 IP:210.202.xxx.xxx 訂閱
Port輸出Parallel直接是8bit,而且速度幾乎就跟CPU一樣。
若怕接收端接收不到,所以還得再找顆Latch IC接。

反而RxTx在怎麼快也是1bit,Debug也不方便。
除非特別原因限制,我反而較少用RxTx。
編輯記錄
harrypp 重新編輯於 2008-04-14 12:09:34, 註解 無‧
kaust541109
一般會員


發表:2
回覆:7
積分:6
註冊:2008-04-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-04-14 12:58:05 IP:61.62.xxx.xxx 訂閱
用8_Bit PORT直接輸出當然快,問題當你的腳位不足時,用串列Mode0反而是較省IO腳的作法,
而且Mode0是用振盪器頻律除2,速度上不會比並列慢多少喔,
問題是當你還需要跟PC溝通時,除非你選的8051有兩個串列PORT,不然就只能自己模擬了
harrypp
中階會員


發表:7
回覆:124
積分:61
註冊:2006-08-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-04-14 13:53:39 IP:210.202.xxx.xxx 訂閱
沒錯!各有優缺點,所以還是得看實際應用。
如果沒有腳位不夠問題的話,我會優先考慮用IO。
若腳位都佔掉了,也只好用RxTx。
系統時間:2024-05-11 0:26:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!