/*采用中断方式实现 定时器0方式1的编程 fosc=12MHz, 在P1.0引脚上输出周期为1000ms的方波*/ #include sbit P1_0=P1^0; unsigned int time; void timer0(void) interrupt 1 using 1{ //T/C0中断服务程序入口 if (time==500) { P1_0=!P1_0; //P1.0取反 time=0; } else { time++; } TH0=(65536-1000)/256; //计数初值重装载 TL0=(65536-1000)%256; } void main(void) { time=0; TMOD=0x01; //T/C0工作在定时器方式1 P1_0=0; TH0=(65536-1000)/256; //预置计数初值 TL0=(65536-1000)%256; EA=1; //CPU开中断 ET0=1; //T/C0开中断 TR0=1; //启动T/C0开始定时 do { } while (1); }