#include <stdio.h> #include <reg51.h> sbit LED=P3^4; unsigned int count=0; void main(void)//主函數 { TMOD=0x02;//定時器0工作方式2,也叫低8位初值自動重裝方式,適用於作較精確的脈沖信號發生器,定時器工作方式2與定時器其它幾種工作方式有所不同,定時器工作方式2將THx和TLx分開處理,初值存放在高8位THx中,計時或計數時只處理低8位TLx,則計時或計數最大值為2^8=256,即通過低8位TLx計時或計數達到256就溢出。當計時或計數溢出后,低8位TLx不需要重新賦初值,而是會自動將高8位THx中的初值賦給低8位TLx作為重新計時或計數初值。 TH0=0x06;//0x06為十進制數6,作為定時器0工作方式2計時初始值,當計時溢出后,低8位TLx不需要重新賦初值,而是會自動將高8位THx中的初值賦給低8位TLx作為重新計時初值。 TL0=0x06;//0x06為十進制數6,也就是從6開始計時。 EA=1;//開啟定時器總中斷 ET0=1;//開啟定時器0中斷開關 TR0=1;//啟動定時器0 while(1);//固定循環 } void time0(void) interrupt 1//定時器0工作方式2中斷函數 { //以下省掉的兩行代碼就是表明了定時器工作方式2在計時或計數溢出后,低8位TLx不需要重新賦初值,而是會自動將高8位THx中的初值賦給低8位TLx作為重新計時或計數初值。
// TH0=0x06;
// TL0=0x06;
count++;
if(count==2000)//中斷次數變量為2000次,表示0.5s時間到,也表示高電平或低電平各占用周期0.5s,即一個脈沖(高低電平)周期為1s,還可以表示高低電平(即一個脈沖)頻率(計算工式:F=1/T,其中F單位為赫茲,即Hz,而T單位為秒,即s。)為1/1s=1Hz。
{
LED=~LED;//LED點亮或熄滅
count=0;
}
}