Red de conocimiento informático - Aprendizaje de código fuente - Programación MCU del contestador automático

Programación MCU del contestador automático

//Este es el contestador automático de seis vías. Si son ocho canales, el bit correspondiente se mostrará en lugar de no mostrarse. ox00 es la función de limpieza de pantalla, como se muestra a continuación.

# include ltreg 51.h gt;

# include ltintrins.h gt

#Definición de entero sin signo uint

#Definición carácter sin firmar uchar

tabla de códigos uchar[16] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x 00 };///Gong

/************************************ *************************************

*Nombre: Delay_1ms()

*Función: subrutina de retardo, el tiempo de retardo es 1 ms * x.

*Entrada: X (número de retrasos por milisegundo)

*Salida: Ninguna

************** ************************************************** * *******/

retraso nulo _ 1 milisegundo (uinti)//retraso de 1 milisegundo

{

uchar x, j;

p>

for(j = 0;j lti;j)

for(x = 0;x lt=148;x);

}

/********************************************* **** **********************

*Nombre: Key Scan()

*Función: Leer claves. La siguiente subrutina se procesa de acuerdo con el método básico de procesamiento del teclado matricial.

*Entrada: Ninguna

*Salida: Valor clave

******************** ************************************************* ***** */

escaneo de clave uchar (no válido)

{

uchar i, j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf 7 }; //Hacer que cada fila del teclado matricial sea baja.

for(j = 0; j lt4; j )

{

p 1 = Búfer[j];

temp = 0x 10;

for(I = 0;ilt4;i)

{

If (! (p 1 amp; Temp)) //Sentencia A Cierto comportamiento del puerto P1 es de 4 bits alto y bajo.

{

return(I j * 4); //Código de clave de retorno

}

temp lt lt= 1; /p>

}

}

}

/****************** * **************************************************

*Nombre: Main()

*Función: Función principal

*Entrada: Ninguna

*Salida: Ninguna

************************************************ *************************/

Gerente general no válido (no válido)

{

uchar Key _ Value//Leer valor de clave

int k = 0;

while(1)

{

p 1 = 0xf 0;

if(P1!= 0xf0) //Determina si el botón está presionado.

{

delay _ 1 ms(20); //Elimina el jitter al presionar la tecla

if(P1!= 0xf0) //Determina si el Se pulsa la tecla por segunda vez.

{

delay _ 1 ms(20); //Elimina el jitter al presionar la tecla

if(P1!= 0xf0) //Determina si el Se pulsa la tecla por tercera vez.

{

k;

clave _ Valor = clave scan();

}

}

}

Si (k==1)

{

P0 = tabla [valor clave]

P2 = 0x 07;

}

if(Key_Value==15)

{

k = 0;

P0 = tabla [valor clave];

P2 = 0x

}

}

}