ちょうおんぱしけん

7424 ワード

#include <reg51.h>

#include <intrins.h>



typedef  unsigned char     uchar;

typedef  unsigned int     uint;





sbit LS138A = P2^2;

sbit LS138B = P2^3;

sbit LS138C = P2^4;



unsigned int lednum[8]={0};

unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; 







uchar sta=0;

uchar high=0;

uchar low=0;



int dist=0;



 void delay(unsigned int i)

{

    char j;

    for(i; i > 0; i--)

        for(j = 200; j > 0; j--);

}





void InitUART(void)

{

    TMOD = 0x20;

    SCON = 0x50;



    TH1 = 0xFD;

    TL1 = TH1;



    EA = 1;

    ES = 1;

    TR1 = 1;

}



void SendOneByte(unsigned char c)

{

    SBUF = c;

    while(!TI);

    TI = 0;

}





void main(void)

{



   uint i ;



    InitUART();



    while(1)

    {

     SendOneByte(0x55);

    

     for( i=0; i<8; i++)

     {         

        P0=Disp_Tab[lednum[i]];

        LS138A = i &1;

        LS138B = (i >> 1) &1;

        LS138C = (i >> 2) &1;        

        delay(100);

      }



    

    dist=256*high+low;



    lednum[0]=dist%100000000/100000;

    lednum[1]=dist%10000000/100000;

    lednum[2]=dist%1000000/100000;

    lednum[3]=dist%100000/10000;

    lednum[4]=dist%10000/1000;

    lednum[5]=dist%1000/100;

    lednum[6]=dist%100/10;

    lednum[7]=dist%10;

    



    }

    



}

  

void UARTInterrupt(void) interrupt 4

{

    if(RI)

    {

        RI = 0;

        sta++;

    if(sta==1)    high=SBUF;

    else if(sta==2)    

    {

        low=SBUF;

        sta=0;

    }

    else

        TI = 0;

}



}