找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5282|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)與protues控制交通燈 匯編語言程序和仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
簡易的使用PROTUES軟件與單片機(jī)匯編語言控制交通燈的實(shí)驗(yàn)


匯編語言單片機(jī)程序:
  1. ORG   0000H
  2. AJMP  MAIN
  3. ORG   000BH        //T0中斷入口地址
  4. LJMP  INT_T0
  5. ORG   0030H
  6. RRR   EQU  0F6H         ;紅紅都亮
  7. GR   EQU  0DEH   ;東西綠燈亮,南北紅燈亮
  8. YR   EQU  0EEH   ;東西黃燈亮,南北紅燈亮
  9. RG   EQU  0F3H   ;東西紅燈亮,南北綠燈亮
  10. RY   EQU  0F5H   ;東西紅燈亮,南北黃燈亮
  11. EW_TIME EQU R0         ;東西方向時(shí)間
  12. SN_TIME EQU R1         ;南北方向時(shí)間

  13. MAIN:        //I/0口,寄存器初始化
  14.     MOV P1,#RRR
  15.         MOV P3,#0FFH
  16.         LCALL DELAY_1S       
  17.         MOV R2,#20        //定時(shí)計(jì)數(shù)器T0定時(shí)50ms,循環(huán)20次獲得一秒定時(shí)
  18.         MOV 50H,#20          //紅燈時(shí)間
  19.         MOV 51H,#16          //綠燈時(shí)間
  20. /*************T0初始化**************/        
  21.         MOV        TMOD,#11H        //定時(shí)計(jì)數(shù)器T0,模式1,16位
  22.         MOV        TH0,#3CH        //50ms定時(shí)初值
  23.         MOV        TL0,#0B0H
  24.         SETB        EA        //開總中斷
  25.         SETB        ET0        //開T0中斷
  26.         SETB        TR0        //T0啟動
  27.    
  28.        
  29. /**********************************
  30. 狀態(tài)1:
  31. 東西綠燈亮16s
  32. 南北紅燈亮20s
  33. **********************************/
  34. START:        MOV P1 , #GR
  35.         MOV EW_TIME,50H                //東西方向倒計(jì)時(shí)初值15
  36.         MOV SN_TIME,51H                //南北方向倒計(jì)時(shí)初值12
  37. D0:        LCALL  DISPLAY            //調(diào)用顯示子程序
  38.         CJNE   SN_TIME,#00H,D0

  39. /**********************************
  40. 狀態(tài)2:
  41. 東西黃燈閃爍4S
  42. 南北還是紅燈
  43. **********************************/
  44. MOV A,50H
  45. SUBB A,51H
  46. MOV  SN_TIME,A        //黃燈倒計(jì)時(shí)初值4
  47. MOV P1 , #YR
  48. D1:LCALL        DISPLAY
  49. CJNE        SN_TIME,#03H,D1
  50. SETB P1.4                    //閃爍
  51. D2:LCALL        DISPLAY
  52. CJNE        SN_TIME,#02H,D2
  53. CLR P1.4
  54. D3:LCALL        DISPLAY
  55. CJNE        SN_TIME,#01H,D3
  56. SETB P1.4
  57. D4:LCALL        DISPLAY
  58. CJNE        SN_TIME,#00H,D4
  59. /**********************************
  60. 狀態(tài)3:
  61. 南北綠燈亮12s
  62. 東西紅燈亮15s
  63. **********************************/  
  64. MOV P1 , #RG            
  65. MOV  SN_TIME,50H
  66. MOV  EW_TIME,51H
  67. D5:LCALL   DISPLAY        
  68. CJNE  EW_TIME,#00H,D5
  69. /**********************************
  70. 狀態(tài)4:
  71. 東西持續(xù)紅燈
  72. 南北黃燈亮3s
  73. **********************************/  
  74. MOV P1 , #RY      
  75. MOV A,50H
  76. SUBB A,51H
  77. MOV  EW_TIME,A        //東西綠燈滅,黃燈倒計(jì)時(shí)初值3s
  78. MOV  P1,#RY
  79. D6:LCALL        DISPLAY
  80. CJNE        SN_TIME,#03H,D6
  81. SETB P1.1                    //閃爍
  82. D7:LCALL        DISPLAY
  83. CJNE        SN_TIME,#02H,D7
  84. CLR P1.1
  85. D8:LCALL        DISPLAY
  86. CJNE        SN_TIME,#01H,D8
  87. SETB P1.1
  88. D9:LCALL        DISPLAY
  89. CJNE        SN_TIME,#00H,D9
  90. /**********************************/
  91.      
  92. LJMP        START       //返回初始狀態(tài)


  93. //********顯示子程序*******//
  94. DISPLAY:MOV DPTR,#TABLE
  95.         MOV A,EW_TIME
  96.         MOV B,#10
  97.         DIV AB
  98.         MOVC A,@A+DPTR
  99.         MOV P3,#0FFH
  100.         MOV P2,A
  101.         MOV P3,#0FEH
  102.         LCALL        DELAY_5MS
  103.         MOV A,B
  104.         MOVC A,@A+DPTR
  105.         MOV P3,#0FFH
  106.         MOV P2,A
  107.         MOV P3,#0FDH
  108.         LCALL        DELAY_5MS
  109.         MOV A,SN_TIME
  110.         MOV B,#10
  111.         DIV AB
  112.         MOVC A,@A+DPTR
  113.         MOV P3,#0FFH
  114.         MOV P2,A
  115.         MOV P3,#0FBH
  116.         LCALL        DELAY_5MS
  117.         MOV A,B
  118.         MOVC A,@A+DPTR
  119.         MOV P3,#0FFH
  120.         MOV P2,A
  121.         MOV P3,#0F7H
  122.         LCALL        DELAY_5MS
  123.         RET


  124. //******T0中斷子程序*******//
  125. INT_T0: DJNZ  R2,NT0        //計(jì)數(shù)寄存器不為0則跳轉(zhuǎn),T0重新賦初值
  126.         MOV   R2,#20       //計(jì)數(shù)器重新賦值
  127.         DEC   EW_TIME            //南北方向倒計(jì)時(shí)數(shù)值減1
  128.         DEC   SN_TIME           //東西方向倒計(jì)時(shí)數(shù)值減1
  129. NT0:    MOV  TH0,#3CH          //T0賦50ms初值
  130.         MOV  TL0,#0B0H
  131.         SETB TR0             //啟動T0
  132.         RETI        


  133. TABLE:DB 3FH ,06H, 5BH ,4FH ,66H ,6DH ,7DH ,07H ,7FH ,6FH  //段碼

  134. DELAY_5MS:MOV   TMOD,#11H        //定時(shí)計(jì)數(shù)器T1,模式1,16位
  135.         MOV   TH1,#0F8H;#0D8H;      //5ms定時(shí)初值
  136.         MOV   TL1,#2FH;#0F0H;
  137.         SETB  TR1        //T1啟動       
  138. DD1:        JBC TF1 ,TRE
  139.         AJMP DD1
  140. TRE:        RET

  141. DELAY_1S:MOV R3 , #250
  142. DD2:        LCALL DELAY_5MS
  143.         DJNZ R3 ,DD2
  144.         RET

  145. END        
復(fù)制代碼


新建文件夾.zip

55.64 KB, 下載次數(shù): 53, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:272704 發(fā)表于 2018-1-7 20:36 | 只看該作者
這里面能加一個(gè)緊急處理裝置嗎?加個(gè)按鍵全變紅燈
回復(fù)

使用道具 舉報(bào)

板凳
ID:288294 發(fā)表于 2018-3-7 09:57 | 只看該作者
計(jì)時(shí)太慢了 怎么改比較好
回復(fù)

使用道具 舉報(bào)

地板
ID:288294 發(fā)表于 2018-3-7 18:32 | 只看該作者
徐叨叨 發(fā)表于 2018-3-7 09:57
計(jì)時(shí)太慢了 怎么改比較好

我解決啦 改了計(jì)時(shí)初值和循環(huán)次數(shù)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表