急求单片机数码管显示交通灯倒计时的汇编程序
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
你看看行不行 如果不行你自己再稍微改一下吧 反正大概就这些了
设计倒计时交通灯硬件电路,包含两位数码管,键盘以及东西,南北路口红绿黄灯各三只
#include #include #define uchar unsigned char#define uint unsigned intuchar h;uint r=0;uint s;uchar code dis[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff,};/*0*//*1*//*2*//*3*//*4*//*5*//*6*//*7*//*8*//*9*//*NULL*/void delay(uint c){uint i,j;for(i=0;i<c;i++)for(j=0;j<100;j++);}void t0(void) interrupt 0 using 1 //interrupt 1{delay(2);if(INT0==0){r++;if(r==2){r=0;}r%=2;if(r==0){P0=0xeb;P1=0x00;P2=0xff;}while(1){if(INT0==0|INT1==0|T0==0){delay(2);if(INT0==0|INT1==0|T0==0)break;}};}}void t1(void) interrupt 2 using 1 //interrupt 2{delay(2);if(INT1==0){r++;if(r==2){r=0;}r%=2;if(r==0){P0=0xdd;P1=0x00;P2=0xff;}while(1){if(INT1==0|INT0==0|T0==0){delay(2);if(INT1==0|INT0==0|T0==0)break;}};}}void t2(void) interrupt 1 using 1 //interrupt 3{TH0=0xff;TL0=0xff;delay(2);if(T0==0){P0=0xdb;P1=0x00;P2=0xff;}while(1){if(INT0==0|INT1==0){ delay(2);if(INT0==0|INT1==0)break;}};}void main(void){TMOD=0x06;TH0=0xff;TL0=0xff;TR0=1;EA=1;EX0=1;EX1=1;ET0=1;while(1){P0=0xeb;for(h=28;h>0;h--){for(s=248;s>0;s--){P1=0x00;P2=0xff;P1=0x01;P2=dis[h/10];delay(1);P1=0x00;P2=0xff;P1=0x02;P2=dis[h%10];delay(1);P1=0x00;P2=0xff;P1=0x04;P2=dis[(h+2)/10];delay(1);P1=0x00;P2=0xff;P1=0x08;P2=dis[(h+2)%10];delay(1);}}delay(248);P0=0xf3;for(h=3;h>0;h--){delay(392);P0=0xf3;delay(1);P1=0x00;P2=0xff;P1=0xaa;P2=dis[(h-1)%10];delay(600);P0=0xfb;}delay(248);P0=0xdd;for(h=38;h>0;h--){for(s=248;s>0;s--){P1=0x00;P2=0xff;P1=0x01;P2=dis[(h+2)/10];delay(1);P1=0x00;P2=0xff;P1=0x02;P2=dis[(h+2)%10];delay(1);P1=0x00;P2=0xff;P1=0x04;P2=dis[h/10];delay(1);P1=0x00;P2=0xff;P1=0x08;P2=dis[h%10];delay(1);}}delay(248); P0=0xde;for(h=3;h>0;h--){delay(392);P0=0xde;delay(1);P1=0x00;P2=0xff;P1=0xaa;P2=dis[(h-1)%10];delay(600);P0=0xdf;}delay(248);}}