Red de conocimientos turísticos - Información de alquiler - Problema simple en lenguaje C para que una microcomputadora de un solo chip implemente una calculadora de suma de un solo dígito

Problema simple en lenguaje C para que una microcomputadora de un solo chip implemente una calculadora de suma de un solo dígito

Tu problema debería deberse a un procesamiento imperfecto del teclado. Intente modificarlo un poco.

#include lt;reg52.hgt;

#define uchar unsigned char

#define unidad unsigned int

#define OPdata P0 //Puerto de datos de decenas

#define OPdata1 P1//Puerto de datos de unidades

sbit se0=P3^6 //Selección de decenas

sbit se1=P3; ^7; //Selección del dígito de las unidades

sbit Q=P2^6;

sbit W=P2^5;

sbit E=P2 ^4;

uchar cis; //Número de pulsaciones del teclado

uchar jia1; //Suplemento 1

uchar jia2; //Suplemento 2

uchar z; //Número de transferencia

uchar shi; //Diez dígitos

uchar ge; //Un solo dígito

uchar s;

uchar j; //Resultado de decodificación

uchar sum; //Resultado de adición

uchar keytemp;

void Judge(uchar m ) //Decodificación de tubo de imagen digital

{

interruptor (m)

{

caso 0: s=0x3F;

caso 1: s=0x06;

caso 2: s=0x5B;

caso 3: s=0x4F; p>

caso 4: s=0x66;

caso 5: s=0x6D;

caso 6: s =0x7D;

caso 7: s=0x07;

caso 8: s=0x7F;

caso 9: s=0x6F ; > }

}

void Judge1(uchar h) //Decodificación de tubo de imagen digital de diez dígitos

{

interruptor (h )

{

caso 0: j=0x3F; descanso

caso 1: j=0x06; /p>

}

anular juezcis()

{

if (cis==1)

{

jia1=z;

ge=z;

shi=0;

}

si (cis ==2)

{

jia2=z;

ge=z

shi =0;

<; p> cis=0;

}

}

void jiafa(uchar m, uchar n) //adición

{

suma=m n;

if (sumgt;=10)

{

ge=sum -10; p>shi=1;

}

else

{

ge=suma

shi=0

}

}

void main()

{

cis=0

jia1=0

jia2=; 0;

shi=0;

ge=0;

s=0;

P2=0XFF;

se0=0; //Activa el dígito de las decenas

se1=0; //Activa el dígito de las unidades

OPdata=0x3f; //Dígito de las decenas

OPdata1=0x3f; //Dígito de las unidades

while (1)

{

Q =0;

keytemp=P2;

cambiar (keytemp)

{

caso 0xbb: z=3; (P2== 0xbb);

caso 0xbd: z=6; mientras(P2==0xbd);

caso 0xbe: z=9; ; while(P2 ==0xbe);

case 0xb7: //Signo igual

jiafa (jia1, jia2); p> }

Q=1;

W=0;

keytemp=P2

cambiar (keytemp)

{

caso 0xde: z=8; mientras(P2==0xde);

caso 0xdd: z=5; ==0xdd); romper;

caso 0xd7: z=0; (P2== 0xd7);

}

W=1;

E=0;

cambiar (keytemp)

{

case 0xee: z=7 while(P2==0xee);

caso 0xed: z=4; mientras(P2==0xed);

caso 0xeb: z=1; mientras(P2==0xeb); >

}

juezcis();

juez(ge);

OPdata1=s;

juez1(shi) ;

OPdata=j

E=1

}

}