導航:首頁 > 編程語言 > 單片機紅綠燈匯編編程

單片機紅綠燈匯編編程

發布時間:2022-04-12 15:40:49

『壹』 用51單片機製作紅綠燈,要求按鍵能控制整個電路的啟動和停止,用匯編語言怎麼編寫程序

交通路口紅綠燈自動控制器電路圖 如圖所示為交通路口紅綠燈自動控制電路。該控制器主要由四塊555(IC2~IC5)和一些阻容元件組成的四級單穩態延時電路首尾相連而成。輸入的8V電壓經78M05穩壓後為555提供VDD=+5V的電源電壓。 當剛接通電源時,觸發脈沖經IC1(CD4011)門電路和R1、C1延時,再經C2、R22微分後加到IC2②腳,觸發IC2輸出高電平,進入暫穩態,其暫穩態定時時間長短取決於K1的位置,延時td=1.1RC6,設定時間分別為60秒、45秒、30秒。暫穩態結束時,IC2③腳為低電平,其經C3、R23微分後,下降沿又觸發IC3,形成第二級單穩態延時。如此依次觸發定時,完成綠色燈亮-黃色燈亮(8秒、10秒、12秒)-紅色燈亮(60秒、45秒、30秒)的循環周期。 本控制器通過四級電路首尾相接,依次延時觸發,使交通燈依次出現綠-黃-紅(色)信號,指揮行人和車輛在十字路I=1有秩序地通行(綠)-提醒注意(黃)-禁止通行(紅)。 看看這個有用嗎?

『貳』 51單片機 交通燈匯編程

匯編語言編程交通指示燈 供參考
http://..com/question/511850150.html

『叄』 單片機匯編語言設計紅綠燈~(很簡單)看圖!

http://blog.163.com/asm_c/blog/static/248203113201358090570/

參考。

『肆』 單片機交通燈的匯編程序

NAME T3 ;I/O口擴展實驗一
PORT EQU 0CFA0H ;片選地址CS0
CSEG AT 0000H
LJMP START
CSEG AT 4100H
START: MOV A,#11H ;兩個紅燈亮,黃燈、綠燈滅
ACALL DISP ;調用273顯示單元(以下雷同)
ACALL DE3S ;延時3秒
LLL: MOV A,#12H ;東西路口綠燈亮;南北路口紅燈亮
ACALL DISP
ACALL DE10S ;延時10秒
MOV A,#10H ;東西路口綠燈滅;南北路口紅燈亮
ACALL DISP
MOV R2,#05H ;R2中的值為黃燈閃爍次數
TTT: MOV A,#14H ;東西路口黃燈亮;南北路口紅燈亮
ACALL DISP
ACALL DE02S ;延時0.2秒
MOV A,#10H ;東西路口黃燈滅;南北路口紅燈亮
ACALL DISP
ACALL DE02S ;延時0.2秒
DJNZ R2,TTT ;返回TTT,使東西路口;黃燈閃爍五次
MOV A,#11H ;兩個紅燈亮,黃燈、綠燈滅
ACALL DISP
ACALL DE02S ;延時0.2秒
MOV A,#21H ;東西路口紅燈亮;南北路口綠燈亮
ACALL DISP
ACALL DE10S ;延時10秒
MOV A,#01H ;東西路口紅燈亮;南北路口綠燈滅
ACALL DISP
MOV R2,#05H ;黃燈閃爍五次
GGG: MOV A,#41H ;東西路口紅燈亮;南北路口黃燈亮
ACALL DISP
ACALL DE02S ;延時0.2秒
MOV A,#01H ;東西路口紅燈亮;南北路口黃燈滅
ACALL DISP
ACALL DE02S ;延時0.2秒
DJNZ R2,GGG ;返回GGG,使南北路口;黃燈閃爍五次
MOV A,#03H ;兩個紅燈亮,黃燈、綠燈滅
ACALL DISP
ACALL DE02S ;延時0.2秒
JMP LLL ;轉LLL循環
DE10S: MOV R5,#100 ;延時10秒
JMP DE1
DE3S: MOV R5,#30 ;延時3秒
JMP DE1
DE02S: MOV R5,#02 ;延時0.2秒
DE1: MOV R6,#200
DE2: MOV R7,#126
DE3: DJNZ R7,DE3
DJNZ R6,DE2
DJNZ R5,DE1
RET
DISP: MOV DPTR,#PORT ;273顯示單元
CPL A
MOVX @DPTR,A
RET
END
你看看行不行 如果不行你自己再稍微改一下吧 反正大概就這些了
希望對你能有所幫助。

『伍』 c51單片機控制交通燈要求用匯編語言

// 51單片機控制交通燈要求用匯編語言,模擬實例,可以參考一下

SNF EQU 00H ; 南北通行標志位

EWF EQU 01H ; 東西通行標志位

URF EQU 02H ; 緊急事件標志位

ORG 0000H

LJMP MAIN ; 上電轉主程序

ORG 000BH ; 定時中斷入口

LJMP DSZD

ORG 0003H ; 緊急中斷入口

LJMP URZD

ORG 0030H

MAIN: LCALL INIT ; 調用初始化子程序

LOOP: LCALL DIS ; 循環執行顯示子程序

AJMP LOOP

; *** *** *** 初始化程序

INIT: SETB SNF

SETB EWF

SETB URF

MOV R2,#20 ; 定時器中斷20次為1s

MOV TMOD,#01H ; 初始化定時器

MOV TL0,#0B0H

MOV TH0,#3CH

SETB EA ; 開定時中斷與緊急中斷

SETB ET0

SETB TR0

SETB EX0

SETB IT0 ; 設置中斷程式控制方式

MOV DPTR,#TAB ; 數值首地址放入DPTR中

MOV 40H,#40 ; 東南西北通行時間設置

MOV 41H,#40

MOV 30H,#40 ; 通行時間初始化

MOV 31H,#60

MOV P0,#4CH ; 初始化時南北通行並把交通燈狀態分別放在32H和33H中

MOV 32H,#4CH

MOV P2,#15H

MOV 33H,#15H

RET

; *** *** *** 顯示子程序

DIS: MOV P3,#0DFH ; 選中南北方向的十位數碼管

MOV A,30H ; 把顯示數據送人數碼管顯示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A ;

LCALL D1MS

MOV P3,#0EFH ; 選中南北方向的個位數碼管

MOV A,B ; 送入數碼管顯示

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#7FH ; 選中第東西方向的十位數碼管

MOV A,31H ; 送入數碼管顯示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#0BFH ; 選中第東西方向的個位數碼管

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

SETB P3.0

SETB P3.1

JNB P3.0,DIS_S ; 查詢是否第一個按鍵按下

JNB P3.1,DIS_E ; 查詢是否第二個按鍵按下

AJMP DIS_R ; 沒有鍵按下則返回

DIS_S:LCALL D5MS ; 按鍵去抖

JNB P3.0,DIS_SN

AJMP DIS_R

DIS_SN:MOV 40H,#50 ; 對通行時間從新分配,南北通行時間加長

MOV 41H,#30

AJMP DIS_R

DIS_E:LCALL D5MS ; 按鍵去抖

JNB P3.1,DIS_EW

AJMP DIS_R

DIS_EW:MOV 40H,#30 ; 東西通行時間加長

MOV 41H,#50

DIS_R:RET

; *** *** *** 定時中斷處理程序

DS_C: LJMP DS_R ; 接力跳轉

DSZD: PUSH ACC ; 保護現場

PUSH PSW

CLR TR0 ; 關定時器及中斷標志位並重新賦值

CLR TF0

MOV TL0,#0B0H

MOV TH0,#3CH

DJNZ R2,DS_C ; 判斷1m時間是否到達

MOV R2,#20 ; 到達重新賦值

DEC 30H ; 南北方向通行時間減一

MOV A,30H ; 把減一後的時間送入顯示存儲單元

; *** *** *** 南北通行到達最後4秒時黃燈閃爍

DS_10:CJNE A,#4,DS_11 ; 如果通行時間剩餘4秒

JNB SNF,DS_11 ; 判斷是否是南北通行

MOV P0,#8AH

MOV 32H, #8AH ; 把交通燈狀態存入存儲單元(後面類似)

DS_11:CJNE A,#3,DS_12 ; 不是剩餘3秒,返回

JNB SNF,DS_12 ; 不是南北通行時間,返回

MOV P0,#88H

MOV 32H, #88H

DS_12:CJNE A,#2,DS_13

JNB SNF,DS_13

MOV P0,#8AH

MOV 32H, #8AH

DS_13:CJNE A,#1,DS_14

JNB SNF,DS_14

MOV P0,#88H

MOV 32H, #88H

; *** *** ***

DS_14:JNZ DS_NE ; 通行時間沒有結束轉向改變東西方向的數碼管

CPL SNF ; 如果通行時間結束則對標志位取反

JNB SNF,DS_1 ; 判斷是否南北通行

MOV 30H,40H ; 是,點亮相應的交通燈

MOV P0,#4CH

MOV 32H,#4CH ; 存儲交通燈狀態

MOV P2,#15H

MOV 33H, #15H ; 存儲交通燈狀態

DS_NE:DEC 31H ; 東西方向通行時間減一

MOV A,31H ; 把通行剩餘時間送入顯示存儲單元

; *** *** *** 東西方向通行時間剩餘4秒鍾黃燈閃爍(程序注釋與南北方向類似 略)

DS_20:CJNE A,#4,DS_21

JB EWF,DS_21

MOV P0,#51H

MOV 32H, #51H

DS_21:CJNE A,#3,DS_22

JB EWF,DS_22

MOV P0,#41H

MOV 32H, #41H

DS_22:CJNE A,#2,DS_23

JB EWF,DS_23

MOV P0,#51H

MOV 32H, #51H

DS_23:CJNE A,#1,DS_24

JB EWF,DS_24

MOV P0,#41H

MOV 32H, #41H

; *** *** ***

DS_24:JNZ DS_R ; 東西方向時間沒有結束,返回

CPL EWF ; 對通行狀態取反

JNB EWF,DS_2 ; 東西方向通行時間到來,跳轉

MOV 31H,#80 ; 東西方向通行結束,重新顯示時間

MOV P0,#89H ; 點亮相應的交通燈

MOV 32H, #89H

MOV P2,#29H

MOV 33H, #29H

AJMP DS_R

DS_1: MOV 30H,#80 ; 南北通行時間結束,重新對顯示存儲單元賦值

MOV P0,#89H ; 執行轉彎狀態1

MOV 32H, #89H

MOV P2,#26H

MOV 33H, #26H

AJMP DS_NE

DS_2: MOV 31H,41H ; 東西方向開始通行,賦值予顯示存儲單元

MOV P0,#61H ; 點亮相應的交通燈

MOV 32H, #61H

MOV P2,#15H

MOV 33H, #15H

DS_R: SETB TR0

POP PSW ; 恢復現場

POP ACC

RETI

; *** *** *** 緊急中斷處理程序

URZD: PUSH ACC ; 保護現場

PUSH PSW

CLR IE0 ; 清除中斷標志位

CLR TR0 ; 關定時器

CPL URF ; 緊急事件標志位

JB URF,UR_CON ; 緊急結束;跳轉

MOV P0,#49H ; 各路口燈全顯示紅燈亮

MOV P2,#15H

AJMP UR_R

UR_CON:SETB TR0 ; 恢復正常交通

MOV A,32H

MOV P0,A

MOV A,33H

MOV P2,A

UR_R: POP PSW ; 恢復現場

POP ACC

RETI

; *** *** *** 查表指令0,1,2,3,4,5,6,7,8,9

TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH

DB 7DH, 07H, 7FH, 6FH

; *** *** *** 延時5ms與1ms

D5MS: MOV R7,#5

D1MS: MOV R7,#10

MOV R6,#50

L1: DJNZ R6,$

DJNZ R7,L1

RET

『陸』 單片機交通燈匯編語言程序,只需紅黃綠燈順序亮就行了

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit RED_A=P0^0; //東西向燈

sbit YELLOW_A=P0^1;

sbit GREEN_A=P0^2;

sbit RED_B=P0^3; //南北向燈

sbit YELLOW_B=P0^4;

sbit GREEN_B=P0^5;

uchar Flash_Count=0,Operation_Type=1; //閃爍次數,操作類型變數

//延時

void DelayMS(uint x)

{

uchari;

while(x--)for(i=0;i<120;i++);

}

//交通燈切換

void Traffic_Light()

{

switch(Operation_Type)

{

case1: //東西向綠燈與南北向紅燈亮

RED_A=1;YELLOW_A=1;GREEN_A=0;

RED_B=0;YELLOW_B=1;GREEN_B=1;

DelayMS(2000);

Operation_Type=2;

break;

case2: //東西向黃燈閃爍,綠燈關閉

DelayMS(300);

YELLOW_A=~YELLOW_A;GREEN_A=1;

if(++Flash_Count!=10)return; //閃爍5次

Flash_Count=0;

Operation_Type=3;

break;

case3: //東西向紅燈,南北向綠燈亮

RED_A=0;YELLOW_A=1;GREEN_A=1;

RED_B=1;YELLOW_B=1;GREEN_B=0;

DelayMS(2000);

Operation_Type=4;

break;

case4: //南北向黃燈閃爍5次

DelayMS(300);

YELLOW_B=~YELLOW_B;GREEN_B=1;

if(++Flash_Count!=10)return;

Flash_Count=0;

Operation_Type=1;

}

}

//主程序

void main()

{

while(1)Traffic_Light();

}

『柒』 求大神解答,用51單片機匯編語言實現一個紅綠燈的程序,不是一個路口的,大概注釋下就好

;------------------------------------

;程序實現功能

;西南北路口直行與轉彎交替通行,數碼管顯示直行通行倒計時,紅綠黃燈顯示包括人行道在內的道路交通狀態。

;某一方向道路擁擠時,可以人工控制調節東西南北方向通行時間。

;緊急情況時,各路口交通燈顯示紅燈,數碼管保持數據不變。

;工作寄存器及存儲單元分配

;1.工作寄存器

;R2設置為定時器定時中斷次數,R6、R7用於延時程序中的寄存器

;2.片內存儲單元

;30H、31H作為兩組數碼管顯示數據存儲單元;32H、33H作為交通燈初始狀態存儲單元;40H、41H作為交通燈顯示數據存儲單元

;3.標志位

;00H:南北通行標志位 ; 01H:東西通行標志位;02H:緊急事件標志位

;-----------------------------------

SNF EQU 00H ;;;南北通行標志位

EWF EQU 01H ;;;東西通行標志位

URF EQU 02H ;;;緊急事件標志位

ORG 0000H

LJMP MAIN ;;;上電轉主程序

ORG 000BH ;;;定時中斷入口

LJMP DSZD

ORG 0003H ;;;緊急中斷入口

LJMP URZD

ORG 0030H

MAIN: LCALL INIT ;;;調用初始化子程序

LOOP: LCALL DIS ;;;循環執行顯示子程序

AJMP LOOP

;///////////初始化程序

INIT: SETB SNF

SETB EWF

SETB URF

MOV R2,#20 ;;;定時器中斷20次為1s

MOV TMOD,#01H ;;;初始化定時器

MOV TL0,#0B0H

MOV TH0,#3CH

SETB EA ;;;開定時中斷與緊急中斷

SETB ET0

SETB TR0

SETB EX0

SETB IT0 ;;;設置中斷程式控制方式

MOV DPTR,#TAB ;;;數值首地址放入DPTR中

MOV 40H,#40 ;;;東南西北通行時間設置

MOV 41H,#40

MOV 30H,#40 ;;;通行時間初始化

MOV 31H,#60

MOV P0,#4CH ;;;初始化時南北通行並把交通燈狀態分別放在32H和33H中

MOV 32H,#4CH

MOV P2,#15H

MOV 33H,#15H

RET

;////////////顯示子程序

DIS: MOV P3,#0DFH ;;;選中南北方向的十位數碼管

MOV A,30H ;;;把顯示數據送人數碼管顯示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A ;;;

LCALL D1MS

MOV P3,#0EFH ;;;選中南北方向的個位數碼管

MOV A,B ;;;送入數碼管顯示

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#7FH ;;;選中第東西方向的十位數碼管

MOV A,31H ;;;送入數碼管顯示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#0BFH ;;;選中第東西方向的個位數碼管

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

SETB P3.0

SETB P3.1

JNB P3.0,DIS_S ;;;查詢是否第一個按鍵按下

JNB P3.1,DIS_E ;;;查詢是否第二個按鍵按下

AJMP DIS_R ;;;沒有鍵按下則返回

DIS_S:LCALL D5MS ;;;按鍵去抖

JNB P3.0,DIS_SN

AJMP DIS_R

DIS_SN:MOV 40H,#50 ;;;對通行時間從新分配,南北通行時間加長

MOV 41H,#30

AJMP DIS_R

DIS_E:LCALL D5MS ;;;按鍵去抖

JNB P3.1,DIS_EW

AJMP DIS_R

DIS_EW:MOV 40H,#30 ;;;東西通行時間加長

MOV 41H,#50

DIS_R:RET

;///////定時中斷處理程序

DS_C: LJMP DS_R ;;;接力跳轉

DSZD: PUSH ACC ;;;保護現場

PUSH PSW

CLR TR0 ;;;關定時器及中斷標志位並重新賦值

CLR TF0

MOV TL0,#0B0H

MOV TH0,#3CH

DJNZ R2,DS_C ;;;判斷1m時間是否到達

MOV R2,#20 ;;;到達重新賦值

DEC 30H ;;;南北方向通行時間減一

MOV A,30H ;;;把減一後的時間送入顯示存儲單元

;;;;;;;南北通行到達最後4秒時黃燈閃爍

DS_10:CJNE A,#4,DS_11 ;;;如果通行時間剩餘4秒

JNB SNF,DS_11 ;;;判斷是否是南北通行

MOV P0,#8AH

MOV 32H, #8AH ;;;把交通燈狀態存入存儲單元(後面類似)

DS_11:CJNE A,#3,DS_12 ;;;不是剩餘3秒,返回

JNB SNF,DS_12 ;;;不是南北通行時間,返回

MOV P0,#88H

MOV 32H, #88H

DS_12:CJNE A,#2,DS_13

JNB SNF,DS_13

MOV P0,#8AH

MOV 32H, #8AH

DS_13:CJNE A,#1,DS_14

JNB SNF,DS_14

MOV P0,#88H

MOV 32H, #88H

;------------------------

DS_14:JNZ DS_NE ;;;通行時間沒有結束轉向改變東西方向的數碼管

CPL SNF ;;;如果通行時間結束則對標志位取反

JNB SNF,DS_1 ;;;判斷是否南北通行

MOV 30H,40H ;;;是,點亮相應的交通燈

MOV P0,#4CH

MOV 32H,#4CH ;;;存儲交通燈狀態

MOV P2,#15H

MOV 33H, #15H ;;;存儲交通燈狀態

DS_NE:DEC 31H ;;;東西方向通行時間減一

MOV A,31H ;;;把通行剩餘時間送入顯示存儲單元

;;;;;;;;東西方向通行時間剩餘4秒鍾黃燈閃爍(程序注釋與南北方向類似 略)

DS_20:CJNE A,#4,DS_21

JB EWF,DS_21

MOV P0,#51H

MOV 32H, #51H

DS_21:CJNE A,#3,DS_22

JB EWF,DS_22

MOV P0,#41H

MOV 32H, #41H

DS_22:CJNE A,#2,DS_23

JB EWF,DS_23

MOV P0,#51H

MOV 32H, #51H

DS_23:CJNE A,#1,DS_24

JB EWF,DS_24

MOV P0,#41H

MOV 32H, #41H

;-----------------------------

DS_24:JNZ DS_R ;;;東西方向時間沒有結束,返回

CPL EWF ;;;對通行狀態取反

JNB EWF,DS_2 ;;;東西方向通行時間到來,跳轉

MOV 31H,#80 ;;;東西方向通行結束,重新顯示時間

MOV P0,#89H ;;;點亮相應的交通燈

MOV 32H, #89H

MOV P2,#29H

MOV 33H, #29H

AJMP DS_R

DS_1: MOV 30H,#80 ;;;南北通行時間結束,重新對顯示存儲單元賦值

MOV P0,#89H ;;;執行轉彎狀態1

MOV 32H, #89H

MOV P2,#26H

MOV 33H, #26H

AJMP DS_NE

DS_2: MOV 31H,41H ;;;東西方向開始通行,賦值予顯示存儲單元

MOV P0,#61H ;;;點亮相應的交通燈

MOV 32H, #61H

MOV P2,#15H

MOV 33H, #15H

DS_R: SETB TR0

POP PSW ;;;恢復現場

POP ACC

RETI

;/////////////緊急中斷處理程序

URZD: PUSH ACC ;;;保護現場

PUSH PSW

CLR IE0 ;;;清除中斷標志位

CLR TR0 ;;;關定時器

CPL URF ;;;緊急事件標志位

JB URF,UR_CON ;;;緊急結束;跳轉

MOV P0,#49H ;;;各路口燈全顯示紅燈亮

MOV P2,#15H

AJMP UR_R

UR_CON:SETB TR0 ;;;恢復正常交通

MOV A,32H

MOV P0,A

MOV A,33H

MOV P2,A

UR_R: POP PSW ;;;恢復現場

POP ACC

RETI

;////////////查表指令0,1,2,3,4,5,6,7,8,9

TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH

DB 7DH, 07H, 7FH, 6FH

;//////////延時5ms與1ms

D5MS: MOV R7,#5

D1MS: MOV R7,#10

MOV R6,#50

L1: DJNZ R6,$

DJNZ R7,L1

RET

閱讀全文

與單片機紅綠燈匯編編程相關的資料

熱點內容
程序員看不懂怎麼辦 瀏覽:271
linux操作系統題 瀏覽:765
單片機無符號數加法 瀏覽:227
應用隱藏加密怎麼關閉 瀏覽:269
汽車空調的壓縮機電線有什麼用 瀏覽:429
電腦加密圖片如何取消加密 瀏覽:340
慧凈電子51單片機視頻 瀏覽:343
javamap賦值 瀏覽:165
什麼app可以玩掌機游戲 瀏覽:46
java簡單聊天室 瀏覽:462
通用汽車編程軟體 瀏覽:432
一級抗震框架梁箍筋加密區規定是多少 瀏覽:974
教你如何把安卓手機變成蘋果 瀏覽:11
app編譯分類 瀏覽:323
怎麼用伺服器的資源包 瀏覽:199
oa軟體手機登陸伺服器地址 瀏覽:289
androidrtp打包 瀏覽:723
信息被加密碼了怎麼辦 瀏覽:420
彈出光碟命令 瀏覽:517
kdj公式源碼分享 瀏覽:355