全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1268
推到 Plurk!
推到 Facebook!

關於程式傳輸接收問題??

答題得分者是:skype_chen1
big_eyes
一般會員


發表:28
回覆:52
積分:16
註冊:2005-03-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-28 21:36:15 IP:218.164.xxx.xxx 未訂閱
請問各位大大! 我寫了兩ㄍ8051傳輸接收的程式! 我是用p3.0跟p3.1特殊功能下ㄑ寫的! 可是~傳不過去呢~~請各位大大幫我抓抓問題所在好ㄇ?? 拜託了~~ ((傳送))         
        ORG        00H
        JMP     STARTS                ;規避00H至2FH間之中斷向量執行位址
        ORG     31H
STARTS:
        MOV        TMOD,#00100001B                ;設定TIMER0為模式1, TIMER1為模式2
        ANL        PCON,#01111111B                ;設定鮑率為9600 BIT/SEC
        MOV     TH1,#FDH
        SETB    TR1                           ;啟動TIMER1
        MOV     SCON,#01000000B              ;串列埠MODE1 設定為傳送
LOOP:
        MOV        A,#05H                ;啟動UART的讀入接收資料動作資料
        MOV        SBUF,A
KLOOP:
        JBC        TI,OK
        JMP        KLOOP        
OK:
        JMP        LOOP
        END
((接收))
                 ORG        00H
                JMP     STARTS        ;規避00H至2FH間之中斷向量執行位址
                ORG     30H
STARTS:
        MOV        TMOD,#00100001B        ;設定TIMER0為模式1, TIMER1為模式2
        ANL        PCON,#01111111B        ;設定鮑率為9600 BIT/SEC
        MOV     TH1,#FDH
        SETB    TR1                           ;啟動TIMER1
        MOV     SCON,#01010000B              ;串列埠MODE1 設定為接收
;=======================讀取串列埠資料==============================
LOOP1:
        CLR        RI                ;啟動UART的讀入接收資料動作
KLOOP:
        JNB        RI,OK                        ;等待訊號接收完畢
        JMP        KLOOP
OK:
        MOV        A,SBUF        ;將89C51_1所傳送之資料搬到累加器
        XRL        A,#05H;判斷是否為#05H之資料執行89C51_2行走模式程式
        JZ        START                        ;
        JMP        STARTS
START:
        MOV        P0,#00H
        MOV        P1,#00H
WHY:
        MOV        P1,#00001010B
        MOV        P0,#FFH
        CALL        DELAY1
        JMP        STARTS
DELAY1:        
        MOV     TMOD,#01;設定Timer1為16位元計時模式;0.05秒產生溢位
        MOV        TL0,#<(65536-46080)        ;儲存16位元之低8位元
        MOV        TH0,#>(65536-46080)        ;儲存16位元之高8位元
        SETB        TR0                        ;啟動計時器
WAIT1:        
        JBC        TF0,OVERFLOW1        ;測試是否計時完畢產生溢位
        JMP        WAIT1                ;否, 則持續測試溢位之發生
OVERFLOW1:
        CLR        TR0                        ;關閉計時器
        DJNZ        R3,DELAY1
        RET
        END        
發表人 - ㊣ 於 2005/05/28 21:47:47

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-28 22:31:11 IP:220.134.xxx.xxx 未訂閱
請用中斷的方式試試看吧!51書上中斷的部分應該有範例. 51的串列埠傳輸與接收(分開)你都熟了嗎?
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
big_eyes
一般會員


發表:28
回覆:52
積分:16
註冊:2005-03-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-28 22:45:19 IP:218.164.xxx.xxx 未訂閱
引言: 請用中斷的方式試試看吧!51書上中斷的部分應該有範例. 51的串列埠傳輸與接收(分開)你都熟了嗎?
中斷? 我對中斷法不清楚耶~ 不過我串列埠傳輸與接收我幾乎都看到快濫掉了阿! 就是傳不過去耶~ 我們老師也有幫我測試過阿~ 老師也傳不過去~超奇怪的~ 所以才想請教大大問題所在阿~~ 傳輸一定要用P3.0~3.1才能傳輸ㄇ? 是否能不用特殊功能傳輸呢??

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-28 22:51:34 IP:220.134.xxx.xxx 未訂閱
引言: 中斷? 我對中斷法不清楚耶~
你不是有書,書上一定有範例!請先看看,試試吧.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
big_eyes
一般會員


發表:28
回覆:52
積分:16
註冊:2005-03-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-29 00:49:49 IP:218.164.xxx.xxx 未訂閱
痾~~就是看不太懂= =" 所以才用看的懂的來寫阿~"~ 大大~拜託你嘛~~ 幫幫偶嘛... 拜託拜託!!
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-29 11:05:16 IP:218.171.xxx.xxx 未訂閱
你要不要確認接收部分    
KLOOP:
        JNB        RI,OK                        ;等待訊號接收完畢
        JMP        KLOOP
JNB RI,OK 好像要改成 JB RI,OK 祝好運嘍
big_eyes
一般會員


發表:28
回覆:52
積分:16
註冊:2005-03-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-29 23:38:08 IP:218.164.xxx.xxx 未訂閱
引言: 你要不要確認接收部分
KLOOP:
        JNB        RI,OK                        ;等待訊號接收完畢
        JMP        KLOOP
JNB RI,OK 好像要改成 JB RI,OK 祝好運嘍 可是~ 它傳送的腳都沒送出耶~ 那傳送問題都不對了~怎麼能接收呢?? 我用示波器量都沒變化耶~ 怎麼辦呢><"
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-30 09:57:29 IP:218.171.xxx.xxx 未訂閱
一般的示波器應該沒辦法看的出uart的輸出訊號吧(不太確定..印象中好像是這 樣) 你的傳送端程式看起來沒問題,還是換一顆8051看看
foreman
高階會員


發表:3
回覆:124
積分:190
註冊:2004-09-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-30 10:10:30 IP:220.129.xxx.xxx 未訂閱
RI=1收到 RI=0沒收到 JNB RI,OK JMP KLOOP 沒每收到跳到OK 收到跳到KLOOP 跳到OK後SBUF當然不是5則又重來所已接收不到

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-05-30 10:39:42 IP:61.70.xxx.xxx 未訂閱
引言: 一般的示波器應該沒辦法看的出uart的輸出訊號吧(不太確定..印象中好像是這 樣)
可以唷!善用trigger function,訊號是抓的到的. UART速度不快, 很好抓的. 有傳一定看的到.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
skype_chen1
一般會員


發表:4
回覆:11
積分:8
註冊:2004-12-21

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-02 00:16:47 IP:219.84.xxx.xxx 未訂閱
;======8051 FIRST CPU TRANSMIT PROCESS ORG 00H JMP STARTS ;規避00H至2FH間之中斷向量執行位址 ORG 30H STARTS: MOV SP,#60H MOV PSW,#00H ;設定為 BANK0 MOV P0,#0FFH MOV P1,#0FFH MOV TMOD,#00100000B ;設定TIMER為模式2 Timer1 Mode2:(8 Bit Autoreload) ANL PCON,#01111111B ;設定鮑率為9600 BIT/SEC MOV TH1,#0FDH SETB TR1 ;啟動TIMER1 MOV SCON,#01000000B ;串列埠MODE1 設定為傳送 LOOP: MOV A,#05H ;啟動UART的讀入接收資料動作資料 MOV SBUF,A NOP NOP JNB TI,$ CLR TI JMP LOOP END 定義可位元 RX_FLAG .REG 20H.0 ;=1,RECEIVE 1 BYTE OK ;=0,RECEIVE 1 BYTE ERROR ;======8051 SECOND CPU RECEIVE PROCESS ((接收)) ORG 00H JMP START ;規避00H至2FH間之中斷向量執行位址 ORG 23H JMP UART_INT ORG 30H START: MOV SP,#60H MOV PSW,#00H MOV P0,#0FFH ;SET PORT 0 INPUT PORT MOV P1,#0FFH ;SET PORT 1 INPUT PORT MOV TMOD,#00100000B ;設定TIMER1為模式2 ANL PCON,#01111111B ;設定鮑率為9600 BIT/SEC MOV TH1,#0FDH SETB TR1 ;啟動TIMER1 MOV SCON,#01010000B ;串列埠MODE1 設定為接收 CLR RX_FLAG ;=======================讀取串列埠資料============================== MAIN_LOOP: JBC RX_FLAG,$RECIVE_OK JMP MAIN_LOOP $RECIVE_OK: MOV P1,#00001010B MOV R4,#10 CALL DELAY1 MOV P0,#0FFH CALL DELAY1 JMP LOOP1 ;--Delay Time: r4*20ms DELAY1: MOV R5,#40 DLY: MOV R6,#249 DJNZ R6,$ DJNZ R5,DLY RET END UART_INT: PUSH ACC PUSH PSW CLR RS0 ;USE BANK1 SETB RS1 JB RI,DATA_IN CLR TI ;DON'T USE TRANSMIT THE FUCNTION SJMP RETURN DATA_IN: MOV A,SBUF CLR RI CJNE A,#05H,$RETURN SETB RX_FLAG $RETURN: POP ACC POP PSW RETI ;-----必須使用震盪器為11.0592MHZ,把第一顆 CPU TXD,接到第二顆 CPU RXD

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-02 00:19:40 IP:220.134.xxx.xxx 未訂閱
skype_chen1:po程式碼請縮排,不知如何做請看版規!煩請修改配合,謝謝!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
skype_chen1
一般會員


發表:4
回覆:11
積分:8
註冊:2004-12-21

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-06-02 00:20:17 IP:219.84.xxx.xxx 未訂閱
;======8051 FIRST CPU TRANSMIT PROCESS ORG 00H JMP STARTS ;規避00H至2FH間之中斷向量執行位址 ORG 30H STARTS: MOV SP,#60H MOV PSW,#00H ;設定為 BANK0 MOV P0,#0FFH MOV P1,#0FFH MOV TMOD,#00100000B ;設定TIMER為模式2 Timer1 Mode2:(8 Bit Autoreload) ANL PCON,#01111111B ;設定鮑率為9600 BIT/SEC MOV TH1,#0FDH SETB TR1 ;啟動TIMER1 MOV SCON,#01000000B ;串列埠MODE1 設定為傳送 LOOP: MOV A,#05H ;啟動UART的讀入接收資料動作資料 MOV SBUF,A NOP NOP JNB TI,$ CLR TI JMP LOOP END ;======8051 SECOND CPU RECEIVE PROCESS RX_FLAG .REG 20H.0 ;=1,RECEIVE 1 BYTE OK ;=0,RECEIVE 1 BYTE ERROR ((接收)) ORG 00H JMP START ;規避00H至2FH間之中斷向量執行位址 ORG 23H JMP UART_INT ORG 30H START: MOV SP,#60H MOV PSW,#00H MOV P0,#0FFH ;SET PORT 0 INPUT PORT MOV P1,#0FFH ;SET PORT 1 INPUT PORT MOV TMOD,#00100000B ;設定TIMER1為模式2 ANL PCON,#01111111B ;設定鮑率為9600 BIT/SEC MOV TH1,#0FDH SETB TR1 ;啟動TIMER1 MOV SCON,#01010000B ;串列埠MODE1 設定為接收 CLR RX_FLAG ;=======================讀取串列埠資料============================== MAIN_LOOP: JBC RX_FLAG,$RECIVE_OK JMP MAIN_LOOP $RECIVE_OK: MOV P1,#00001010B MOV R4,#10 CALL DELAY1 MOV P0,#0FFH MOV R4,#10 CALL DELAY1 JMP LOOP1 ;--Delay Time: r4*20ms DELAY1: MOV R5,#40 DLY: MOV R6,#249 DJNZ R6,$ DJNZ R5,DLY RET END UART_INT: PUSH ACC PUSH PSW CLR RS0 ;USE BANK1 SETB RS1 JB RI,DATA_IN CLR TI ;DON'T USE TRANSMIT THE FUCNTION SJMP RETURN DATA_IN: MOV A,SBUF CLR RI CJNE A,#05H,$RETURN SETB RX_FLAG $RETURN: POP ACC POP PSW RETI ;-----必須使用震盪器為11.0592MHZ,把第一顆 CPU TXD,接到第二顆 CPU RXD 少打了一行更正你驗證看看應該是沒問題
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-06-02 08:20:44 IP:211.21.xxx.xxx 未訂閱
skype_chen1 要插入程式碼 在發表文章時 有個 "#" 按下去 會出現code /code 把程式碼放在中間 這樣程式縮排效果才不會被清掉 ------------------- 美好的事物 稍縱即逝
系統時間:2024-05-15 8:28:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!