sbit?wave=P1^0;
void?SetupTimer0()
{
TMOD?&=?0XF0;?//僅保留T1信息
TMOD?|=?0X02;?//設置T0:?定時功能,方式2,自動重載8位定時器/計數器
TH0?=?256-250;//定時每0.25ms中斷壹次
TL0?=?256-250;
TR0?=?1;?//開啟定時器
ET0?=?1;?//定時器0中斷打開
}
?
data?unsigned?char?us250;
data?unsigned?int?ms;
bit?WAVE;//用以記住當前wave的狀態
void?Timer0_ISR()?interrupt?1?//定時中斷服務程序,為按鍵消抖服務
{
if?(++us250<4)?return;?
us250=0;?++ms;
if?(ms<10)?return;
//每10ms波形變化壹次,20ms完成壹個波形,所以波形是50Hz的
ms=0;
WAVE=~WAVE;?wave=WAVE;?//方波輸出
}
void?main()
{?
us250=ms=0;
wave=WAVE=0;
SetupTimer0();EA?=?1;?//全局中斷打開
while(1);//在中斷函數中實現方波輸出
}