Red de conocimientos turísticos - Información de alquiler - Programación de MCU: después de encender el sistema, las luces verdes este y oeste se encienden durante 12 segundos, luego la luz amarilla se enciende durante 3 segundos, la luz roja se enciende durante 15 segundos y la luz verde se enciende en ciclo

Programación de MCU: después de encender el sistema, las luces verdes este y oeste se encienden durante 12 segundos, luego la luz amarilla se enciende durante 3 segundos, la luz roja se enciende durante 15 segundos y la luz verde se enciende en ciclo

#includelt;reg51.hgt;

#define uint unsigned int

#define uchar unsigned char

#define red (~ 0x01)

#define amarillo (~0x02)

#define verde (~0x04)

#define izquierda (~0x08)

#define nbred (~0x10)

#define nbamarillo (~0x20)

#define nbgreen (~0x40)

#define nbleft (~0x80)

uint num2;

uchar dx_js, nb_js;

uchar zt ?

uchar código dxcz[]={0, 12 ,3,15,15-12,};

código uchar nbcz[]={0,15,15-12,12, 3,};

código uchar tab1[ ]={0, 12, 3, 12, 3,};

código uchar tab2[]={0,

0xFFamp;greenamp;nbred,

0xFFamp;amarilloamp;nbred,

0xFFamp;redamp;nbverde,

0xFFamp;redamp;nbamarillo,

};

sbit D0=P2^0;

bit D1=P2^1;

bit D2=P2^2;

bit D3=P2^3;

sbit D2=P2^2;

sbit D3=P2^3;

p>

uchar ds[4];

uchar code tab[]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, };

//Pantalla de tubo digital

void smxs(){

static uchar a;

if(agt;3)a=0;

P2amp;=0xf0;

P0=tab[ds[a]];

switch(a){

caso 0: D0=1;

caso 1: D1; =1;

caso 2: D2=1;

caso 3: D3= 1; p> a ;

}

void init() //Función de inicialización

{ ? TMOD=0x01; 65536-1000)/256;

TL0=(65536-1000)256;

EA=1;

ET0=1;

}

void main()//función principal

{

init()

zt=1

núm2=0;

<

p> dx_js=dxcz[zt];

nb_js=nbcz[zt];

TR0=1

mientras(1){

P1=tab2[zt];

ds[0]=dx_js/10;

ds[1]=dx_js10;

ds[2 ]=nb_js/10;

ds[3]=nb_js10;

}

}

void timer0() interrupción 1/ /Temporizador, implementar cuenta atrás

{

TH0=(65536-1000)/256

TL0=(65536-1000)256;

if( num2==1000){//1s

num2=0;

dx_js--; //Cuenta regresiva

nb_js--;

if(dx_js==0||nb_js==0){//A 0

zt; //El estado aumenta en 1

if(zt ==5){

zt=1;

}

dx_js=dxcz[zt]; //Reiniciar tiempo

nb_js =nbcz[zt];

}

}

smxs();

}

De repente si Si descubre que el software de simulación se bloquea, no tomará una captura de pantalla del diagrama en ejecución. En su lugar, tome un diagrama esquemático e intente nuevamente.