Operaciones de multiplicación y división del código fuente
#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);
} p>
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,
{ p >
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>
}
}