8051 程式碼 解說 急急急 20萬火急

我做的是風速計

我實在不太了解程式的完整意思

大概是

紅外線感測計數器 ,計算出轉速 , 顯示在七段顯示器

以下的註解有錯可以幫我更正!!

感謝了

#include <REG51.H>

#include <INTRINS.H>

#define uchar unsigned char

sbit IRR=P1^0;

sbit LED1=P2^0;

sbit LED2=P2^1;

sbit LED3=P2^2;

uchar n=1;

unsigned int tt=0;

void delayms(unsigned int time)

{

unsigned int n; ----------

while(time>0) ----------

{ ---------這一大塊的意思是甚麼??

n=60; ----------

while(n>0) n--; ----------

time--; ----------

}

}

void main()

{

delayms(100);

TMOD=0X01; //設定計時器控制模式

TH0=(65536-50000)/256; //設定計時器0高位元組中斷值

TL0=(65536-50000)%256; //設定計時器0低位元組中斷值

EA=1; //啟動CPU中斷

ET0=1; //啟動定時器中斷

TR0=1; //啟動計時中斷

while(1) //主程式迴圈

{

if(IRR==0) //若有紅外線訊號時

{

while(IRR==0); //等訊號結束

tt++; //轉速值+1

}

}

}

void timer0_int(void) interrupt 1 //計時中斷副程式

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

if(n<20)

{

n++; //加到20等於1秒

}

else

{

n=1;

if(tt>20) //判斷轉速值tt>20的時候

{

P0=0x05; //七段顯示5

LED3=0;

LED2=0; //LED全亮

LED1=0;

}

else

{

if(tt<=20,tt>15) //判斷轉速值20>= tt >15的時候

{

P0=0x04; //七段顯示4

LED3=1;

LED2=0; //LED亮黃燈和綠燈

LED1=0;

}

else

{

if(tt<=15,tt>10) //判斷轉速值15>= tt >10的時候

{

P0=0x03; //七段顯示3

LED3=0;

LED2=1; //LED紅燈亮

LED1=1;

}

else

{

if(tt<=10,tt>5) //判斷轉速值10>= tt >5的時候

{

P0=0x02; //七段顯示2

LED3=1;

LED2=0; //LED黃燈亮

LED1=1;

}

else

{

if(tt<=5,tt>0) //判斷轉速值5>= tt >0的時候

{

P0=0x01; //七段顯示1

LED3=1;

LED2=1; //LED綠燈亮

LED1=0;

}

else//判斷轉速值tt<0的時候

{

P0=0x00; //七段顯示0

LED3=1;

LED2=1; //LED全滅

LED1=1;

}

}

}

}

}

tt=0;//轉速值歸0

}

}

已更新項目:

有辦法盡可能地將上半部都加上註解嗎?

跪求 1/19要考試了..

1 個解答

評分
  • 最佳解答

    tt++; //}

    }

    }

    void timer0_int(void) interrupt

    {

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    if(n<20)

    {

    n++; //

還有問題?馬上發問,尋求解答。