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

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

Rank: 5Rank: 5

狀態︰ 離線
21
發表於 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   查看全部評分

Rank: 3Rank: 3

狀態︰ 離線
22
發表於 2011-12-19 12:17:16 |只看該作者
感謝各位大大的鼎力相助,你們的解說比上課學到的還多,begti20大大提供的程式解說太神奇我居然都了解,請受小弟一拜
剛開始做對程式都不清楚,程式也是東拼西湊到處"借"來的,經過大大們指點解說受益良多,各位大德請受小弟第二拜
.......第三拜我掰不開來了....總之感謝了

點評

begti20  會員互動討論,大家都在受益,大家都在學習,大家都在成長,彼此彼此別客氣.  發表於 2011-12-22 02:51:21
已有 1 人評分SOGO幣 收起 理由
又靜 + 5 真誠與會員互動交流討論,值得肯定.

總評分: SOGO幣 + 5   查看全部評分

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


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

GMT+8, 2024-11-22 18:50

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