匯編語言編程交通指示燈 供參考
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有秩序地通行(綠)-提醒注意(黃)-禁止通行(紅)。 看看這個有用嗎?