导航:首页 > 编程语言 > 单片机红绿灯汇编程序

单片机红绿灯汇编程序

发布时间:2023-01-11 02:24:32

① 51单片机 交通灯汇编程

汇编语言编程交通指示灯 供参考
http://..com/question/511850150.html

② c51单片机c语言交通灯的程序

Proteus仿真原理图:

程序如下:

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar data buf[4];

uchar data sec_dx=20;//东西数默认

uchar data sec_nb=30;//南北默认值

uchar data set_timedx=20;

uchar data set_timenb=30;

int n;

uchar data b;//定时器中断次数

sbit k1=P1^6;//定义5组开关

sbit k2=P1^7;

sbit k3=P2^7;

sbit k4=P3^0;

sbit k5=P3^1;

sbit Yellow_nb=P2^5; //南北黄灯标志

sbit Yellow_dx=P2^2; //东西黄灯标志

sbit Green_nb=P2^4;

sbit Green_dx=P2^1;

sbit Buzz=P3^7;

bit Buzzer_Indicate;

bit time=0;//灯状态循环标志

bit set=1;//调时方向切换键标志

uchar code table[11]={ //共阴极字型码

0x3f, //--0

0x06, //--1

0x5b, //--2

0x4f, //--3

0x66, //--4

0x6d, //--5

0x7d, //--6

0x07, //--7

0x7f, //--8

0x6f, //--9

0x00 //--NULL

};

//函数的声明部分

void delay(int ms);//延时子程序

void key();//按键扫描子程序

void key_to1();//键处理子程序

void key_to2();

void key_to3();

void display();//显示子程序

void logo(); //开机LOGO

void Buzzer();

//主程序

void main()

{

TMOD=0X01;

TH0=0XD8;

TL0=0XF0;

EA=1;

ET0=1;

TR0=1;

EX0=1;

EX1=1;

logo();

P2=0Xc3;// 开始默认状态,东西绿灯,南北黄灯

sec_nb=sec_dx+5;

while(1)

{

key(); //调用按键扫描程序

display(); //调用显示程序

Buzzer();

}

}

//函数的定义部分

void key() //按键扫描子程序

{

if(k1!=1)

{

delay(10);

if(k1!=1)

{

while(k1!=1)

{

key_to1();

for(n=0;n<40;n++)

{ display();}

}

}

}

if(k2!=1)

{

delay(10);

if(k2!=1)

{

while(k2!=1)

{

key_to2();

for(n=0;n<40;n++)

{ display();}

}

}

}

if(k3!=1)

{

TR0=1; //启动定时器

Buzzer_Indicate=0;

sec_nb=set_timenb; //从中断回复,仍显示设置过的数值

sec_dx=set_timedx;

if(time==0)

{ P2=0X99;sec_nb=sec_dx+5; }

else { P2=0xC3;sec_dx=sec_nb+5; }

}

if(k4!=1)

{

delay(5);

if(k4!=1)

{

while(k4!=1);

set=!set;

}

}

if(k5!=1)

{

delay(5);

if(k5!=1)

{

while(k5!=1)

key_to3();

}

}

}

void display() //显示子程序

{

buf[1]=sec_dx/10; //第1位 东西秒十位

buf[2]=sec_dx%10; //第2位 东西秒个位

buf[3]=sec_nb/10; //第3位 南北秒十位

buf[0]=sec_nb%10; //第4位 南北秒个位

P1=0xff; // 初始灯为灭的

P0=0x00;

P1=0xfe; //片选LCD1

P0=table[buf[1]];

delay(1);

P1=0xff;

P0=0x00;

P1=0xfd; //片选LCD2

P0=table[buf[2]];

delay(1);

P1=0xff;

P0=0x00;

P1=0Xfb; //片选LCD3

P0=table[buf[3]];

delay(1);

P1=0xff;

P0=0x00;

P1=0Xf7;

P0=table[buf[0]]; //片选LCD4

delay(1);

}

void time0(void) interrupt 1 using 1 //定时中断子程序

{

b++;

if(b==19) // 定时器中断次数

{ b=0;

sec_dx--;

sec_nb--;

if(sec_nb<=5&&time==0) //东西黄灯闪

{ Green_dx=0;Yellow_dx=!Yellow_dx;}

if(sec_dx<=5&&time==1) //南北黄灯闪

{ Green_nb=0;Yellow_nb=!Yellow_nb;}

if(sec_dx==0&&sec_nb==5)

sec_dx=5;

if(sec_nb==0&&sec_dx==5)

sec_nb=5;

if(time==0&&sec_nb==0)

{ P2=0x99;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;}

if(time==1&&sec_dx==0)

{P2=0Xc3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;}

}

}

void key_to1() //键盘处理子程序之+

{

TR0=0; //关定时器

if(set==0)

set_timenb++; //南北加1S

else

set_timedx++; //东西加1S

if(set_timenb==100)

set_timenb=1;

if( set_timedx==100)

set_timedx=1; //加到100置1

sec_nb=set_timenb ; //设置的数值赋给东西南北

sec_dx=set_timedx;

}

void key_to2() //键盘处理子程序之-

{

TR0=0; //关定时器

if(set==0)

set_timenb--; //南北减1S

else

set_timedx--; //东西减1S

if(set_timenb==0)

set_timenb=99;

if( set_timedx==0 )

set_timedx=99; //减到1重置99

sec_nb=set_timenb ; //设置的数值赋给东西南北

sec_dx=set_timedx;

}

void key_to3() //键盘处理之紧急车通行

{

TR0=0;

P2=0Xc9;

sec_dx=00;

sec_nb=00;

Buzzer_Indicate=1;

}

void int0(void) interrupt 0 using 1 //只允许东西通行

{

TR0=0;

P2=0Xc3;

Buzzer_Indicate=0;

sec_dx=00;

sec_nb=00;

}

void int1(void) interrupt 2 using 1 //只允许南北通行

{

TR0=0;

P2=0X99;

Buzzer_Indicate=0;

sec_nb=00;

sec_dx=00;

}

void logo()//开机的Logo "- - - -"

{ for(n=0;n<50;n++)

{

P0=0x40;

P1=0xfe;

delay(1);

P1=0xfd;

delay(1);

P1=0Xfb;

delay(1);

P1=0Xf7;

delay(1);

P1 = 0xff;

}

}

void Buzzer()

{

if(Buzzer_Indicate==1)

Buzz=!Buzz;

else Buzz=0;

}

void delay(int ms) //延时子程序

{

uint j,k;

for(j=0;j<ms;j++)

for(k=0;k<124;k++);

}


③ 单片机交通灯汇编语言程序,只需红黄绿灯顺序亮就行了

#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();

}

④ 89C51单片机红绿灯程序是什么

注p0口为东西红灯x0dx0a; p1口为东西黄灯x0dx0a;p2口为东西绿灯x0dx0a;p3南北红灯x0dx0a;p4南北黄灯x0dx0a;p5南北绿灯x0dx0ax0dx0a;绿灯停留3s;黄灯闪烁5次,每次0.2s,红的停留4s x0dx0aORG 0000Hx0dx0a LJMP MAINx0dx0a ORG 0030Hx0dx0aMAIN:MOV DPTR,#B1x0dx0a MOV R2,#4x0dx0a MOV A,#0Hx0dx0aF3:MOV R1,Ax0dx0a MOVC A,@A+DPTRx0dx0a JNB ACC.4,SS1 ;判断东西方向黄灯是否亮,若亮则转移到黄灯闪烁程序x0dx0a JNB ACC.1,SS2 ;判断南北方向黄灯是否亮,若亮则转移到黄灯闪烁程序x0dx0a MOV P1,Ax0dx0a LCALL DY1Sx0dx0aSS:MOV A,R1x0dx0a INC Ax0dx0a DJNZ R2,F3x0dx0a SJMP MAINx0dx0ax0dx0aSS1:MOV R0,#10x0dx0aXH1:CPL ACC.4x0dx0a MOV P1,Ax0dx0a LCALL DYSx0dx0a DJNZ R0,XH1x0dx0a SJMP SSx0dx0aSS2:MOV R0,#10x0dx0aXH2:CPL ACC.1x0dx0a MOV P1,Ax0dx0a LCALL DYSx0dx0a DJNZ R0,XH2x0dx0a SJMP SSx0dx0ax0dx0aDY1S:MOV R5,#30x0dx0aDLP0:MOV R6,#100x0dx0aDLP1:MOV R7,#250 ;F=6MHZx0dx0aDLP2:DJNZ R7,DLP2 ;2X250X2uS=1msx0dx0a DJNZ R6,DLP1 ;1x100=0.1Sx0dx0a DJNZ R5,DLP0 ;0.1X30=3sx0dx0a RETx0dx0ax0dx0aDYS:MOV R6,#200x0dx0aDLP3:MOV R7,#250 ;F=6MHZx0dx0aDLP4:DJNZ R7,DLP4 ;2X250X1uS=500us=1msx0dx0a DJNZ R6,DLP3 ;1x200=0.2Sx0dx0a RETx0dx0aB1: DB 11011110B,11101110B,11110011B,11110101Bx0dx0a END

⑤ 单片机交通灯的汇编程序

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
你看看行不行 如果不行你自己再稍微改一下吧 反正大概就这些了
希望对你能有所帮助。

⑥ 基于80c51单片机的交通灯课程设计汇编语言编程

简单
程序流程如下:
开始:绿灯
东西方向南北方向的红灯
延迟30秒
东西方向绿灯“
南北方向的红灯已关闭
东西方向的,黄色的光的
南北方向的,黄色的光
BR
/>
5秒延时的东西方向的黄色指示灯熄灭南北方向
黄色指示灯熄灭
的方向,南北方向20秒的延迟一个南北方向绿灯东西方向红灯
绿灯熄灭红灯熄灭东西方向
一些黄色的光
的黄色光南北方向
5秒的延迟将启动...
阿尔法
Alpha

⑦ 单片机 用汇编语言编写交通红绿灯 只要求红灯30秒,黄灯5秒,绿灯30秒,黄灯5秒,其他不限

看你的程序上没有很大的问题,但是你的延时都使用相同子程序,延时时间相同。你可以把延时30秒的子程序和延时5秒的程序分开来写,分别调用。另单片机的引脚一般为吸入电流,建议你将单片机的引脚输出改为0有效就可以直接接负载,电源控制按键判断也作出相应的修改。

⑧ 求大神解答,用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

⑨ 求单片机交通灯汇编语言

ORG 0000H
LJMP MAIN
ORG 001BH
LJMP T1
MAIN: MOV 30H,#00H
MOV 31H,#06H
MOV 32H,#05H
MOV 33H,#05H
MOV R0,#100
SETB F0
CLR 20H
CLR P1.3
CLR P1.1
MOV TMOD,#10H
MOV TL1,#0F0H
MOV TH1,#0D8H
SETB ET1
SETB EA
SETB TR1
LOOP: LCALL XS
SJMP LOOP
XS: MOV A,30H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6
LCALL YS
SETB P2.6
MOV A,31H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.7
LCALL YS
SETB P2.7
MOV A,32H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.4
LCALL YS
SETB P2.4
MOV A,33H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
LCALL YS
SETB P2.5
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
T1:
MOV TL1,#0F0H
MOV TH1,#0D8H
DJNZ R0,NEXT6
MOV R0,#100 JNB F0, DDDD
DEC 30H
MOV A,30H
CJNE A,#0FFH,NEXT1
MOV 30H,#9
DEC 31H
MOV A,31H
CJNE A,#0FFH,NEXT1
MOV 30H,#05H
MOV 31H,#05H
NEXT1: JB 20H,NEXT2
DEC 32H
MOV A,32H
CJNE A,#0FFH,NEXT6
MOV 32H,#9
DEC 33H
MOV A,33H
CJNE A,#0FFH,NEXT6
MOV 32H,#05H
MOV 33H,#00H
SETB P1.1
CLR P1.2
SETB 20H NEXT2: DEC 32H
MOV A,32H
CJNE A,#0FFH,NEXT6
MOV 30H,#05H
MOV 31H,#05H
MOV 32H,#00H
MOV 33H,#06H
CLR 20H
SETB P1.2
SETB P1.3
CLR P1.4
CLR P1.0
CLR F0
NEXT6: LJMP NEXT
DDDD: DEC 32H
MOV A,32H
CJNE A,#0FFH,NEXT1A
MOV 32H,#9
DEC 33H
MOV A,33H
CJNE A,#0FFH,NEXT1A
MOV 32H,#05H
MOV 33H,#05H
NEXT1A: JB 20H,NEXT2A
DEC 30H
MOV A,30H
CJNE A,#0FFH,NEXT
MOV 30H,#9
DEC 31H
MOV A,31H
CJNE A,#0FFH,NEXT
MOV 30H,#05H
MOV 31H,#00H
SETB P1.4
CLR P1.5
SETB 20H NEXT2A: DEC 30H
MOV A,30H
CJNE A,#0FFH,NEXT
MOV 32H,#05H
MOV 33H,#05H
MOV 30H,#00H
MOV 31H,#06H
CLR 20H
SETB P1.5
SETB P1.0

CLR P1.3
CLR P1.1
SETB F0

NEXT:RETI
YS:
MOV R7,#1
LP1:MOV R6,#125
LP2:MOV R5,#10
LP3:NOP
NOP
DJNZ R5,LP3
DJNZ R6,LP2
DJNZ R7,LP1
RET
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有秩序地通行(绿)-提醒注意(黄)-禁止通行(红)。 看看这个有用吗?

阅读全文

与单片机红绿灯汇编程序相关的资料

热点内容
福州看病预约用什么小程序app 浏览:238
php保留两位小数不四舍五入 浏览:292
黑马程序员路径大全 浏览:1000
saas平台PHP 浏览:333
云服务器科学计算配置怎么选 浏览:649
jar解压命令 浏览:609
php正则问号 浏览:299
无线已加密不可上网是怎么了 浏览:464
什么app可以免费做手机 浏览:375
异性下载什么app 浏览:680
51单片机程序单步视频 浏览:241
家庭宽带如何连接服务器 浏览:119
汽车高压泵解压 浏览:772
上门正骨用什么app 浏览:761
安卓为什么免费使用 浏览:399
加密货币都有哪些平台 浏览:629
python和matlab难度 浏览:392
python爬虫很难学么 浏览:575
小米解压积木可以组成什么呢 浏览:818
为什么滴滴出行app还能用 浏览:568