疑問: 1.模塊一不是給定時器設(shè)定了初值了嘛?模塊三的重新設(shè)定是在中斷之后將溢出的數(shù)值重新設(shè)定???? 2.去除模塊三的定時器賦初值為什么下載程序后不能達(dá)到LED亮滅?? 3.主函數(shù)中的while(1)是讓程序停在那里一直掃描???  
#include"reg52.h" //此文件中定義了單片機(jī)的一些特殊功能寄存器
typedefunsigned int u16; //對數(shù)據(jù)類型進(jìn)行聲明定義 typedef unsignedchar u8;
sbitled=P2^0; //定義P20口是led
/******************************************************************************* 模塊一 * 函 數(shù) 名 : Timer0Init * 函數(shù)功能 :定時器0初始化 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/
voidTimer0Init() //外部中斷0的函數(shù) { TMOD|=0X01; //選擇為定時器0模式,工作方式1,僅用TR0打開啟動。 TH0=0XFC; //給定時器賦初值,定時1ms TL0=0X18; ET0=1;//打開定時器0中斷允許 EA=1; //打開總中斷 TR0=1;//打開定時器 //定時器0的運行開關(guān) }
/******************************************************************************* 模塊二:主函數(shù) * 函 數(shù) 名 : main * 函數(shù)功能 : 主函數(shù) * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/
void main() { Timer0Init(); //定時器0初始化 while(1); // 等待中斷發(fā)生???? }
/******************************************************************************* 模塊三:中斷服務(wù)函數(shù) * 函 數(shù) 名 : void Timer0()interrupt 1 * 函數(shù)功能 : 定時器0中斷函數(shù) * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/
void Timer0()interrupt 1 { staticu16 i; TH0=0XFC; //給定時器賦初值,定時1ms TL0=0X18; i++; if(i==1000) { i=0; led=~led; } }
|