红绿灯汇编程序
㈠ 求大神解答,用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
㈡ 如何用C语言汇编红绿灯的程序
用random生成一个随机数,或者是用户自己输入一个数字,用switch语句来响应,当是1时,红灯亮,当是2时,绿灯亮等。
㈢ 十字路口红绿灯控制用汇编设计程序
redlightzhu bit p1.0 yellowlightzhu bit p1.1 greenlightzhu bit p1.2 redlight bit p1.3 yellowlight bit p1.4 greenlight bit p1.5 shiw equ 78h gew equ 79h xh1 equ 30h xh2 equ 31h org 0000h jmp main org 0080h main: mov xh1,#255 mov xh2,#255 mov p1,#0ffh mov P0,#0ffh mov P2,#0ffh mov dptr,#tab green: mov xh1,#255 mov xh2,#255 mov r4,#30 mov r3,#35 loopa:clr greenlightzhu clr redlight loop1:lcall shuxian djnz xh1,loop1 setb greenlightzhu setb redlight loop2:lcall shuxian djnz xh2,loop2 dec r3 djnz r4,loopa greenlight: mov xh1,#255 mov xh2,#255 mov r4,#5 mov r3,#5 loopb:clr greenlightzhu clr yellowlightzhu clr redlight loop11:lcall shuxian djnz xh1,loop11 setb greenlightzhu setb redlight setb yellowlightzhu loop12:lcall shuxian djnz xh2,loop12 dec r3 djnz r4,loopb red1: mov xh1,#255 mov xh2,#255 mov r4,#20 mov r3,#15 loopc:clr greenlight clr redlightzhu loop21:call shuxian djnz xh1,loop21 setb greenlight setb redlightzhu loop22:call shuxian djnz xh2,loop22 dec r4 djnz r3,loopc red2: mov xh1,#255 mov xh2,#255 mov r4,#5 mov r3,#5 loopd:clr greenlight clr yellowlight clr redlightzhu loop31:call shuxian djnz xh1,loop31 setb greenlight setb redlightzhu setb yellowlight loop32:call shuxian djnz xh2,loop32 dec r3 djnz r4,loopd jmp green shuxian: mov a,r4 mov b,#10 div ab mov shiw,a mov gew,b movc a,@a+dptr mov shiw,a mov a,gew movc a,@a+dptr mov gew,a mov p0,#0ffh mov p2,#0ffh clr p2.3 mov p0,shiw call delay mov p0,#0ffh mov p2,#0ffh clr p2.4 mov p0,gew call delay mov a,r3 mov b,#10 div ab mov shiw,a mov gew,b movc a,@a+dptr mov shiw,a mov a,gew movc a,@a+dptr mov gew,a mov p0,#0ffH mov p2,0ffh clr p2.5 mov p0,shiw call delay mov p0,#0ffh mov p2,#0ffh clr p2.6 mov p0,gew call delay ret delay: mov r6,#30;延时1ms子程序 mov r7,#255 d1:djnz r6,d1 d2:djnz r7,d2 ret tab: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h end
希望采纳
㈣ 用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有秩序地通行(绿)-提醒注意(黄)-禁止通行(红)。 看看这个有用吗?
㈤ 单片机 用汇编语言编写交通红绿灯 只要求红灯30秒,黄灯5秒,绿灯30秒,黄灯5秒,其他不限
看你的程序上没有很大的问题,但是你的延时都使用相同子程序,延时时间相同。你可以把延时30秒的子程序和延时5秒的程序分开来写,分别调用。另单片机的引脚一般为吸入电流,建议你将单片机的引脚输出改为0有效就可以直接接负载,电源控制按键判断也作出相应的修改。
㈥ 单片机交通灯汇编语言程序,只需红黄绿灯顺序亮就行了
#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();
}

㈦ 单片机交通灯的汇编程序
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
你看看行不行 如果不行你自己再稍微改一下吧 反正大概就这些了
希望对你能有所帮助。
㈧ 如何用汇编编写红绿灯
GEWEI EQU 21H
SHIWEI EQU 23H
SCANLED EQU 25H
SCANMODE EQU 26H
RED EQU 28H
GREEN EQU 29H
YELLOW EQU 32H
NUMTIM EQU 33H
LED EQU 34H
ORG 000H
JMP START
ORG 0BH
JMP TIMER0
ORG 100H
START:MOV SP,#50H
MOV R0,#20H
MOV R5,#20
CLR0:MOV @R0,#00H
INC R0
DJNZ R5,CLR0
MOV TMOD,#01H
MOV TH0,#HIGH(65536-5000)
MOV TL0,#LOW(65536-5000)
SETB TR0
MOV IE,#10000010B
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#00H
MOV P3,#0FFH
MOV R3,#10
MOV R2,#3
MOV R1,#10
MOV R7,#200
MOV RED,#10
MOV YELLOW,#3
MOV GREEN,#10
MOV NUMTIM,#10
MOV LED,#0FFH
AJMP $
TIMER0:PUSH ACC
PUSH PSW
MOV TH0,#HIGH(65536-5000)
MOV TL0,#LOW(65536-5000)
DJNZ R7,RET0
MOV R7,#200
MOV A,SCANMODE
MOV B,#4
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN
JMP @A+DPTR
TAB_SCAN: AJMP RED_LIGHT
AJMP YEL_LIGHT
AJMP GRE_LIGHT
AJMP YEL_LIGHT
RET0: MOV A,NUMTIM
LCALL BIN_BCD
MOV SHIWEI,A
MOV GEWEI,B
INC SCANLED
MOV A,SCANLED
MOV B,#4
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN0
JMP @A+DPTR
TAB_SCAN0:AJMP SCAN_L1
AJMP SCAN_L2
SCAN_L1: MOV P2,#11111011B
MOV A,SHIWEI
JMP END_SCAN
SCAN_L2: MOV P2,#11111101B
MOV A,GEWEI
JMP END_SCAN
END_SCAN:MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,LED
MOV P1,A
POP PSW
POP ACC
RETI
RED_LIGHT:MOV LED,#11111100B
MOV NUMTIM,RED
DEC RED
MOV A,RED
CJNE A,#0FFH,RET0
MOV RED,#10
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
JMP RET0
YEL_LIGHT:MOV LED,#11110011B
MOV NUMTIM,YELLOW
DEC YELLOW
MOV A,YELLOW
CJNE A,#0FFH,RET0
MOV YELLOW,#3
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
JMP RET0
GRE_LIGHT:MOV LED,#11001111B
MOV NUMTIM,GREEN
DEC GREEN
MOV A,GREEN
CJNE A,#0FFH,RET1
MOV GREEN,#10
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
RET1:JMP RET0
BIN_BCD:MOV B,#10
DIV AB
RET
DELAY: MOV R5,#02
D1: MOV R6,#200
D2: MOV R7,#200
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
㈨ 十字路口红绿灯控制用汇编编写
采用多个时间继电器进行循环控制。
