資源簡介
代碼無錯誤,注釋詳細,用keil將代碼編譯后生成hex文件,添加至單片機中即可仿真運行。

代碼片段和文件信息
#include“reg51.h“
#include“LCM1602_b.c“
sbit?P32=P3^2;
unsigned?char?fen[1]=“/“;
unsigned?char?io;
unsigned??int?s0=0s1=0t0t1;
void?timer0(void)?interrupt?1????//定時器0服務程序
{
???s0++;
}
void?timer1(void)interrupt?3????//定時器1服務程序
{
???s1++;
}
void?main(void)
{
??unsigned?char??word[]=“dd1/“;
??lcd1602_init();
??TMOD=0xa2;???????//定時器模式,1為2方式,但GATE為1
??EA=1;
??P32=0;???????????//p32int0口先給低電平
??ET0=1;
??TH0=0x9c;
??TL0=0x9c;
??ET1=1;
??TH1=0x9c;
??TL1=0x9c;
??display_5numbers(0t0);
??display_chars(5fen1);
??display_5numbers(6t1);
??display_chars(11word4);
??display_a_number(15io);
??while(1)
??{
?????while(P32==0);???????//這兩次是為了去除半沿
?????while(P32==1);
?????TR0=1;???????????????//開始計時
?????TR1=1;
?????while(P32==0);
?????TR0=0;???????????????//T0停
?????while(P32==1);
?????TR1=0;???????????????//T1停
?????if(s0>50&&s1>50)
??????{
???????t0=s0;
???????t1=s1;
???????}
????else
??????{
????????t0=s0*100+(TL0-0x9c);
????????t1=s1*100+(TL1-0x9c);
???????}
??????io=(t1/t0);
??????display_5numbers(0t0);??????//?顯示
??????display_chars(5fen1);
??????display_5numbers(6t1);
??????display_chars(11word4);
??????display_a_number(15io);
??????delay(300);
??????t0=0t1=0s0=0s1=0;???????//清值
??????TL0=0x9c;
??????TL0=0x9c;
???}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3964??2008-07-31?13:51??測占空比\LCM1602_b.C
?????文件???????1396??2008-08-01?14:29??測占空比\占空比測量.c
?????目錄??????????0??2009-06-27?22:30??測占空比
-----------?---------??----------?-----??----
?????????????????5360????????????????????3
評論
共有 條評論