SOGO論壇
  登入   註冊   找回密碼
發表人: 2237076
列印 上一主題 下一主題

[問題求助] 8051 紅綠燈模擬 [複製連結]

Rank: 5Rank: 5

狀態︰ 離線
1
發表於 2011-12-9 05:51:49 |顯示全部樓層
本帖最後由 begti20 於 2011-12-9 06:03 編輯

簡易的紅綠燈控制,不外乎輸出燈號及延遲時間
P1來控制6個LED,P10~P12控制一組分別是G.Y.R三色,p13~p15控制另一組

以你的程式來看,錯誤相當多,至少我沒有用過可以組譯你的程式的組譯程式

Start:
        mov        a,#100001b
        outl        p1,a


        mov        a,#100001b ; 縱向通行
        outl        p1,a              ; 輸出
1. 8051 沒有outl的指令
2. 兩列可以改為 mov p1,#100001b



       mov        r4,#500
        call        Timer


       mov        r4,#500  ; 延遲500*0.02 SEC
        call        Timer
1. R4是8bit的Register,只能儲存的是0~255的值
2. 修改timer成延遲0.2sec的副程式,R4=50即可



;******************************
; Delay Time=(R4)*0.02 SEC.
;******************************
Timer:
        mov        a,#256-250
        mov        t,a
        strt        t
L:        jtf        X1
        jmp        L

1. 如果您想用timer/counter計算延遲時間,您沒有宣告計時計數器的操作模式
2. 您可以改用指令loop的方式,製作延遲副程式
3. 8051沒有t暫存器,不能使用它
4. 請參考http://elearning.stut.edu.tw/mechelec/ch6.htm


建議:您在寫程式時,應附加註解,方便閱讀及除錯

利用8051做簡易的紅綠燈控制,並不困難,加油

已有 1 人評分威望 收起 理由
又靜 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

Rank: 5Rank: 5

狀態︰ 離線
2
發表於 2011-12-10 21:33:22 |顯示全部樓層
sorry!! 很久很久沒有碰MCS-48系列,而很直接的以現行的MCS-51系列,果斷的說指令錯誤, 也誤導了alphi,真不好意思,又靜版主真厲害,佩服之至.

Rank: 5Rank: 5

狀態︰ 離線
3
發表於 2011-12-16 05:41:05 |顯示全部樓層
本帖最後由 begti20 於 2011-12-16 05:49 編輯
  1. ; 交通號誌紅綠燈模擬控制程式
  2. ;                          begti20 2011.12.16 AM.
  3. ; MCU:Atmel AT89S51
  4. ; P0的I/O規劃
  5. ; 第一組紅綠燈(縱向) P0.2=紅燈,P0.1=黃燈,P0.0=綠燈
  6. ; 第二組紅綠燈(橫向) P0.5=紅燈,P0.4=黃燈,P0.3=綠燈
  7. ;
  8. ; 燈號流程變化表(觀察無倒數計秒的路口紅綠燈)
  9. ;        (橫向)  (縱向)  時間 
  10. ; STEP NC NC R2 Y2 G2 R1 Y1 G1  SEC   說明
  11. ;  1  0 0 1 0 0 0 0 1  20   縱向通行20秒
  12. ;                     STEP2-3重複三次(綠燈閃爍三次)
  13. ;  2    0 0 1 0 0 0 0 0  .5   縱向綠燈滅0.5秒
  14. ;  3    0 0 1 0 0 0 0 1  .5   縱向綠燈亮0.5秒
  15. ;  4    0 0 1 0 0 0 1 0  2    縱向黃燈亮2秒
  16. ;  5    0 0 0 0 1 1 0 0  20   橫向通行20秒
  17. ;                     STEP6-7重複三次(綠燈閃爍三次)
  18. ;  6    0 0 0 0 0 1 0 0  .5   橫向綠燈滅0.5秒
  19. ;  7    0 0 0 0 1 1 0 0  .5   橫向綠燈亮0.5秒
  20. ;  8  0 0 0 1 0 1 0 0  2    橫向通行20秒 
  21. ;  9  跳回STEP 1進入下一次縱向通行

  22.         
  23. LED:    REG     P0                    ;宣告P0接6個LED
  24.         ORG     0                     ;宣告程式起始位置
  25. STEP1:  MOV     LED,#00100001B        ;縱向通行20秒
  26.         CALL    DT20                  
  27.         MOV     R3,#3                 ;縱向綠燈閃爍三次
  28. STEP2:  MOV     LED,#00100000B        ;縱向綠燈滅0.5秒
  29.         CALL    DT05                  
  30.         MOV     LED,#00100001B        ;縱向綠燈亮0.5秒
  31.         CALL    DT05                  
  32.         DJNZ    R3,STEP2              ;STEP2-3重複三次(閃三次)
  33.         MOV     LED,#00100010B        ;縱黃亮2秒
  34.         CALL    DT2                  
  35.         MOV     LED,#00001100B        ;橫向通行20秒
  36.         CALL    DT20
  37.         MOV     R3,#3                 ;橫向綠燈閃爍3次
  38. STEP6:  MOV     LED,#00000100B        ;橫向綠燈滅0.5秒
  39.         CALL    DT05                  
  40.         MOV     LED,#000011000B       ;橫向綠燈亮0.5秒
  41.         CALL    DT05
  42.         DJNZ    R3,STEP6              ;重複3次
  43.         MOV     LED,#00010100B        ;橫向黃燈亮2秒
  44.         CALL    DT2
  45.         JMP     STEP1                 ;跳回STEP1,再次縱向通行

  46. DT20:   MOV     R4,#100              ;設定R4延遲20秒的參數
  47.         JMP     DTN

  48. DT05:   MOV     R4,#5                 ;設定R4延遲0.5秒的參數
  49.         JMP     DTN

  50. DT2:    MOV     R4,#20                ;設定R4,2秒的參數
  51.         JMP     DTN

  52. DTN:    CALL    DT01                  ;設定R4*0.1秒的時間
  53.         DJNZ    R4,DTN
  54.         RET


  55. DT01:   MOV     R6,#250               ;延遲0.1秒的副程式
  56. T01:    MOV     R7,#200
  57.         DJNZ    R7,$
  58.         DJNZ    R6,T01
  59.         RET

  60.         END                           ;宣告程式結束
複製代碼
寫程式說明比寫程式花更多的時間,好無聊!

終於完成了,以供參考,請多指教

點評

alphi  讓人可以很清楚知道紅綠燈的動作原理.讓我獲益良多  發表於 2011-12-16 10:52:44
已有 1 人評分威望 收起 理由
又靜 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-6-3 03:30

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部