Red de conocimiento informático - Conocimiento sistemático - Operaciones de multiplicación y división del código fuente

Operaciones de multiplicación y división del código fuente

# include ltreg 51 . h gt;

#Definir carácter sin firmar uchar

Cabeza de dragón, cola; //Definir variables globales

Retraso no válido (entero) / * * *Programa de retraso* *//

{int i,j;

for(I = 0;iltn;i)

{ for (j = 0; j lt50; j )

;}

}

Suma larga (x larga, y larga)/* * *Programa de suma* */ /

{Dragón z;

z = x y;

Retorno (z);

}

Long sub (long x, long y)/* * *Programa de resta* *//

{龙z;

if(x gt;=y)

z = x-y;

Otros

{ z = y-x;

z = z 10e 6;}/* * *El número negativo más significativo Bit es 1 * * *//

Retorno (z);

}

Long Mul (Long X, Long Y)/* * *Multiplicador * * //

{Dragón z;

z = x * y;

Retorno (z);

}

Long div (long x, long y)/* * *Programa de división* *//

{Long z;

z = x/y;

p>

Return(z);

}

Uchar kbscan (void)/* * *Escáner de teclado* * *//

{

uchar sccode

p 1 = 0xf 0;

if((p 1 amp; 0xf0)!=0xf0) //Enviar las 0 líneas del código de escaneo , con entrada de columnas y filas.

{ delay(222); //Retraso en el rebote

if((p 1 amp; 0xf0)!=0xf0)

{ sccode = 0xfe/ / Valor inicial de escaneo progresivo

while((sc code amp; 0x10)!=0)

{ p 1 = sc code //Salir código de escaneo de fila

if((p 1 amp; 0xf0)!=0xf0)

{

return(p 1);}//Si se detecta una pulsación de tecla, devuelve el valor de la clave.

Otros

sc code =(sc code lt; lt1)| 0x 01; //El código de escaneo de línea se desplaza un bit hacia la izquierda.

}

}

}

return(0); //No hay ningún botón, el valor de retorno es 0.

}

Visualización nula (void)/* * *Programa de visualización* * *//

{ int I

uchar; code rel[]={0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0x Fe}; // Control de puerta de tubo digital

uchar code led[]={0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b}; //definir 0-9

número de datos uchar [8];

num[0]= Primero/10000000 ;//Diez millones de dígitos

num[1]= Primero/100000 10; //Millones de dígitos

num[2]= Primero/100000 10 //Cien mil

num[3]= Primero/10000 10; //Diez mil dígitos

num[4]= Primero/1000 10; //Miles

num [ 5]= Primero/100 10; //Cientos

num[6]= Primero/10 10; //Diez personas

num[7]=Primeros 10 ;//bit

for(I = 7;i gt=0;i-)

{ P3 = rel[I]; //salida de selección de bits

P2 = led[num[I]]; //Salida de datos

Retraso (2); //¿Es necesario este retraso?

}

}

Void main (void)/* * *Programa principal* * *//

{ int k, n;

uchar f, g, clave, gn 1;

n = 0;

f = 0; 0; //La luz indicadora se apaga al principio.

Y (1) //Consulta continuamente si hay una acción clave.

{ key = kbs can(); //Obtener el valor clave devuelto

If (key!=0)

{

Switch(key) //Decodificar, convertir el valor de retorno de la clave correspondiente en el valor numérico correspondiente.

{

Caso 0x ee: k = 0; //0

caso 0x de: k = 1 //1; p>

Caso 0x be: k = 2; //2

Caso 0x7e: k = 3; //3

Caso 0x ed: k = 4; romper; //4

Caso 0x DD: k = 5; //5

Caso 0x BD: k = 6; >

Caso 0x7d: k = 7; rompiendo; //7

Caso 0xeb: k = 8; //8

Caso 0x db: k = 9; romper; //9

Caso 0x bb: k = 10; primero = 0; fin = 0; romper

Caso 0x7b: k = 11 ;break; //Es igual

Caso 0xe 7: k = 12; f = 1; //Agrega

Caso 0xd 7: k = 13; ;//signo menos

Caso 0xb 7: k = 14; f = 3; //Multiplicación

Caso 0x 77: k = 15; //División

}

P0 = 1;

Retraso (280); //La luz indicadora muestra el tiempo cuando hay una clave.

P0 = 0; //Clave significa apagado.

if(k lt; 10) //Cuando es una tecla numérica (0-9)

{

If (f!=0) / /Cuando es una tecla numérica, si se presiona una tecla de función.

{

n; //Registra el número de veces que se presiona la tecla numérica.

gn 1 = 0; //Borre la bandera y opere cuando sea una tecla de función nuevamente.

g = f; //Guardar indicador de operación

If(n==1) //Cuando la entrada es un número de dígitos, asigna el valor directamente.

first = k;

else if(n gt; 1) //Cuando la entrada es un número de varios dígitos, conviértalo a un número de varios dígitos en el sistema 10. .

Primero = Primero * 10 k;

}

En caso contrario //Si no se presiona la tecla de función,

{

n;

gn 1 = 1; //Definir bandera para detener la entrada de datos la próxima vez que sea una tecla de función.

Si (n==1)

primero = k;

si no (n gt; 1)

Primero = Primero * 10 k;

Fin = Primero//Guarda el primer número.

}

}

else if(k gt; when 11) //Es una tecla de función (-*/)

{

If(gn1==1) //Cuando la tecla numérica anterior va seguida de una tecla de función,

{

n = 0; /Borrar la bandera de conteo

}

De lo contrario //Si se ingresa nuevamente la tecla de función, se realizará la operación.

{ n = 0; //Borrar indicador de recuento

Switch(g)

{caso 1: Primero=add(End, First);

Caso 2: Primero=sub(Fin, Primero);

Caso 3: Primero=mul(Fin, Primero); Cuatro: Primero=div(End, First); Break;}

}

End = First//Guardar este resultado.

}

Else if(k==11) //Símbolo igual (=)

{ n = 0

gn; 1 = 1; //Ingrese como tecla de función para continuar con la operación.

Interruptor (g)

{caso 1: Primero=add(Fin, Primero);

Caso 2: Primero=sub(Fin, Primero); );

Caso 3: Primero=mul(Fin, Primero);

Caso 4: Primero=div(Fin, Primero);

}

Fin = Primero//Guarda el resultado final de la operación.

f = 0; //Borrar indicador de operación

}

}

Display() //Llamar al programa de visualización

} p>

}

}