Re: [問題] 我想用C51模擬串列式輸出

看板Electronics作者 (豆腐)時間19年前 (2006/12/08 22:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《icetofux (豆腐)》之銘言: : MOV R0,#8 ;R0為右旋8次用的計數暫存器 : MOV A,R1 ;R1是從PORT1讀入的數值 : LOOP: MOV R2,A ;將目前右旋結束後的值(8-BIT)保留於R2 : ANL A,#00000001 ;把A中的值與00000001做AND並丟回A : CALL CHECK ;進入CHECK副程式 : MOV A,R2 ;將剛剛右旋結束的值(8-BIT)讀回A : RR A ;右旋A中的值 : DJNZ R0,LOOP ;計數暫存器R0的值-1如果不是0(還沒轉8次)回到LOOP : . : . : . : CHECK: JZ LOW ;如果暫存器A為0跳至LOW : JNZ HIGH ;如果暫存器A不為0(是1)跳至HIGH : HIGH: SEBT P2.1 ;讓PORT2.1為1 : LOW: CLR P2.1 ;讓PORT2.1為0 : RET ;回到主程式 處理完資料輸出後,接著問題就很簡單了,我還需要一個clock output來讓接收端 讀取資料,依照硬體設計者的想法,傳送資料主要是靠一個data output及一個clock output來處理,當clock為上升緣時,則接收data output放出的資料,大致上像是這 樣: ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ clock ─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └── 0 0 1 1 0 0 1 1 data ┌───────┐ ┌───────┐ ────────┘ └───────┘ └─ 上面靠著大家的幫 忙,已經把data output(PORT2.1)架構描繪出來了,clock output基本上也不難, 若要產生方波,只需要重複對clock output做clr->delay->sebt->delay重複動作即 可,假設我的clock output為PORT2.0,程式大致上是: CLOCK: CLR P2.0 CALL DELAY SEBT P2.0 CALL DELAY JMP CLOCK 即可產生從負緣開始,時間長2*DELAY的方波,然而程式整合上卻發現了一點小問題: 程式的執行是由上往下執行的,我要如何讓兩個完全不同動作的程式片段同時執行呢? 先呼叫CLOCK程式段的話,如果不結束CLOCK就不會向下執行DATA OUTPUT程式段,如果 結束了CLOCK,資料又因為沒有CLOCK而沒辦法被後端應用線路讀入,請問有辦法讓兩個 程式段"同時"進行嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.85.215
文章代碼(AID): #15UNQeow (Electronics)
討論串 (同標題文章)
文章代碼(AID): #15UNQeow (Electronics)