Red de conocimiento informático - Aprendizaje de código fuente - Programación de reloj digital

Programación de reloj digital

#includelt;reg51.hgt;

#includelt;absacc.hgt

#define uchar unsigned char

#define

wei

XBYTE[0x0FF20]

//

Will

82255PA

El puerto se asigna a la selección de bits del tubo digital, correspondiente a la conexión de hardware

#define duan XBYTE[0x0FF21] //

Cambiar

8255PB

El puerto se asigna a la selección de segmento del tubo digital,

correspondiente a la conexión de hardware

#define control XBYTE[ 0xff23]//

Defina la dirección del registro de control

8255

como

control

, y

Correspondiente a la conexión de hardware

#define int8 unsigned char

#define int16 unsigned int

sbit key1=P3^0;

p>

//

Establecer clave

sbit key2=P3^1

//

Agregar clave

p>

sbit key3=P3^2

//

Tecla menos

;

Sin firmar

char

dis[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90} //

Código de segmento a mostrar

uchar a=0, contador, hora=12, minuto=0, segundo=0

void; delay(uchar x)

//

Función de retardo, aproximadamente

x nosotros

{

mientras (x--);

}

visualización nula (int8 hora, int8 minuto, int8 segundo)

//

Dinámica escáner

{

int8 hs, hg, ms, mg, ss, sg

int8 contador

hs=hora/; 10; //

Definir la visualización de la hora El dígito de las decenas

hg=hour10; //

Definir la visualización de las unidades de la hora

ms=minuto/10; //

Definir el dígito de las decenas que se muestra en el minuto

mg=minuto10; //

Definir el dígito de las unidades que se muestra en el minuto

ss=segundo/10; //

Definir el dígito de las decenas de la segunda pantalla

sg=segundo10; >

Definir el dígito de las unidades de la segunda pantalla

duan=0xff; //

Apagar todas las pantallas de tubos digitales

duan=dis[sg ];

wei=0xfe;

for(contador= 0; contador; 100; contador

duan=0xff;

Cierre todas las pantallas de tubos digitales para evitar

Interferencia de los datos anteriores

duan=dis[ss]; //

Código de segmento de diez dígitos para enviar segundos

wei=0xfd; /p> p>

Abra la segunda selección de diez dígitos y muestre los segundos

for(counter=0; counterlt; 100; counter

//

);

El retraso es de unos 100us

Deje que el tubo digital tenga tiempo suficiente