- /*-----------------------------------------------
- 名稱:定時器0
- 內容:通過定時讓LED燈閃爍
- 設時鐘頻率為6MHz,試編寫利用T0產生的1秒定時程序
- ------------------------------------------------*/
- #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
- sbit LED=P1^2; //定義LED端口
- /*------------------------------------------------
- 定時器初始化子程序
- ------------------------------------------------*/
- void Init_Timer0(void) //50毫秒@6.000MHz
- {
- TMOD &= 0xF0; //設置定時器模式
- TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
- TL0 = 0x58; //設置定時初值 50毫秒@6.000MHz
- TH0 = 0x9E; //設置定時初值
- TF0 = 0; //清除TF0標志
- EA=1; //總中斷打開
- ET0=1; //定時器中斷打開
- TR0=1; //定時器開關打開
- }
- /*------------------------------------------------
- 主程序
- ------------------------------------------------*/
- main()
- {
- Init_Timer0();
- while(1);
- }
- /*------------------------------------------------
- 定時器中斷子程序
- ------------------------------------------------*/
- void Timer0_isr(void) interrupt 1 using 1
- {
- unsigned char Count=0;
- TH0=0x58; //重新賦值 50毫秒@6.000MHz
- TL0=0x9E;
- Count++;
- if(Count>20) //1秒定時
- {
- LED=~LED; //指示燈反相,可以看到閃爍 1秒
- Count=0;
- }
- }
復制代碼 |