音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

如何在占用最少資源的情況下,只利用一個IO來通信——?

作者:Wxy8030 欄目:單片機(jī)
如何在占用最少資源的情況下,只利用一個IO來通信——?
主機(jī)不停的往外發(fā),從機(jī)接受(兩個單片機(jī)在一塊板子上),要求主機(jī)在盡量少占用資源(盡量少占用RAM,不要使用軟件延時,每個字節(jié)的發(fā)送時間盡量不要超出100個NOP時間,數(shù)據(jù)更新速度只要不大于1S就可以,不能占用定時器、串口之類的硬件資源)的情況下把八位數(shù)據(jù)發(fā)出來。(從機(jī)除了接受主機(jī)的數(shù)據(jù)把它顯示出來外,無別的任務(wù))。

各位大俠可有好的思路?


* - 本貼最后修改時間:2005-1-11 14:02:09 修改者:Wxy8030

2樓: >>參與討論
china_fog
1-wire
LOOK

3樓: >>參與討論
dengm
最快 3 指令周期一bit
發(fā)端:
        ;.....
        ;.....
        CLR EA
        CLR P1.5
        MOV A, #4
        DJNZ ACC, $
        SETB P1.5
        MOV A, @R0
        INC R0
        NOP
        NOP
        NOP
        NOP
        MOV C, ACC.0
        MOV P1.5, C  ; BIT 0

        MOV C, ACC.1
        MOV P1.5, C  ; BIT 1
        ;...
         ;...

        MOV C, ACC.7
        MOV P1.5, C  ; BIT 1
       
        JC EXIT
          NOP  
          SETB P1.5          
EXIT:
        SETB EA
        ;.....


收端:
        ORG 03H ; INT 0 / P3.2 電平
           AJMP SUB_INT0 ; 03 - 09 指令周期           
        ORG 08H  ; TIMER 0/ GATE CONSOLE / 惟一高優(yōu)先級中斷
                 ; MODE 2  TH0=0 : TL0=0FFH

        ORG 50h

SUB_INT0:
         SETB TR0
         NOP
         NOP
         NOP
         NOP
         NOP
         ...
         ...
         ...
         ...
         RETI

SUB_INT0:
            PUSH PSW

            MOV C, P3.2 ; BIT 0 ; 每3周期一bit
            MOV TEMP.0, C

            MOV C, P3.2 ; BIT 1
            MOV TEMP.1, C

            MOV C, P3.2 ; BIT 2
            MOV TEMP.2, C

            MOV C, P3.2 ; BIT 3
            MOV TEMP.3, C

            MOV C, P3.2 ; BIT 4
            MOV TEMP.4, C

            ;...
            XCH A, R0_BAK
            XCH A, R0
            XCH A, TEMP
            MOV @R0, A
            INC R0
            MOV A, TEMP
            XCH A, R0
            XCH A, R0_BAK
            POP PSW
            ACALL INT_RET
            DEC SP
            DEC SP
INT_RET:
            RETI



4樓: >>參與討論
renmingcan
這樣應(yīng)該可以的!
這樣應(yīng)該可以的!但是沒有發(fā)送起始標(biāo)志位!

* - 本貼最后修改時間:2005-1-11 20:34:51 修改者:renmingcan

5樓: >>參與討論
renmingcan
是不是可以才兩個單片機(jī)之間加一個D觸發(fā)器?
 
6樓: >>參與討論
汽車電子
模擬UART就行了
 
7樓: >>參與討論
crazyeda
好苛刻,不給用定時器
如果你的程序結(jié)構(gòu)是用節(jié)拍發(fā)生器產(chǎn)生中斷定時掃描消息寄存器,可以順便掃描一下口線,我是說接收部分,建議采用脈寬編碼,這樣利于位同步

8樓: >>參與討論
Wxy8030
苛刻只是對主機(jī)而言——
從機(jī)的資源可以隨便用,,,

做這個的主要目的是我們的維修人員在現(xiàn)場維修時,常常為了分析錯誤浪費大量的時間,所以我們的主管就想——能不能利用一個單片機(jī)的IO,在主循環(huán)里(主循環(huán)肯定大于100uS,但會控制在100MS之內(nèi))把系統(tǒng)自檢的一些狀態(tài)發(fā)出來,,,然后我們自己做一個顯示板(一個單片機(jī)+數(shù)碼管),需要維修時到現(xiàn)場往原來的電路板上一插,可以為分析現(xiàn)場的問題提供一些幫助、、、、、、、、、

我的思路是這樣的——主循環(huán)每循環(huán)一次就發(fā)送一個BIT,每一個位以一個1-2uS的低電平開頭,然后發(fā)送位是0時就保持低電平,如果是1就馬上拉高,每一個字節(jié)發(fā)送完了后有一個終止位,終止位就是1-2uS后發(fā)送一個低電平,然后10uS后變成高發(fā)出、、、這樣從機(jī)利用外部中斷來檢測數(shù)據(jù),如果下跳沿后2uS和10uS電平相同則為數(shù)據(jù),讀取并保存,不同則為終止位、、、這樣主機(jī)在發(fā)送終止位時占用了10uS的時間,別的占用的資源很少,我覺得似乎可以接受的、、、

* - 本貼最后修改時間:2005-1-12 10:55:26 修改者:Wxy8030

9樓: >>參與討論
crazyeda
你這不就是UART通信么
波特率怎么適應(yīng)呢你,還不如按我說的用脈寬編碼,寬脈是0,窄脈是1,自己就可以位同步,接收端程序里用狀態(tài)機(jī)轉(zhuǎn)換的結(jié)構(gòu),這個你參考一下51/AVR的UART口硬件狀態(tài)機(jī)轉(zhuǎn)換的模式就可以了,很簡單的

10樓: >>參與討論
williamL
一點建議
由于主機(jī)發(fā)送的太快只有幾個us,從機(jī)就會忙于中斷接收數(shù)據(jù),顯示根本沒時間,并且中斷來的太快,中斷處理程序的時間我想肯定會比中斷的間隔時間常,所以這個系統(tǒng),還是要考慮從機(jī)的處理速度的,個人認(rèn)為要達(dá)到這個功能,主機(jī)沒有必要發(fā)那么快,并且對于這個系統(tǒng)應(yīng)用對象來說,還是加校驗碼比較保險點,確保數(shù)據(jù)的正確性

11樓: >>參與討論
Wxy8030
——
主循環(huán)每循環(huán)一次才發(fā)送一個位,應(yīng)該可以接受啊

思路基本跟樓上的“寬脈是0,窄脈是1”相同,寬脈沖是大于100uS的低電平,窄脈沖是一個1-2uS的低電平,而同步位我采用的是一個10-15uS左右的低電平...

* - 本貼最后修改時間:2005-1-12 11:06:28 修改者:Wxy8030

12樓: >>參與討論
dengm
寬脈沖是6uS的高電平,窄脈沖是一個3uS的高電平,周期>30uS
gate console timer 接收

13樓: >>參與討論
cf100
那一串NOP不算軟件延時?
請問:那幾個NOP接在一起算什么延時?

14樓: >>參與討論
rong820913
你可以試試
用從機(jī)發(fā)脈沖,主機(jī)檢測到脈沖,主機(jī)回脈沖,再改變電平,從機(jī)讀電平(所有操作在一個I/O口上完成)應(yīng)該可以

15樓: >>參與討論
edifier
用spi吧,自動處理
 
16樓: >>參與討論
st963432
使用i2c試試
 
17樓: >>參與討論
hotpower
單線通信的可靠在于協(xié)議制訂的完善
dengm同志只追求了速率,忽略了長線傳輸信號變異等問題...

總之,任何單線(包括無線,紅外等)傳輸必須有同步問題...

UART靠啟始位(下降沿后一定寬度的低電平即波特率)
SPI靠SS(CS)片選(高/低電平選通)
I2C靠START信號(在SCL高時,SDA跳低)
1-Wire靠復(fù)位(同步),寫'1'(讀),寫'0'
紅外有高低電平比
也有以低電平寬度表示START,'0','1',而與高電平的寬度無關(guān)的...

所以本人認(rèn)為單線通信的可靠在于協(xié)議制訂的完善而不在與對速率的刻意追求...

個人意見...

* - 本貼最后修改時間:2005-1-16 1:13:36 修改者:hotpower

18樓: >>參與討論
dengm
樓主在追求速率,開始要求1byte/100指令周期,后改為1bit/100指令
 
19樓: >>參與討論
hotpower
加速8倍???
 
20樓: >>參與討論
yunwuzhong
1線協(xié)議
 
21樓: >>參與討論
vryyw0719
詳情
 
22樓: >>參與討論
mailbert
同意用模擬UART
 
23樓: >>參與討論
gtzs
用maxim-dallas的1-wire協(xié)議
從速度和可靠性上都可以保證的

24樓: >>參與討論
Wxy8030
呵呵......對不起,俺描述有誤......
1、俺追求的不是速度,而是占用資源最少....
1BYTE/100周期,我的意思是指發(fā)送一個字節(jié)占用CPU的運行時間盡量控制在100個指令周期,不是說每100周期必須發(fā)送一個字節(jié),,,數(shù)據(jù)的更新可以0.5S左右(也就是說只要在0.5S內(nèi)想辦法把8個BIT發(fā)送出去就行了)
2、兩個CPU靠的很近,這根通信線不會超過25cm

25樓: >>參與討論
abc2001
看看1820吧,也許對你會有所幫助.
 
26樓: >>參與討論
sun0_liang
你的單片機(jī)還有定時器資源嗎?
就你的要求——如果有,那你也太菜了——主機(jī)直接模擬串口輸出即可。

* - 本貼最后修改時間:2005-1-17 9:49:23 修改者:sun0_liang

27樓: >>參與討論
sun0_liang
看到_不許用定時器,_
直接模擬又占用系統(tǒng)時間。
問一下,你的指令周期=?us.

28樓: >>參與討論
mailbert
1-wire協(xié)議是雙向的
如果不考慮擴(kuò)展,我認(rèn)為單向傳輸用RS-232的格式最簡單

29樓: >>參與討論
wswh2o
這樣行不行?
接上你的顯示模塊后,可以向系統(tǒng)發(fā)送一個請求,系統(tǒng)收到請求后把參數(shù)發(fā)給顯示模塊,平時只要檢測這個端口的狀況就可以了,不會消耗很多系統(tǒng)時間。

30樓: >>參與討論
wswh2o

接上你的顯示模塊后,可以向系統(tǒng)發(fā)送一個請求,系統(tǒng)收到請求后把參數(shù)發(fā)給顯示模塊,平時只要檢測這個端口的狀況就可以了,不會消耗很多系統(tǒng)時間。

31樓: >>參與討論
laper
奇怪,不用定時器可以實現(xiàn)1-wire 么?
 
32樓: >>參與討論
laper
你的主循環(huán)可以嚴(yán)格保證周期性么?贊同脈寬調(diào)制方法
啟動位,數(shù)據(jù)位還有其它什么bit都可以用不同的脈寬來表示
個人覺得這樣比較的好

33樓: >>參與討論
阿南
雙機(jī)用同樣的時鐘,模擬UART
 
34樓: >>參與討論
cf100
那就用串行移位就可以了
而且速度極快,但前提是二個MCU共用同一個晶振。

35樓: >>參與討論
wsq268
用單線i2c,自己定義好協(xié)議就行啦
 
36樓: >>參與討論
cx3333
中斷口可以否?
 
37樓: >>參與討論
水管工
沒看到自己的帖子,如果重復(fù)請斑竹刪除
平時該IO為0,有信號發(fā)送時,如果是0,就發(fā)一個脈沖(高,低),接受端可以檢測上升沿。如果是1,就發(fā)兩個連續(xù)脈沖(高,低,高,低)。脈沖寬度可以根據(jù)監(jiān)測方式來調(diào)整,要求遠(yuǎn)小于主循環(huán)周期。這樣,當(dāng)收到上升沿時,如果是兩個間隔很短的觸發(fā)就認(rèn)為是1,否則就是零

至于冗余等可自己設(shè)計。兩套系統(tǒng)不需要共享電源、時鐘等

38樓: >>參與討論
dengm
水管工 方案最好,可從51的T0(P3。4)INPUT
 
39樓: >>參與討論
winhiwang
類似紅外遙控的編碼方案
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
華邦W78E52B老化后失效?
stc51RC/RD系列單片機(jī) 片內(nèi)E2PROM 大家用的怎么樣?
一個很奇怪的問題,為什么會比原來小9%?
各位大蝦幫忙推薦帶10位AD的51單片機(jī)。在線等
請教:各位大俠,誰有74ls165芯片資料。
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號